<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    監視服務和主機群集

    介紹

    有幾個人詢問如何監視主機或服務的群集,因此我決定寫一些有關如何執行此操作的文檔。它相當簡單,所以希望您能找到容易理解的東西。

    首先,我們需要定義“集群”的含義。理解這一點的最簡單方法是舉一個例子。假設您的組織有五個主機,它們為組織提供冗余的DNS服務。如果其中一個發生故障,則不會造成重大災難,因為其余服務器將繼續提供名稱解析服務。如果您要監視組織對DNS服務的可用性,則需要監視五個DNS服務器。這就是我認為的服務簇。服務群集由您監視的五個單獨的DNS服務組成。盡管您確實希望監視每項服務,但是您主要關心的是DNS服務群集的總體狀態,而不是任何一項特定服務的可用性。

    如果您的組織有一組提供高可用性(群集)解決方案的主機,那么我會將其視為主機群集。如果一臺特定的主機發生故障,則另一臺主機將接管發生故障的服務器的所有職責。作為附帶說明,請查看“ 高可用性Linux項目”以獲取有關通過Linux提供主機和服務冗余的信息。

    進攻計劃

    有幾種方法可以潛在地監視服務或主機群集。我將介紹我認為最簡單的方法。監視服務或主機群集涉及兩件事:

    • 監視單個群集元素

    • 監視群集作為一個集體實體

    監視單個主機或服務群集元素比您想象的要容易。實際上,您可能已經在這樣做了。對于服務群集,只需確保您正在監視群集的每個服務元素。如果您有一個包含五個DNS服務器的群集,請確保具有五個單獨的服務定義(可能使用check_dns插件)。對于主機群集,請確保已為群集的每個成員配置了適當的主機定義(還必須為每個主機定義至少一個要監視的服務)。

    重要說明:您將要禁用針對單個群集元素(主機或服務定義)的通知。即使不會發送有關各個元素的通知,您仍然可以在狀態CGI中直觀地看到各個主機或服務的狀態。這對于將來確定群集中的問題根源很有用。

    可以通過使用以前緩存的集群元素結果來監視整個集群。盡管您可以重新檢查集群的所有元素以確定集群的狀態,但是為什么已經緩存了結果卻又浪費帶寬和資源呢?結果在哪里緩存?可以在狀態文件中找到群集元素的緩存結果(假設您正在監視每個元素)。該check_cluster插件在狀態文件檢查緩存主機和服務狀態而設計的。重要說明:盡管您沒有為集群的各個元素啟用通知,但是您希望為整體集群狀態檢查啟用它們。

    使用check_cluster插件

    check_cluster插件旨在通過檢查每個主機或服務群集元素的狀態信息來報告主機或服務群集的總體狀態。

    check_cluster插件可以在的插件目錄中找到在Github上Nagios的插件項目

    監控服務集群

    假設您有三臺DNS服務器,它們在網絡上提供冗余服務。首先,您需要分別監視每個DNS服務器,然后才能將它們作為群集進行監視。我假設您已經具有與DNS主機(稱為“ host1”,“ host2”和“ host3”)關聯的三個單獨的服務(都稱為“ DNS服務”)。

    為了將服務作為群集進行監視,您需要創建一個新的“群集”服務。但是,在執行此操作之前,請確保已配置服務集群檢查命令。假設您有一個名為check_service_cluster的命令,定義如下:

    定義命令{
    command_name check_service_cluster
    command_line / usr / local / nagios / libexec / check_cluster –service -l $ ARG1 $ -w $ ARG2 $ -c $ ARG3 $ -d $ ARG4 $
    }

    現在,您需要創建“集群”服務,并將剛創建的check_service_cluster命令用作集群的check命令。下面的示例提供了有關如何執行此操作的示例。如果群集中有2個或更多服務處于非正常狀態,則下面的示例將生成CRITICAL警報;如果只有1個服務處于非正常狀態,則將生成警告警報。如果群集的所有單個服務成員均正常,則群集檢查也將返回“正常”狀態。

    定義服務{

    check_command check_service_cluster!“ DNS群集”!0!1!$ SERVICESTATEID:host1:DNS Service $,$ SERVICESTATEID:host2:DNS Service $,$ SERVICESTATEID:host3:DNS Service $
    }

    重要的是要注意,我們正在集群檢查命令中將逗號分隔的按需服務狀態列表傳遞給$ ARG4 $宏。那很重要!Nagios Core將使用集群中各個成員的當前服務狀態ID(數字值,而不是文本字符串)填充這些按需宏。

    監控主機群集

    監視主機群集與監視服務群集非常相似。顯然,主要區別在于群集成員是主機而不是服務。為了監視主機群集的狀態,您必須定義一個使用check_cluster插件的服務。服務應該不會有任何集群中的主機相關聯,仿佛這臺主機出現故障,這將導致與通知的群集問題。一個好主意可能是將服務與運行Nagios Core的主機相關聯。畢竟,如果運行Nagios Core的主機出現故障,則Nagios Core不再運行,因此就監視而言您無能為力(除非您設置了冗余監視主機))。

    假設您有一個定義如下的check_host_cluster命令:

    定義命令{
    command_name check_host_cluster
    command_line / usr / local / nagios / libexec / check_cluster –host -l $ ARG1 $ -w $ ARG2 $ -c $ ARG3 $ -d $ ARG4 $
    }

    假設您在主機群集中有三個主機(分別名為“ host1”,“ host2”和“ host3”)。如果要讓Nagios Core在群集中的一臺主機未啟動時生成警告警報,或者在兩臺或更多主機未啟動時生成嚴重警報,則您定義的用于監控主機群集的服務可能類似于以下內容:

    定義服務{

    check_command check_host_cluster!“超級主機群集”!0!1!$ HOSTSTATEID:host1 $,$ HOSTSTATEID:host2 $,$ HOSTSTATEID:host3 $
    }

    重要的是要注意,我們在集群檢查命令中將逗號分隔的按需主機狀態列表傳遞給$ ARG4 $宏。那很重要!Nagios Core將使用集群中各個成員的當前主機狀態ID(數字值,而不是文本字符串)填充那些按需宏。

    就這樣,Nagios Core將定期檢查主機群集的狀態,并在其狀態降級時向您發送通知(假設您已啟用該服務的通知)。請注意,對于每個群集成員的主機定義,您很可能希望在主機關閉時禁用通知。請記住,您對群集的整體狀態不怎么在乎單個主機的狀態。根據您的網絡布局和您要完成的任務,您可能希望為主機定義啟用針對無法訪問狀態的通知。

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类