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

CentOS: невозможно прочитать вывод агента nrpe / snmp на удаленном сервере, но он работает локально, что я делаю не так?

Я установил NRPE и SNMP на какой-то сервер, так как я хотел бы контролировать этот сервер с помощью Nagios. У меня есть несколько проверок, которые уже выполняются правильно, и я получаю результат, как и предполагалось. Сегодня я установил check_ifstatus Команда Nagios для отслеживания состояния сетевых карт на одном из моих mysql серверы. Во время пробежки check_ifstatus локально на сервере я правильно получаю соответствующую информацию:

[root@dbr4 nagios]# /usr/lib64/nagios/plugins/check_ifstatus -H localhost
    OK: host 'localhost', interfaces up: 4, down: 0, dormant: 0, excluded: 0, unused: 0    |up=4,down=0,dormant=0,excluded=0,unused=0
[root@dbr4 nagios]#

но когда я запускаю команду со своего сервера Nagios, я получаю следующую ошибку:

[root@monitorvm ~]# /usr/lib64/nagios/plugins/check_ifstatus -H amadbr4
CRITICAL: No response from remote host 'dbr4' for 1.3.6.1.2.1.2.2.1.8  with snmp version 1
[root@monitorvm ~]#

Означает ли это, что мне нужно включить snmp на сервере, который я хочу проверить? Есть ли способ использовать NRPE для выполнения этой проверки? SELINUX отключен на всех машинах.

Ответ Кита самый правильный; вам не нужно использовать NRPE для проверки SNMP, и это добавляет ненужной сложности.

Тем не менее, наиболее вероятной непосредственной проблемой здесь является SELinux, если вы не знаете, что выключили его. Бегать getenforce на хосте NRPE; если он говорит "Enforcing", SELinux включен. Если SELinux включен, запустите check_nrpe с вашего хоста Nagios, а затем проверьте /var/log/audit/audit.log на хосте NRPE. Если там есть строки с «type = AVC», которые говорят «avc: denied», вы, вероятно, попали в ограничение SELinux.

Самый простой способ избежать этого - выключить SELinux, отредактировав /etc/selinux/config и установка SELINUX к permissive (если вы планируете в какой-то момент снова включить SELinux в этой системе) или disabled (если вы уверены, что больше не хотите запускать SELinux в этой системе). Конечно, вы, конечно, потеряете все преимущества SELinux, если сделаете это.

Вы можете решить эту проблему, изменив контекст SELinux check_ifstatus плагин. Вы можете проверить его контекст с помощью ls -Z. В моей системе (со стандартной целевой политикой) он имеет контекст «system_u: object_r: nagios_system_plugin_exec_t: s0», из которых «nagios_system_plugin_exec_t» является важной частью. Если установить его на "nagios_system_plugin_exec_t" (с chcon -t nagios_system_plugin_exec_t check_ifstatus) не работает, попробуйте "nagios_unconfined_plugin_exec_t". Если любое из этих изменений сработает, вам придется сделать их постоянными с помощью semanage fcontext -a -t nagios_system_plugin_exec_t '/usr/lib(64)?/nagios/plugins/check_ifstatus'.

Если ничего из этого не работает, вы, вероятно, сталкиваетесь с некоторыми ограничениями для процессов, использующих адрес обратной связи, и вам придется просматривать сообщения AVC и создавать свои собственные политики SELinux. Я сделал недостаточно этого, чтобы дать совет (кроме «проверьте SNMP прямо с вашего хоста Nagios; это то, для чего нужен SNMP»), но в Интернете есть несколько ссылок на то, как это сделать. Вы могли бы захотеть изучить audit2allow, который помогает процессу адаптации к политике SELinux.

Почему вы используете NRPE для проверки через SNMP? Вы можете проверить их прямо из окна Nagios, предполагая, что snmp прослушивает внешний интерфейс (который, судя по комментариям netstat, вам нужен, несмотря на поиск неправильного порта).

Вам не следует использовать -n, если вы не скомпилировали NRPE без поддержки SSL.

(Кроме того, указывать -p 5666, поскольку это значение по умолчанию. То же самое с -t 10.)

  1. Убедитесь, что IP-адрес вашего Nagios находится в списке allowed_hosts.
  2. Посмотрите, сможете ли вы вообще разговаривать с демоном NRPE, запустив "check_nrpe -H dbr4" без дополнительных аргументов. Вы должны вернуть номер версии NRPE
  3. Убедитесь, что ваша строка «command [check_ifstatus]» в nrpe.cfg соответствует вашему ручному тесту.