Proxmox VMs Backup Status / Proxmox Состояние Резервного Копирования Виртуальных Машин

Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Proxmox VMs Backup Status / Proxmox Состояние Резервного Копирования Виртуальных Машин

Сообщение Артём Мамзиков »

Шаблон Proxmox VMs Backup Status / Proxmox Состояние Резервного Копирования Виртуальных Машин

СКАЧАТЬ
zabbix-proxmox-vms-backup.zip
zabbix-proxmox-vms-backup.zip
(10.83 КБ) 23 скачивания
Источник share.zabbix proxmox-vms-backup-status-template или ya disk

Шаблон Proxmox Статус виртуальных машины резервного копирования.
Шаблон, который поможет проверить результат запланированной сборки в резервной копии в Proxmox.
На основании 2 сценариев:
открытие скрипта, который будет найти номер VM и проверить, если резервное копирование включено;
Скрипт мониторинга, который будет делать все другие сотрудники.

Монтаж:
Процедура резервного копирования
0. Установка на сервере необходимого Proxmox в веб - интерфейсе.
1. На необходимых файлов сервера копирования из "сценариев / scripts" папки в / и т.д. /etc/zabbix/scripts/
2. Заставьте их исполняемыми, chmod a+rx "имя скрипта"
3. Добавить к /etc/zabbix/zabbix_agentd.conf:
UserParameter=proxmox-vms-discovery,/usr/local/share/zabbix/externalscripts/proxmox-vms-discovery
UserParameter=proxmox-vms-backup-status[*],/usr/local/share/zabbix/externalscripts/proxmox-vms-backup-status $1 $2
4. Перезапустите Zabbix агент ,
5. Если не от root и используется sodo Добавить в /etc/sudoers::
zabbix ALL=(ALL) NOPASSWD: /usr/local/share/zabbix/externalscripts/proxmox-vms-discovery
zabbix ALL=(ALL) NOPASSWD: /usr/local/share/zabbix/externalscripts/proxmox-vms-backup-status
или

Код: Выделить всё

chmod 777 /usr/local/share/zabbix/externalscripts/proxmox-vms-discovery
chmod 777 /usr/local/share/zabbix/externalscripts/proxmox-vms-backup-status
chmod 777 /usr/local/share/zabbix/externalscripts
chmod 777 /usr/local/share/zabbix
chown zabbix.zabbix -R /usr/local/share/zabbix/externalscripts/
chown -R root:root /usr/local/share/zabbix/externalscripts/
пути к файлам
/etc/pve/vzdump.cron'
/etc/pve/storage.cfg'
/etc/pve/local/qemu-server

Проверка

Код: Выделить всё

cd /usr/local/share/zabbix/externalscripts/
chmod a+rx proxmox-vms-discovery
chmod a+rx proxmox-vms-backup-status
./proxmox-vms-discovery
Получаем конфиг Заббикс агента в моем случае
UnsafeUserParameters=1
UserParameter=proxmox-vms-discovery,/etc/zabbix/scripts/proxmox-vms-discovery
UserParameter=proxmox-vms-backup-status[*],/etc/zabbix/scripts/proxmox-vms-backup-status $1 $2

Копируем содержимое файлов в
nano /etc/zabbix/scripts/proxmox-vms-discovery
nano /etc/zabbix/scripts/proxmox-vms-backup-status
или копируем скрипты из inst_monitoring
Даем привелегии
chmod 777 /etc/zabbix/scripts/proxmox-vms-discovery
chmod 777 /etc/zabbix/scripts/proxmox-vms-backup-status

Проверить пути к файлам
/etc/pve/vzdump.cron'
/etc/pve/storage.cfg'
/etc/pve/local/qemu-server

service zabbix-agent start - стартуем агента

6. Импорт в Zabbix сервер Шаблона и применить к необходимым хосту
7. Изменить макросы {$BACKUP_PERIOD} значение в шаблоне , как вы желаете. По умолчанию - 7 дней

Отображение Значение , которое используется в шаблоне.
На Zabbix сервер:
Администрирование -> Общие -> Преобразование Значения
Имя: Proxmox VMs backup return codes
0 => Неверный номер виртуальной машины, или резервная копия для виртуальной машины не настроена.
1 => Резервная копия для ВМ не существует
2 => ВМ не имеет файла резервной копии
3 => Резервное копирование виртуальной машины старше N дней
4 => Резервное копирование ВМ завершено с ошибками. Пожалуйста, проверьте журналы.
7 => Резервное копирование виртуальной машины в порядке, ошибок не на

