Bareos и Zabbix, мониторинг.

Так как постоянно заглядывать в консоль Bareos-a или на вэб-интерфейс не всегда удается, а контролировать выполнение заданий резервного копирования надо, то решено было всё это дело возложить на могучие плечи Zabbixa.

Проведя поисковые мероприятия на предмет готовых решений, все они были отвергнуты, ввиду либо сложностей (работа с БД) либо требований (скрипты на питоне с кучей зависимостей), был написан скрипт на bash использующий для добычи информации родную bconsole (консоль управления bareos).

/usr/local/bin/bareos_get_jobs.sh

#!/bin/bash
# Usage: bareos_get_jobs.sh "job_type"
# where "job_type" must be:
# custom type:
# all - list of all jobs
# notrun - active but don't running jobs
# standart type:
# T - Completed successfully
# E - Terminated with errors
# e - Non-fatal error
# f - Fatal error
# W - Terminated with warnings 
# and match more (see bareos docs)

# Дату используем вчерашнюю
DATE=`date --date="yesterday" +%Y-%m-%d`
JOB_STATUS="${1}"
# получаем список job-ов
echo show jobs | bconsole | grep -i "^ name =" | cut -d '"' -f 2 | while read LINE; do
    if [[ $JOB_STATUS = "all" ]]
    then
        echo "$LINE"
     else
    # в зависимости от опций соответственно реагируем
    if [[ $JOB_STATUS != "notrun" ]]; then
        # так как один job может выполняться несколько раз в день то и вывод будет содержать несколько строк
        # поэтому добавлен ещё один цикл
        echo list job=\"$LINE\" | bconsole -c /etc/bareos/bconsole.conf | grep $DATE | cut -d"|" -f10 | grep "${JOB_STATUS}" | while read RES; do
           if [[ -n $RES ]]
           then
               echo "Date:${DATE} Job:\"${LINE}\" status:${RES}"
           fi
       done
     else
        RES=`echo list job=\"$LINE\" | bconsole -c /etc/bareos/bconsole.conf | grep $DATE`
        if [[ -z $RES ]]
        then
              echo "Date:${DATE} Job:\"${LINE}\" status:${RES}"
        fi
      fi
    fi
done

Скрипт на вход принимает параметры ввиде стандартного статуса задания (job status), список берём из документации (http://doc.bareos.org/master/html/bareos-manual-main-reference.html#x1-574000G.1.1), или пары моих: «all» — для вывода списка всех задач (job) или «notrun» — для вывода не выполненных задач.

Далее в цикле на каждую задачу получаем журнал выполненных работ с датами и статусами и обрабатываем этот вывод.

На выходе скрипта будет список задач соответствующего статуса.

Для того, чтобы забикс мог это дело мониторить, устаналиваем zabbix-agent и создаём файлик /etc/zabbix/zabbix_agentd.d/userparameter_bareos.conf следующего содержания:

UserParameter=bareos.director.run[*],netstat -nlt | grep $1 | wc -l
UserParameter=bareos.file_daemon.run[*],netstat -nlt | grep $1 | wc -l
UserParameter=bareos.storage_daemon.run[*],netstat -nlt | grep $1 | wc -l
UserParameter=bareos.jobs[*],/usr/local/bin/bareos_get_jobs.sh $1 | wc -l

И перезапускаем службу забикс-агента.

Попутно операциям с bconsole, как уже мог заметить пытливый читатель, netstat-ом отслеживаются запущены ли соответсвующие демоны.
Для корректной работы на сервере с bareos должны присутствовать: netstat и требуемые стандартные утилиты (date, grep, cut, …). На этом низкоуровневая настройка завершена. Далее берём вот этот шаблон и экспортируем его в zabbix.
Затем настраиваем соответствующий узел и видим подобную картинку:

Все файлы можно взять одним архивом

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *