CentOS:無法讀取遠端伺服器上的 nrpe/snmp 代理程式的輸出,但它可以在本地工作,我做錯了什麼?

CentOS:無法讀取遠端伺服器上的 nrpe/snmp 代理程式的輸出,但它可以在本地工作,我做錯了什麼?

我在某些伺服器上安裝了 NRPE 和 SNMP,因為我想使用 Nagios 監控該伺服器。我有一些檢查已經正常運行,並且我得到了預期的輸出。今天,我安裝了check_ifstatusNagios 指令來監視一台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 在所有機器上都被停用。

答案1

為什麼使用 NRPE 透過 SNMP 檢查內容?您可以直接從 Nagios 方塊中檢查這些內容,假設 snmp 正在偵聽外部介面(您似乎想要,根據 netstat 註解判斷,儘管尋找錯誤的連接埠)。

除非您編譯的 NRPE 不支援 SSL,否則不應使用 -n。

(此外,您不需要指定-p 5666,因為這是預設值。與相同-t 10.)

  1. 確保 Nagios 機器的 IP 在 allowed_hosts 清單中。
  2. 看看是否可以透過執行不含更多參數的「check_nrpe -H dbr4」來與 NRPE 守護程式對話。您應該取回 NRPE 版本號
  3. 檢查 nrpe.cfg 中的「command[check_ifstatus]」行是否與您的手動測試相符。

答案2

Keith的答案是最正確的;您不需要使用 NRPE 進行 SNMP 檢查,這會增加不必要的複雜性。

也就是說,這裡最有可能直接出現的問題是 SELinux,除非您知道您已將其關閉。getenforce在NRPE主機上運作;如果顯示“Enforcing”,則表示 SELinux 已啟用。如果啟用了 SELinux,請check_nrpe從 Nagios 主機執行命令,然後檢查/var/log/audit/audit.logNRPE 主機。如果其中有一些帶有“type=AVC”的行表示“avc:被拒絕”,則您可能遇到了 SELinux 限制。

避免這種情況的簡單方法是透過編輯/etc/selinux/config和設定SELINUX來關閉 SELinux permissive(如果您打算在某個時候在此系統上重新啟用 SELinux)或disabled(如果您確定不想再次在此系統上執行 SELinux) 。當然,如果您這樣做,您顯然會失去 SELinux 的好處。

您也許可以透過更改check_ifstatus外掛程式的 SELinux 上下文來解決此問題。您可以使用 檢查其上下文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 策略。我在這方面做得還不夠,無法提供建議(除了「直接從 Nagios 主機檢查 SNMP;這就是 SNMP 的用途」),但網路上有一些關於這樣做的參考資料。您可能想要查看audit2allow,這有助於適應 SELinux 策略的過程。

相關內容