Наслаждайтесь!
Первый выпуск: skygge, Мониторинг Proxmox VE виртуальных машин резервного копирования с Zabbix
Изменен: MR_Andrew, 2018.
Особая благодарность: Max Dark, Marinero от cyberforum.ru
Изменения
Показать
09.10.2018
Обнаружена ошибка: в случае большой установки смонтированные хранилища могут иметь похожие имена.
Пример:
cat /etc/pve/storage.cfg

nfs: fs
...
path /mnt/pve/fs
...

nfs: fsmain
...
path /mnt/pve/fsmain
...

nfs: fssecondary
...
path /mnt/pve/fssecondary
...

В этом случае скрипт “proxmox-vms-backup-status” определяет все хранилища, подходящие по критерию, и выдает ошибку, поскольку путь к файлам резервных копий должен быть только один.
Решение. Строка
backupdirectory=`cat $storageconfig|grep -A 1 $backupstorage|grep path|rev|cut -d " " -f 1|rev`
изменен на:
backupdirectory=`cat $storageconfig|grep -w -A 1 $backupstorage|grep path|rev|cut -d " " -f 1|rev`
аргумент “-w” обеспечивает нам точный поиск, без похожих имен. На моей машине Proxmox теперь работает корректно.
Проверка

Код: Выделить всё

zabbix_get -s 192.168.XXX.XXX -p 10050 -k proxmox-vms-discovery
В ответе "{#BACKUP_STATUS}":"1"}, 1-включено, 0-выключено
Ошибки и Решения
Показать
Ошибка Value should be a JSON object.

Sudo нет, работает от root
Пути у меня такие, разрешения на всякий случай дал

Код: Выделить всё

chmod 777 /usr/local/share/zabbix/externalscripts/proxmox-vms-discovery
chmod 777 /usr/local/share/zabbix/externalscripts/proxmox-vms-backup-status
Прописал в конфиге агента
UserParameter=proxmox-vms-discovery,/usr/local/share/zabbix/externalscripts/proxmox-vms-discovery
UserParameter=proxmox-vms-backup-status[*],/usr/local/share/zabbix/externalscripts/ proxmox-vms-backup-status $1 $2
Агента перезапустил

Занес преобразование значений Proxmox VMs backup return codes
На преобразования в конце точка пробовал с ней и без нее изменений нет

Файлы по данному пути есть все правильно
backupconfig='/etc/pve/vzdump.cron'
storageconfig='/etc/pve/storage.cfg'

Запросите вывод через Zabbix server:
zabbix_get -s <ip хоста=""> -p 10050 -k proxmox-vms-discovery
и посмотрите что он Вам выдаст. Скорее всего увидите ошибку.
В файл sudoers разрешения добавить не забыли?

Я
В конфиге агента сделал от root allowroot=1

Пример для
ProxMox
ProxMox
С Сервера заббикса получил такой ответ на команду
root@Zabbix:~#

Код: Выделить всё

zabbix_get -s 192.168.XXX.XXX -p 10050 -k proxmox-vms-discovery
Ответ
{ "data": [ {"{#VM_NUMBER}":"115", "{#BACKUP_STATUS}":"0"},{"{#VM_NUMBER}":"112", "{#BACKUP_STATUS}":"0"},{"{#VM_NUMBER}":"100", "{#BACKUP_STATUS}":"1"},{"{#VM_NUMBER}":"101", "{#BACKUP_STATUS}":"0"},{"{#VM_NUMBER}":"102", "{#BACKUP_STATUS}":"1"},{"{#VM_NUMBER}":"111", "{#BACKUP_STATUS}":"0"},{"{#VM_NUMBER}":"103", "{#BACKUP_STATUS}":"1"},{"{#VM_NUMBER}":"104", "{#BACKUP_STATUS}":"0"},{"{#VM_NUMBER}":"106", "{#BACKUP_STATUS}":"0"},{"{#VM_NUMBER}":"107", "{#BACKUP_STATUS}":"0"},{"{#VM_NUMBER}":"110", "{#BACKUP_STATUS}":"0"},{"{#VM_NUMBER}":"108", "{#BACKUP_STATUS}":"0"},{"{#VM_NUMBER}":"109", "{#BACKUP_STATUS}":"0"},{"{#VM_NUMBER}":"105", "{#BACKUP_STATUS}":"1"} ]}

ошибка пропала правда не сразу элемент обновляется каждые 30 секунд пока а ошибка ушла спустя минут 20 Value should be a JSON object.

