Мы используем решение 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 requiretty
настройка. Попробуйте добавить Defaults:nagios !requiretty
в sudoers (или где-нибудь в /etc/sudoers.d).
Более безопасным вариантом было бы изменить плагин для вызова nmap
через sudo вместо запуска всего плагина через sudo.
Или, еще лучше, просто используйте запас check_udp
плагин, не требующий root / sudo.
Кроме того, при тестировании вручную из командной строки может быть полезно запустить плагин через env -i
смоделировать то, что он будет делать без $ENV
определено.