Nagios 伺服器最佳實踐?
我執行一個中型 Nagios 伺服器。它目前監控大約 40 台伺服器,提供 180 項服務,並且每天都在增長。
我從以非常深奧的方式配置的舊 Nagios 設置遷移,迫使我從頭開始重新配置所有內容。
現在伺服器正在執行並可以滿足我們的大部分需求,我正在考慮使其更具可擴展性;目前每個主機都是它自己的文件
/etc/nagios/hosts/
,並且每個主機在同一個文件中都有它的所有服務。這顯然不是最優的,但也不是將我的所有配置混淆成數百個不同的文件。所以我的問題是:對於任何有經驗的 Nagios 管理員,在不過度複雜配置的情況下使用主機組/服務組的最佳方法是什麼?
主機組和模板。
模板讓您可以為您的主機和服務定義類,例如“普通服務”、“關鍵服務”、“低優先級主機”。如果您有多個具有不同職責的團隊,它們還可以作為一種有用的方式來劃分職責,因此您可以擁有一個“linux host”模板和一個“windows host”模板,每個模板都定義了適當的聯繫資訊。
您可以在單個資源上使用多個模板,因此您可以組合適當的正交模板。例如,您可以擁有
host foo { use windows-host,normal-priority-host ... }
這將獲取 Windows 團隊的聯繫資訊(和升級)以及“正常”主機的輪詢率和門檻值。
主機組允許您將針對主機子集的所有檢查組合在一起。擁有諸如“baseline-linux-hosts”之類的東西來檢查負載、磁碟空間、
ssh
能力,以及你監控的每台主機上應該有的任何其他東西。添加“https-servers”等組,檢查 HTTP 連接、HTTPS 連接和 SSL 證書到期日期;“文件伺服器”檢查 NFS 和 SMB 可訪問性以及可能更積極的磁碟檢查;或“虛擬機”,檢查 VM 輔助工具是否正常執行。將每個主機和主機組放在自己的文件中。該文件應首先包含主機或主機組定義,然後是適用於它的服務的定義。
如果您
cfg_dir
在文件中使用該指令nagios.cfg
,Nagios 將遞歸搜尋該目錄。好好利用它。對於 的設置cfg_dir=/etc/nagios/conf.d
,您可以擁有如下目錄樹:
/etc/nagios/conf.d/
命令.d/
- http.cfg
- nrpe.cfg
- smtp.cfg
- ssh.cfg
主機.d/
- 主機1.cfg
- 主機2.cfg
- 主機3.cfg
主機組.d/
- 主機組1.cfg
- 主機組2.cfg
我傾向於為每種資源類型(命令、聯繫人組、聯繫人、升級、主機組、主機、服務組、時間段)創建一個目錄,但服務除外,這些服務與使用它們的主機或主機組分組。
精確的結構可以根據您的組織需求而有所不同。在過去的工作中,我
hosts.d
為每個不同的站點使用了子目錄。在我目前的工作中,大部分 Nagios 主機定義都是由 Puppet 管理的,因此 Puppet 管理的主機有一個目錄,手動管理的主機有一個單獨的目錄。請注意,上面還將命令分解為多個文件,通常是通過協議。因此,該
nrpe.cfg
文件將具有命令check_nrpe
和check_nrpe_1arg
,而http.cfg
可能具有check_http
、check_http_port
、check_https
、check_https_port
和check_https_cert
. 1我通常沒有大量的模板,所以我通常只有一個
hosts.d/templates.cfg
文件和一個services.d/templates.cfg
文件。如果您更多地使用它們,它們可以進入目錄中適當命名的文件templates.d
。1我也喜歡有一個
check_http_blindly
命令,基本上就是check_http -H $HOSTADDRESS$ -I $HOSTADDRESS$ -e HTTP/1.
; 即使收到 403 響應程式碼,它也會返回 OK。