Nagios

RHEL 6(EPEL 包)上的 Nagios 在更新後停止工作

  • January 29, 2018

RedHat Enterprise Linux 6 上 Nagios 的 EPEL 軟體包已在幾週前從 3.4 版更新到 4.3 版。更新是通過一個簡單的yum update命令完成的,沒有任何跡象表明版本發生了重大變化。

儘管更新後 Nagios 看起來工作正常(所有服務都在 Web 界面中正確可見),但實際上並沒有多少工作:沒有執行服務檢查,也沒有發送郵件。數十條錯誤消息可見於/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, now won’t Stop!

在註意到更新創建了一個/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 設置為 permissive 模式可以完全解決問題;但是,這不是解決方案。如何在將 SELinux 保持在強制模式的同時正確更新 SELinux 設置?

所需的 SELinux 配置文件nagios-selinux可在 EPEL 上的軟體包中找到。不幸的是,從 Nagios 3.5.1 切換到 Nagios 4.3.4 時更新不會自動安裝,因此必須手動添加:

yum install nagios-selinux

當然,對配置文件的更改(從配置文件中導入新路徑.rpmnew)也是 Nagios 正常工作所必需的。

引用自:https://serverfault.com/questions/894349