СКАЧАТЬ Источник 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 теперь работает корректно.
Обнаружена ошибка: в случае большой установки смонтированные хранилища могут иметь похожие имена.
Пример:
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
Ошибки и Решения
Показать
Ошибка Value should be a JSON object.
Sudo нет, работает от root
Пути у меня такие, разрешения на всякий случай дал
Прописал в конфиге агента
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
Пример для С Сервера заббикса получил такой ответ на команду
root@Zabbix:~#
Ответ
{ "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
Права на директорию
drwxrwsrwx 2 root root 4096 Nov 15 09:46 externalscripts
Нашел свою ошибку в конфиге агента на пути скрипта оказался пробел
externalscripts/ proxmox-vms-backup-status
убрав его все заработало
externalscripts/proxmox-vms-backup-status
Спасибо!
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
Пример для С Сервера заббикса получил такой ответ на команду
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#
Код: Выделить всё
ls -l
-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
Нашел свою ошибку в конфиге агента на пути скрипта оказался пробел
externalscripts/ proxmox-vms-backup-status
убрав его все заработало
externalscripts/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
Код: Выделить всё
#!/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
{$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 Да
Прототипы триггеров
Внимание/Предупреждение У 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 Да
Мои Преобразования