Теперь элементы пишут что значение не цифирное
Value "sh: 1: /usr/local/share/zabbix/externalscripts/: Permission denied" of type "string" is not suitable for value type "Numeric (unsigned)"

Временно задал значение приходят такие данные sh: 1: /usr/local/share/zabbix/externalscripts/: Permission denied

Еще что то с доступом
Права на скрипты
#/usr/local/share/zabbix/externalscripts# total 12
-rwxrwxrwx 1 root root 2568 Oct 9 23:38 proxmox-vms-backup-status
-rwxrwxrwx 1 root root 1359 Sep 6 01:00 proxmox-vms-discovery
Права на директорию

Код: Выделить всё

chmod 777 /usr/local/share/zabbix/externalscripts
drwxrwsrwx 2 root root 4096 Nov 15 09:46 externalscripts

Нашел свою ошибку в конфиге агента на пути скрипта оказался пробел
externalscripts/ proxmox-vms-backup-status
убрав его все заработало
externalscripts/proxmox-vms-backup-status
Спасибо!
Скрипт proxmox-vms-backup-status

Код: Выделить всё

#!/bin/bash

# Скрипт для проверки резервного копирования виртуальных машин ProxMox. Для использования в Zabbix. Скайгге@2016
# Изменено: MR_Andrew, 2018.
# Особая благодарность: Макс Дарк, Маринеро из cyberforum.ru

#Переменные

backupconfig='/etc/pve/vzdump.cron'
storageconfig='/etc/pve/storage.cfg'
configdir='/etc/pve/local/qemu-server'

# Проверьте каждую виртуальную машину на наличие существующих файлов резервных копий и проверьте, являются ли они более новыми, чем 7 дней назад
parameters=`cat $backupconfig |egrep "($1|\-\-all)"|head -1|sed 's/  */ /g'`

if [ "$parameters" = "" ];then
   #echo "Неверный номер виртуальной машины или не настроено резервное копирование для виртуальной машины $1."
   echo 0
else
    #считайте файл конфигурации резервной копии в массив и найдите параметр хранилища резервной копии
    IFS=' ' read -r -a array <<< "$parameters"
    for index in "${!array[@]}"
    do
       	if [ "${array[index]}" = "--storage" ]; then
       	   z=$((index+1))
           backupstorage=${array[$z]}
        fi
    done

# прочитайте физический путь к резервной копии из файла конфигурации хранилища для виртуальной машины $1
backupdirectory=`cat $storageconfig|grep -w -A 1 $backupstorage|grep path|rev|cut -d " " -f 1|rev`

if [ -d $backupdirectory/dump ]; then
        # проверьте, существуют ли резервные файлы в пути резервного копирования для виртуальной машины $1
        backup=`ls $backupdirectory/dump/|grep "$1" |grep -v -E "log|tmp|dat"|wc -l`
        if [ "$backup" = "0" ]; then
              #echo "VM $1 не имеет файла резервной копии."
              echo 2
        else
            # проверьте, является ли файл резервной копии более новым, чем за $2 дня (ов) для виртуальной машины за $1
            newbackup=`find $backupdirectory/dump/ -type f -name "*$1*" -not -name "*.log" -not -name "*.tmp" -not -name "*.dat" -mtime -$2 | sort -nr | head -1|wc -l`
                if [ "$newbackup" = "0" ]; then
                      #echo "Резервная копия виртуальной машины $1 старше $2 дней."
                      echo 3
                else
                        #проверьте последний файл журнала на наличие ошибок
                        backuplastlog=`ls $backupdirectory/dump/ | grep "$1" | grep log | tail -1`
                        backupresult=`cat $backupdirectory/dump/$backuplastlog | grep -i -E "ERROR|FAILED"`
                                if [ "$backupresult" = "" ];then
                                        #echo "VM $1 резервное копирование в порядке, ошибок не обнаружено."
                                        echo 7
                                else
                                        #echo "VM $1 резервное копирование завершено с ошибками. Пожалуйста, проверьте журналы."
                                        echo 4
                                fi
                fi
        fi
else
    #echo "Каталог резервной копии для виртуальной машины $1 не существует."
    echo 1
fi
fi
Скрипт proxmox-vms-discovery

Код: Выделить всё

#!/bin/bash

# Скрипт для проверки резервной копии виртуальных машин ProxMox. Для использования в Zabbix. Скайгге@2016
# Изменено: MR_Andrew, 2018.
# Особая благодарность: Макс Дарк, Маринеро из cyberforum.ru

