Пакет EPEL для Nagios в RedHat Enterprise Linux 6 был обновлен несколько недель назад с версии 3.4 до версии 4.3. Обновление было выполнено простым yum update
команда, и ничто не указывает на изменение основной версии.
Хотя после обновления Nagios, казалось, работал нормально (все службы правильно отображаются в веб-интерфейсе), на самом деле мало что работает: проверки служб не выполняются, и письма тоже не отправляются. Десятки сообщений об ошибках видны в /var/log/messages
:
Jan 26 15:58:55 srv1 nagios: Unable to send check for host 'srv3' to worker (ret=-2)
Jan 26 15:58:58 srv1 nagios: Unable to run check for service 'Total Processes' on host 'srv4'
Jan 26 15:59:05 srv1 nagios: Unable to run check for service 'Lab Home Partition' on host 'srv1'
Более того, попытка перезапуска nagios заканчивается ошибкой, которой не было до обновления: No usable PID found in /var/run/nagios/nagios.pid
. Кажется, у этой части проблемы есть решение: Nagios Woudn't Start, теперь не остановится!
Заметив, что обновление создало /etc/nagios/nagios.cfg.rpmnew
файл, я запустил diff
с исходным файлом конфигурации из 3.5.1 RPM, чтобы увидеть, в чем заключаются различия, и соответствующим образом изменили фактический файл конфигурации. Изменения в основном касаются положения некоторых файлов, используемых во время выполнения (вот значения новой версии):
object_cache_file=/var/spool/nagios/objects.cache
precached_object_file=/var/spool/nagios/objects.precache
lock_file=/var/run/nagios/nagios.pid
temp_file=/var/spool/nagios/nagios.tmp
check_result_path=/var/spool/nagios/checkresults
Это решает проблему остановки / перезапуска, упомянутую выше, однако нарушает работу веб-интерфейса, который теперь отображает Error: Could not read object configuration data!
. И сервисные проверки по-прежнему не выполняются.
Сообщения об ошибках также присутствуют в /var/log/audit/audit.log
, что указывает на то, что проблема, вероятно, связана с SELinux (система работает в принудительном режиме):
type=AVC msg=audit(1516991640.421:263116): avc: denied { getattr } for pid=29_exec_t:s0 tclass=file
type=SYSCALL msg=audit(1516991640.421:263116): arch=c000003e syscall=4 success=n fsgid=494 tty=(none) ses=4000 comm="check_procs" exe="/usr/lib64/nagios/plugins
Действительно, временная установка SELinux в разрешающий режим полностью решает проблему; однако это не решение. Как правильно обновить настройки SELinux, сохраняя SELinux в принудительном режиме?
Необходимые профили SELinux доступны в nagios-selinux
пакет также доступен на EPEL. К сожалению, обновление не устанавливает его автоматически при переходе с Nagios 3.5.1 на Nagios 4.3.4, поэтому его необходимо добавить вручную:
yum install nagios-selinux
Конечно, изменения в файлах конфигурации (импорт новых путей из .rpmnew
config) также необходимы для правильной работы Nagios.