Рейтинг:0

Nagios check_procs не сообщает о процессах, не созданных пользователем root

флаг ph

Я пытаюсь настроить Nagios для мониторинга службы nginx на моем балансировщике нагрузки, но мне не удалось заставить его показать, что служба работает. Описание команды и службы приведено ниже. Кажется, что любой процесс, который не порожден root, не будет отображаться как запущенный. Процесс nginx запускается www-data. Я даже попробовал что-то столь же простое, как проверка «верхнего» процесса, который я запускал под другим пользователем. То, что я представил ниже, отлично работает, пока я выбираю процесс, запущенный с правами root. Если процесс порожден любым другим пользователем, он отображается как критический и не работает. есть идеи?

    определить команду {
        имя_команды check_nginx
        command_line $USER1$/check_procs -c 1: -C nginx
}


определить службу {
   использовать локальный сервис
   host_name мой_хост
   service_description Служба балансировки нагрузки
   check_command check_nginx
}
tbielaszewski avatar
флаг ng
мысли: 1. что-то странное происходит с ОС, так как check_procs просто считывает информацию из /proc, поэтому, возможно, какой-то контейнер или механизм безопасности ограничивают то, что вы можете видеть. 2. поэкспериментируйте с параметром `-u, --user=USER` и, возможно, `-g, --cgroup-hierarchy`
Jim Miller avatar
флаг ph
Я на самом деле попробовал пользовательский вариант, но мне не повезло. В итоге я пошел другим путем и написал для этого плагин/скрипт Python. Подробности будут ниже.
Рейтинг:0
флаг ph

Попробовав все различные варианты, включенные в плагин check_proc, и ничего не добившись, я решил пойти другим путем. Я создал следующий скрипт Python и включил его в каталог плагинов. Имя скрипта Python — check_service.py. Если вы назовете его по-другому, вам придется соответствующим образом изменить сервисы и команды ниже.

   импорт ОС

status = os.system('systemctl активен --quiet nginx')
если статус == 768:
  print('Критично, служба не запущена')
  выход(2)
Элиф статус == 0:
 print('Хорошо, служба запущена')
 выход(0)

Затем я добавил следующую команду в файл commands.cfg. $ARG1$ предназначен для будущей версии скрипта, над которым я работаю. Это не требуется.

определить команду {
    имя_команды
    command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_service $ARG1$
    }

Определил службу так

определить службу {
    использовать локальный сервис
    имя_хоста debian
    service_description Служба балансировки нагрузки
    check_command check_service
    }

Затем на клиенте я добавил эту команду в файл nrpe.cfg

команда[check_service]=python3 /usr/lib/nagios/plugins/check_service.py

Надеюсь, это поможет кому-то где-нибудь в будущем.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.