Мы используем Nagios для проверки повторяющихся процессов.
define service
{
use local-service
host_name xxx
service_description xxx Duplicate Processes
check_interval 1
max_check_attempts 1
contact_groups admins
event_handler restart-dependent-processes
check_command check_procs_duplicate!2!3!2!2!2
}
check_procs_duplicate проверяет наличие повторяющихся процессов и возвращает состояние - например, КРИТИЧЕСКИЙ.
Обработчик событий уничтожает повторяющиеся и зависимые процессы и запускает один экземпляр процесса и зависимый процесс. В конце этого снова Nagios проверяет, есть ли какие-либо повторяющиеся процессы, и соответственно устанавливает состояние - OK / WARNING / CRITICAL.
Обработчику событий требуется больше времени для запуска процессов, и в течение этого времени, если кто-то запускает процесс вручную, состояние само останется в CRITICAL.
В течение следующего интервала Nagios снова проверит повторяющиеся процессы и снова найдет их КРИТИЧНЫМ.
Обработчик событий будет не выполнить сейчас, так как предыдущее и текущее состояния являются КРИТИЧНЫМИ.
Есть указания о том, как исправить эту проблему?
Возможно, вы захотите сделать его нестабильной службой. См. Страницу документации на Неустойчивые услуги.
То, с чем вы имеете дело, не строго непостоянный сервис, но check_interval равный 1 и max_check_attempts равный 1 - это почти одно и то же.
Если вы сделаете службу непостоянной, она должна эффективно запускать обработчик событий каждый раз, когда это КРИТИЧНО, а не только когда состояние «изменяется».