Мы используем решение Nagios core 4.3.2 в Ubuntu 14.04 для выполнения простого мониторинга проверки хоста на удаленном клиентском оборудовании. Один из типов устройств, которые мы используем, недоступен для ping, но как часть его проприетарной системы управления, UDP-порт 5246 открыт в ответ на «capwap-control». Я пытаюсь использовать плагин check_udp_port, доступный по адресу
Он использует утилиту 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's requiretty
. Попробуйте добавить Defaults:nagios !requiretty
в sudoers (или где-нибудь в /etc/sudoers.d).
Более безопасным вариантом будет модификация плагина для вызова nmap
через sudo, вместо того, чтобы запускать весь плагин через sudo.
Или, что еще лучше, просто используйте базовый плагин check_udp
, который не требует root/sudo.
Дополнительно, при тестировании вручную в командной строке, может быть полезно запустить плагин через env -i
для симуляции того, что он будет делать, если не определено $ENV
.