Назад | Перейти на главную страницу

Есть ли программный пакет для мониторинга, который будет предупреждать меня, если в течение определенного периода времени не было активности?

Это может быть очень простой вопрос, но я не очень хорошо знаком с точными функциями Nagios и Munin по сравнению с другими инструментами мониторинга.

Допустим, у нас есть процесс, который необходимо запускать ежедневно по очень важным причинам инфраструктуры. У нас были случаи, когда процесс не запускался или по иным причинам не работал в течение нескольких дней, прежде чем кто-либо заметил.

Я хотел бы создать систему, которая позволит мне легко узнать, когда по какой-то причине ежедневный пробег не проводился.

Я могу настроить этот процесс для отправки электронного письма при каждом успешном запуске (или каждом неудачном запуске), но я не верю, что люди, получающие это письмо, заметят отсутствие сообщения «Я в порядке».

Я представляю себе некий тип сервиса "tripwire", который этот V.I.P. (очень-важный-процесс) может отправлять статусное сообщение каждый раз, когда он запускается, независимо от того, успешно он или нет; и если служба «tripwire» не получила ни одного сообщения от VIP в течение настраиваемого периода времени, она может отправить кому-нибудь предупреждение.

(Разница между тем, что я представляю, и первым описанным мною подходом - это служба, которая отправляет сообщение только в ненормальных условиях, а не служба, которая каждый день отправляет сообщения о том, что состояние нормальное / ОК).

Можно ли настроить Nagios для отправки подобного предупреждения, если он не получил известие от определенной службы / устройства / процесса в течение N дней? Есть ли другой инструмент, у которого есть эта функция?

Nagios поддерживает именно то, что вы хотите. Взгляните на пассивные проверки и свежесть. По сути, вы определяете хост и службу для своей работы и сообщаете Nagios, что служба является пассивной и имеет определенный порог актуальности (например, 26 часов). Каждый раз, когда ваш процесс запускается, он должен отправлять результат «ОК» в Nagios. Nagios отслеживает, когда были отправлены подтверждения, и если в течение 26 часов не было опубликовано ни одного сообщения, он отправит уведомление.

На этой странице есть пример.

Nagios просто запускает команду и просматривает код результата. Это означает, что Nagios может отслеживать примерно что-нибудь, предполагая, что вы можете написать команду, которая вернет соответствующий статус.

В вашем случае, если ваш процесс может писать в файл, вы можете использовать стандартный Nagios check_file_age плагин, который будет предупреждать, если файл не был изменен в течение определенного времени.

Конечно, вы также можете заставить Nagios проверять почтовый ящик и генерировать предупреждение, если сообщение не получалось периодически.

Чтобы уточнить то, что сказал Джон, вы можете использовать сервисные проверки в «пассивном» режиме Nagios вместе с проверкой актуальности. Проверки служб в пассивном режиме аналогичны ловушкам SNMP в том смысле, что они могут асинхронно отправляться на сервер Nagios.

Для Nagios существует надстройка NSCA (Nagios Service Check Acceptor) для отправки / получения этих проверок пассивных служб с удаленных хостов: http://exchange.nagios.org/directory/Addons/Passive-Checks/NSCA-%252D-Nagios-Service-Check-Acceptor/details

Ваш VIP в конце успешного запуска может быть настроен для запуска send_ncsa с сообщением с разделителями табуляции, например:

printf "VIP_Host_Name\tVIP_Health\t0\tOK\n" | send_ncsa -H nagios_server 

Если у вашего VIP возникла какая-то проблема, вы можете вместо этого отправить соответствующее предупреждение:

printf "VIP_Host_Name\tVIP_Health\t1\tUseful Warning Message\n" | send_ncsa -H nagios_server

На вашем сервере Nagios есть такая конфигурация, как:

define service {
    service_description     VIP_Health
    active_checks_enabled   0
    passive_checks_enabled  1
    host_name               VIP_Host_Name
    check_freshness         1
    freshness_threshold     99000
    check_command           vip_overdue
}

Чтобы безоговорочно выдавать предупреждение всякий раз, когда значение freshness_threshold превышено (количество секунд с момента последнего получения какой-либо информации для этой службы), настройте новую команду Nagios check_command с именем vip_overdue, которая всегда будет выходить с КРИТИЧЕСКИМ статусом и соответствующим сообщением об ошибке, например:

#!/bin/bash
echo "CRITICAL: VIP is overdue"
exit 2

Да, Nagios может. Просто имейте плагин, который проверяет вывод важного процесса, которому меньше суток. Нет? Сервис упал!

Просто чтобы дать вам альтернативу Nagios, загляните в Zabbix. Он использует тот же подход, который описал larsks для Nagios, но я думаю, что Zabbix более удобен для пользователя и проще в настройке.

Взгляни на эта почта и вот этот.

Вы также можете настроить контролировать сделать это именно так.

Monit позволяет тестировать содержимое файла [1] или его временную метку [2].

Затем вы можете отслеживать это через веб-интерфейс, а также получать электронные письма, если тест не прошел.

На мой взгляд, monit довольно легко настроить по сравнению с nagios. Я просто сделал то, что описал для запущенного процесса, и мне потребовалось не более 15 минут, от загрузки monit до его запуска.

1.- (http://mmonit.com/monit/documentation/monit.html#file_content_testing)

2.- (http://mmonit.com/monit/documentation/monit.html#timestamp_testing)