У меня есть некоторая инфраструктура (серверы, коммутаторы и т. Д.), Контролируемая сервером Zabbix, настройка для оповещения в случае проблем; Все идет нормально. Но что, если на самом сервере Zabbix (или на любом из нижележащих инфра) возникает проблема?
Одна из идей - опубликовать какое-то сердцебиение, которое может отслеживать внешняя система. Я думаю использовать Zabbix API (возможно, используя py-zabbix), чтобы раскрыть это через http и отслеживать его с помощью чего-то вроде monitor.us.
Прежде чем сделать решительный шаг, я не могу не задуматься, просто уже существует, чтобы покрыть это? Или это вообще хороший подход? Бы контролировать быть лучшим подходом по сравнению с настраиваемым скриптом Python? (не уверен, что это проходит тест на "простоту") ...
Итак, вот что я в итоге сделал:
Произошел неожиданный сбой: Zabbix API по-прежнему отвечает, даже если Zabbix сервер не работает и нет возможности запросить статус сервера - это было главным, что я хотел отслеживать. К счастью патч существует чтобы разрешить такие запросы статуса сервера.
Вот код для запроса набора триггеров Zabbix, которые не работают (адаптировано из пример, который поставляется с pyzabbix). Если вам нужен код для полноценного монитора, спросите в комментарии, и я выложу его на github.
def __query_unacked_triggers(self):
""" queries for currently tripped _triggers which haven't been acked """
return self._zapi.trigger.get(
only_true = 1,
filter = { 'value': 1 },
skipDependent = 1,
monitored = 1,
active = 1,
output = 'extend',
expandDescription = 1,
expandData = 'host',
withLastEventUnacknowledged = 1,
)
Внешнее сердцебиение - это правильный путь.
Мне неизвестны такие инструменты, у меня есть свой собственный для системы мониторинга, которую я использую. Просто убедитесь, что это сердечный ритм, а не отчет о неудаче. Например. вы всегда сообщаете, что все в порядке, и если система мониторинга не получает ваше сердцебиение в течение более длительного периода времени, она должна сообщить вам об этом.