Linux

Nagios 伺服器最佳實踐?

  • August 20, 2018

我執行一個中型 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_nrpecheck_nrpe_1arg,而http.cfg可能具有check_httpcheck_http_portcheck_httpscheck_https_portcheck_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。

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