Я пытаюсь настроить Nagios для мониторинга службы nginx на моем балансировщике нагрузки, но не смог заставить его показывать, что служба запущена. Команда и определение службы приведены ниже. Похоже, что любой процесс, который не был порожден пользователем root, не будет отображаться как работающий. Процесс nginx запускается пользователем www-data. Я даже попробовал сделать что-то настолько простое, как проверка «верхнего» процесса, который я запускал под другим пользователем. То, что я представил ниже, отлично работает, пока я выбираю процесс, запущенный пользователем root. Если процесс запускается любым другим пользователем, он отображается как критический и не работает. Есть какие-нибудь мысли?
define command {
command_name check_nginx
command_line $USER1$/check_procs -c 1: -C nginx
}
define service {
use local-service
host_name my_host
service_description Load Balance Service
check_command check_nginx
}
решение1
Перепробовав все возможные варианты, включенные в плагин check_proc, и не добившись ничего, я решил пойти другим путем. Я создал следующий скрипт python и включил его в каталог плагинов. Имя скрипта python — check_service.py. Если вы назовете его как-то иначе, вам придется изменить службы и команды ниже соответствующим образом.
import os
status = os.system('systemctl is-active --quiet nginx')
if status == 768:
print('Critical, Service is not running')
exit(2)
elif status == 0:
print('OK, Service is Running')
exit(0)
Затем я добавил следующую команду в файл commands.cfg. $ARG1$ там для будущей версии скрипта, над которым я работаю. Это не обязательно.
define command{
command_name check_service
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_service $ARG1$
}
Определил услугу следующим образом
define service {
use local-service
host_name debian
service_description Load Balance Service
check_command check_service
}
Затем на клиенте я добавил эту команду в файл nrpe.cfg
command[check_service]=python3 /usr/lib/nagios/plugins/check_service.py
Надеюсь, это поможет кому-нибудь в будущем.