мета-данные страницы
  •  

Это старая версия документа!


Отчеты в Bareos

В данной системе бэкапирования к сожалению нет удобного визуального контроля за тем какие файлы и в какой момент были записаны на ленточное хранилище.
И я решил сам сделать такой функционал т.к. смотреть через bconsole не очень удобно из-за привязки записанных файлов к заданию job
Я изучил структуру базы данных и зависимости таблиц между собой, что бы понять какие данные мне нужно включить в отчетность и что бы ничего лишнего не попало туда.

Кратко описываю что мне нужно извлечь из базы

Есть таблицы job, file, media
в таблице job есть столбец name, из него мы считываем только содержимое с названием BackupOnTape,
так же есть столбец jobid и он идентичен в таблице file
Теперь в таблице file сопоставив jobid мы должны вытащить из столбца name который в таблице file название
В таблице media есть столбец poolid он понадобится для понимания какой используется пул
Но мне из таблицы media более важно знать что в столбце volumename и выводить эту информацию Еще в таблице media есть вот такой столбец mediatype, мне важно что бы в финальном отчете он тоже фигурировал, но при условии что в mediatype будет исключительно содержимое с названием LTO
И из таблицы job нужны два столбца starttime и endtime, которые отвечают за начало и конец записи на ленту.

Таким образом резюмируем
Мне нужно сформировать отчет в котором будет:

  • volumename,poolid,mediatype из таблицы media
  • name из таблицы file
  • name,jobid,starttime,endtime из таблицы job

У меня получился вот такой SQL запрос

download

SELECT 
    m.volumename AS volumename,
    f.name AS file_name,
    j.name AS job_name,
    j.jobid AS jobid,
    m.mediatype AS mediatype,
    j.starttime AS starttime,
    j.endtime AS endtime,
    m.poolid AS poolid
FROM 
    public.job j
JOIN 
    public.file f ON j.jobid = f.jobid
JOIN 
    public.media m ON m.poolid IS NOT NULL
WHERE 
    j.name = 'BackupOnTape' AND
    m.mediatype = 'LTO' AND
    m.poolid = 2;
Для проверки можно сохранить в файл вывод запроса

download

COPY (
    SELECT 
        m.volumename AS volumename,
        f.name AS file_name,
        j.name AS job_name,
        j.jobid AS jobid,
        m.mediatype AS mediatype,
        j.starttime AS starttime,
        j.endtime AS endtime,
        m.poolid AS poolid
    FROM 
        public.job j
    JOIN 
        public.file f ON j.jobid = f.jobid
    JOIN 
        public.media m ON m.poolid IS NOT NULL
    WHERE 
        j.name = 'BackupOnTape' AND
        m.mediatype = 'LTO' AND
        m.poolid = 2
) TO '/ВАШ ПУТЬ/report.txt' WITH (FORMAT csv, HEADER);

Но это все сырые данные и так мы только убедились что все работает, теперь нужно создать веб интерфейс и прикрутить кнопку в основной веб интерфейс bareos

Создание веб интерфейса

Создаем такую структуру /var/www/html/ └── reports_bareos

  ├── reports_bareos.py
  ├── static
  │   └── style.css
  └── templates
      ├── index.html
      └── report.html

Обсуждение

Ваш комментарий: