Недавно сервис zabbix-server перестал работать из-за фатальной ошибки при этом не сообщив никому ничего, только оставив запись в логе. О том, что с сервером какие-то проблемы узнал только по надписи "Zabbix сервер не запущен: отображаемая информация может быть не актуальной" в веб-интерфейсе. Возникла идея мониторить сам сервис, что можно сделать с помощью еще одного zabbix-сервера, но делать это не хочется, а хочется настроить мониторинг по-минимуму. Например, на другом сервере по планировщику проверять какой-либо файл... Идеи кое-какие есть, но вдруг эта задача как-то просто решается и не придется все придумывать заново.
Ad Widget
Collapse
Мониторинг работы самого Zabbix-сервера со стороны
Collapse
X
-
Дергай через zabbix_get с другого узла данные для эд отражающие работу z сервера. Не получил - значит ос умерла. Получил неверные - значит процесс сервера невпорядке. -
Я таким образом только zabbix-агента проверю. То что собирается самим сервером (например, пинги) через zabbix_get недоступно.
Пока придумал обновлять какой-нибудь файлик каждую минуту (touch /var/log/zabbix/heartbeat), создав элемент данных для этого, а с помощью планировщика проверять сколько прошло секунд с последнего обновления: $((`date +%s` - `stat --printf '%Y\n' /var/log/zabbix/heartbeat`)). Причем это можно делать не снаружи, а прямо с сервера, где стоит zabbix.Last edited by ADvorkin; 20-01-2020, 16:52.Comment
-
Не только! Верее так - всё. что может вернуть агент. Например количество процессов сервера. или любой userparameter ..Comment
-
да не может быть! вот только что проверил на тестовом сервере - -k "proc.num[zabbix_server]" замечательно отрабатывает. если сервер погиб - процессов сразу меньше.Comment
-
Так он все равно возвращает какое-то количество процессов. Да, оно меньше, но если изменить настройки zabbix, базы данных, web-сервера, то количество процессов тоже изменится. Количество процессов можно отслеживать, но это ненадежный показатель, к сожалению.Comment
-
Есть еще один вариант. Если настроить SNMP к серверу, то можно искать процесс usr/sbin/zabbix_server и если его нет, то информировать. Но это все-таки чуть сложнее, чем то что сделал я.
Расскажу на всякий случай, вдруг кому пригодится.
Создал внешний скрипт /usr/lib/zabbix/externalscripts/heartbeat.sh (не забыть дать права на исполнение) следующего содержания:
Потом создал элемент данных в узле мониторинга самого Zabbix типа "Внешняя проверка" и ключом heartbeat.sh, запускаемый раз в минуту.Code:#!/usr/bin/env bash touch /var/log/zabbix/heartbeat rm /var/log/zabbix/testfile 2> /dev/null
Скрипт, который проверяет файл выглядит примерно так:
И добавил его ежеминутный запуск в CronCode:#!/usr/bin/env bash secondsDiff=$((`date +%s` - `stat --printf '%Y\n' /var/log/zabbix/heartbeat`)) if [ $secondsDiff -gt 70 ] && [ ! -f /var/log/zabbix/testfile ] then (echo "FROM:[email protected]"; echo "TO:[email protected]"; echo "Subject:ZABBIX server down"; echo "File /var/log/zabbix/heartbeat don't update.";) | sendmail [email protected] touch /var/log/zabbix/testfile fi
Данный способ не только проверяет наличие сервиса, но его работоспособность. Например, если деактивировать узел сети Zabbix, то скрипт проинформирует о проблеме.Code:* * * * * root /usr/lib/zabbix/alertscripts/testfile.sh
Comment
Comment