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

Nagios check_udp_ports возвращает критический: результат для запланированной проверки, работает нормально вручную

Мы используем решение Nagios core 4.3.2 в Ubuntu 14.04 для простого мониторинга проверки хоста на удаленном клиентском оборудовании. Один из типов устройств, которые мы используем, недоступен для ping, но как часть его проприетарной системы управления, UDP-порт 5246 открыт в ответ на «capwap-control». Я пытаюсь использовать плагин check_udp_port, доступный из

https://exchange.nagios.org/directory/Plugins/Network-Protocols/*-TCP-and-UDP-(Generic)/check_udp_port/details

Однако при попытке реализовать на тестовом устройстве он показывает как выключенный с информацией о состоянии: «КРИТИЧЕСКИЙ:» Никакой дополнительной информации не дается или какие-либо записи в журналах, кроме проверки хоста, не выполнялись.

Он использует утилиту nmap для проверки, которая требует sudo, я добавил запись в последнюю строку / etc / sudoers, чтобы пропустить пароль согласно инструкциям в приведенной выше ссылке.

nagios ALL = NOPASSWD:/usr/local/nagios/libexec/check_udp_port *

Вот как это выглядит в команде define {

    command_line    sudo $USER1$/check_udp_port -H $HOSTADDRESS$ -p $ARG1$ -s $ARG2$

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

[1497380591.600863] [2048.1] [pid=1259] **** BEGIN MACRO PROCESSING ***********
[1497380591.600880] [2048.1] [pid=1259] Processing: 'sudo $USER1$/check_udp_port -H $HOSTADDRESS$ -p $ARG1$ -s $ARG2$'                
[1497380591.600893] [2048.1] [pid=1259]   Done.  Final output: 'sudo /usr/local/nagios/libexec/check_udp_port -H 172.15.192.211 -p 5246 -s capwap-control'                     
[1497380591.600901] [2048.1] [pid=1259] **** END MACRO PROCESSING *************

Сначала я проверил, что pid работает под пользователем nagios

 1259 nagios    20   0   37404  17036   2800 S   0.3  0.2  12:21.88 nagios

Затем я вошел в систему как пользователь nagios и выполнил команду напрямую из журнала отладки, и она работает без проблем.

nagios@Monitoring:/usr/local/nagios/libexec$ sudo /usr/local/nagios/libexec/check_udp_port -H 172.15.192.211 -p 5246 -s capwap-control
UDP OK - capwap-control listening on port 5246: 5246/udp open capwap-control

Я тестировал без строки в sudoers, и системная информация в nagios изменилась на ошибку о необходимости sudo, как ожидалось. Несмотря на то, что из командной строки он работает безупречно, а журналы показывают, что он выполняет команду правильно, он все равно терпит неудачу и просто показывает «CRITICAL:» для информации.

Это может быть sudo requiretty настройка. Попробуйте добавить Defaults:nagios !requiretty в sudoers (или где-нибудь в /etc/sudoers.d).

Более безопасным вариантом было бы изменить плагин для вызова nmap через sudo вместо запуска всего плагина через sudo.

Или, еще лучше, просто используйте запас check_udp плагин, не требующий root / sudo.

Кроме того, при тестировании вручную из командной строки может быть полезно запустить плагин через env -i смоделировать то, что он будет делать без $ENV определено.