У меня проблема с разрешением, которая сводит меня с ума. Я пытаюсь отслеживать звездочку на виртуальной машине Arch Linux, используя плагин "check_asterisk_peers". Я установил NRPE (удаленный агент Nagios). Соответствующий раздел nrpe.cfg:

command[check_users]=/usr/lib/monitoring-plugins/check_users -w 5 -c 10
command[check_asterisk_peers]=/usr/lib/monitoring-plugins/check_asterisk_peers -p monika_gigaset

Вот что я получаю:

/usr/lib/monitoring-plugins/check_nrpe -H 10.10.10.10 -c check_users
USERS OK - 2 users currently logged in |users=2;5;10;0

Теперь это говорит мне, что NRPE работает нормально, и все разрешения установлены правильно.

Если я просто запускаю плагин (без вызова check_nrpe), я получаю:

aag ~ $ /usr/lib/monitoring-plugins/check_asterisk_peers -p monika_gigaset
CRITICAL: Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)

однако, если я запускаю его с помощью sudo, он работает нормально (из этого я заключаю, что плагин не имеет достаточных привилегий при запуске без полномочий root):

aag ~ $ sudo /usr/lib/monitoring-plugins/check_asterisk_peers -p monika_gigaset
 OK: monika_gigaset

Однако, если я запускаю плагин звездочки, я получаю:

aag ~ $ /usr/lib/monitoring-plugins/check_nrpe -H 10.10.10.10 -c check_asterisk_peers
CRITICAL: Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)

То же самое, если я запускаю это с sudo:

aag ~ $ sudo /usr/lib/monitoring-plugins/check_nrpe -H 10.10.10.10 -c check_asterisk_peers
CRITICAL: Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)

Я уверен, что проблема является одним из разрешений, но не могу ее решить. Файл sudoers (отрывок) выглядит так:

root ALL=(ALL) ALL
http ALL = NOPASSWD: /usr/sbin/asterisk -rx database *

nrpe ALL=(ALL) NOPASSWD: /usr/sbin/service,/usr/lib/monitoring-plugins/check_asterisk_peers
asterisk ALL=(ALL) ALL

%wheel ALL=(ALL) ALL
%admins ALL= (ALL) ALL
Defaults targetpw  # Ask for the password of the target user
ALL ALL=(ALL) ALL  # WARNING: only use this together with 'Defaults targetpw'

Любая подсказка будет с благодарностью! Мой диагноз состоит в том, что плагин "check_asterisk_peers" не имеет разрешения для связи со звездочкой (которая запускается от имени root), но я не понимаю, как я могу предоставить ему соответствующие разрешения.

3 ответа3

1

Согласно странице руководства для плагина, вам нужно запустить плагин с помощью команды sudo, поэтому вы получите успешный результат, когда запустите плагин с помощью sudo.

Я выделил инструкции со страницы для вас:

Чтобы предоставить пользователю nagios права на выполнение скрипта, попробуйте что-то вроде следующего в вашем файле /etc /sudoers:

nagios ALL=(ALL) NOPASSWD: /path/to/plugins/directory/check_asterisk_peers 

Затем вызовите плагин с помощью sudo:

/path/to/sudo check_asterisk_peers
1

Правильное решение:

в /etc/asterisk/asterisk.conf измените владельца сокета на

[files]
astctlpermissions = 0660
astctlowner = asterisk
astctlgroup = asterisk

И добавьте пользователя nrpe или nagios (пользователя, которого вы используете, вы можете увидеть в nrpe.cfg) в группу звездочек.

0

В конце концов мне удалось решить проблему, предоставив NOPASSWD nrpe и его группам. Однако безопасность не является оптимальной и может принести пользу от более строгих настроек. Вот соответствующая часть sudoers:

root ALL=(ALL) ALL
http ALL = NOPASSWD: /usr/sbin/asterisk -rx database *
nrpe ALL=(ALL) NOPASSWD: ALL
asterisk ALL=(ALL) ALL
%admins ALL= (ALL) NOPASSWD: ALL
%wheel ALL=(ALL) NOPASSWD: ALL
%sudo   ALL=(ALL) NOPASSWD: ALL

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .