Я установил 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.)