#Переменные

backupconfig='/etc/pve/vzdump.cron'
storageconfig='/etc/pve/storage.cfg'
configdir='/etc/pve/local/qemu-server'

ARR=()

# Виртуальные машины
virtualmachines=`find $configdir -type f -name "*.conf" |cut -d "/" -f 6|cut -d "." -f 1`

# Конфигурация резервного копирования для виртуальных машин
backupallmachines=`grep '\-\-all' $backupconfig|wc -l`

# Проверьте каждую виртуальную машину на наличие настроенного резервного копирования
if [ "$backupallmachines" = "0" ]; then
for i in $virtualmachines
do
    backupenabled=1

    checkbackup=`grep $i $backupconfig |sed 's/  */ /g'|cut -d "-" -f 1|cut -d " " -f 8-|tr -d "\n"`
    if [ "$checkbackup" = "" ];then
        # echo "VM $i не настроен для резервного копирования."
        backupenabled=0
    fi

    checkbackupenabled=`grep $i $backupconfig | grep "#vzdump" | sed 's/  */ /g'|cut -d "-" -f 1|cut -d " " -f 8-|tr -d "\n"`
    if ! [ "$checkbackupenabled" = "" ];then
        # echo "Резервное копирование для виртуальной машины $i настроено, но отключено."
        backupenabled=0
    fi

ARR+=("{\"{#VM_NUMBER}\":\""$i"\", \"{#BACKUP_STATUS}\":\""$backupenabled"\"}")

done
SAVE_IFS="$IFS"
### разделитель
IFS=","
### bash присоединиться к массиву
JOINED_LIST="${ARR[*]}"
IFS="$SAVE_IFS"

echo '{ "data": [' $JOINED_LIST ']}'
fi
Шаблон Proxmox Состояние Резервного Копирования Виртуальных Машин
Шаблон Proxmox Состояние Резервного Копирования Виртуальных Машин
Макросы
{$BACKUP_PERIOD} => 8

Группы элементов данных
Proxmox

Правила обнаружения
Proxmox VMs discovery Прототипы элементов данных 1 Прототипы триггеров 6 Прототипы графиков Прототипы узлов сети proxmox-vms-discovery 1d Zabbix агент Активировано

Фильтры {#BACKUP_STATUS} => 1

Прототипы элементов данных
VM {#VM_NUMBER} Состояние резервной копии proxmox-vms-backup-status[{#VM_NUMBER},{$BACKUP_PERIOD}] 1d 7d 90d Zabbix агент Proxmox Да
Шаблон Proxmox Состояние Резервного Копирования Виртуальных Машин Прототипы
Шаблон Proxmox Состояние Резервного Копирования Виртуальных Машин Прототипы
Прототипы триггеров
Внимание/Предупреждение У VM {#VM_NUMBER} нет файла резервной копии {Proxmox VMs Backup Status:proxmox-vms-backup-status[{#VM_NUMBER},{$BACKUP_PERIOD}].last()}=2 Да

Внимание/Предупреждение Нет информации о состоянии резервного копирования для VM {#VM_NUMBER}. Пожалуйста, проверьте статус ошибок item {Proxmox VMs Backup Status:proxmox-vms-backup-status[{#VM_NUMBER},{$BACKUP_PERIOD}].nodata(2d)}=1 Да

Внимание/Предупреждение Недопустимый номер виртуальной машины или резервная копия для виртуальной машины {#VM_NUMBER} не настроена {Proxmox VMs Backup Status:proxmox-vms-backup-status[{#VM_NUMBER},{$BACKUP_PERIOD}].last()}=0 Да

Внимание/Предупреждение Каталог резервного копирования для VM {#VM_NUMBER} не существует {Proxmox VMs Backup Status:proxmox-vms-backup-status[{#VM_NUMBER},{$BACKUP_PERIOD}].last()}=1 Да

Средняя VM {#VM_NUMBER} copy error Logs {Proxmox VMs Backup Status:proxmox-vms-backup-status[{#VM_NUMBER},{$BACKUP_PERIOD}].last()}=4 Да

Внимание/Предупреждение VM {#VM_NUMBER} Bolee {$BACKUP_PERIOD} day {Proxmox VMs Backup Status:proxmox-vms-backup-status[{#VM_NUMBER},{$BACKUP_PERIOD}].last()}=3 Да


Мои Преобразования
количество слов: 1160

Вернуться в «Proxmox»