搜尋此網誌

2012年4月4日 星期三

[工具介紹] 利用 nagios/icinga 監測 Windows 主機 (使用 winrpe)

Nagios/Icinga 是一套功能相當強大的監測套件,支援許多的監測機制可以用來監測遠端的系統,像是 TCP/UDP 服務、SNMP、甚至是利用 SSH 等方式從遠端進入系統中加以監測。在這些方式中,NRPE (Nagios Remote Plugin Executor) 提供了一個標準化的遠端監控協定。透過 NRPE,我們可以呼叫被監測主機上的程序,用以監測任何可供監測的項目。嚴格來說,透過 SSH 也可以達到相同的目的,但是 NRPE 不但在呼叫上較為方便,對於管控上也較為完整,所以 NRPE 可說是 Nagios/Icinga 用來監測遠端系統不可或缺的一環。因為 NRPE 是一種溝通的協定,所以使用上並沒有作業系統的限制。雖說如此,但是畢竟 Nagios/Icinga 原生在 Linux 的環境下,因此在其他作業系統下的支援當然還是顯得較為不足。
很不幸的是,除非是很特殊的環境,否則多種作業系統的混搭風 (專業的說法是異質環境) 絕對是不可避免的宿命。今天我要跟各位分享的就是如何透過 NRPE 監測 Windows 的作業系統。Windows 下的 NRPE 有幾個不同的套件,像是 NRPE-NTNSClient++,以及今天我要示範的 winrpe。winrpe 運作於 cygwin,並透過 xinet 提供服務。廢話不多說,就讓我們看一下今天的測試環境並一步步完成目標吧。
winrpe
測試環境
第一部分:設定被監測主機 (192.168.1.2)
  1. 下載 winrpe。
    前往這裡下載 winrpe,我下載的是版本 4.0.0 。
  2. 安裝 winpre。
    安裝 winrpe 再簡單不過了,一直按下一步就對了。
  3. 設定 xinetd 服務。
    前面提到 winrpe 是透過 xinetd 提供服務,因此我們需要進行相關的設定:
    1. 開啟 "伺服器管理員" => "服務" => "XinetServer",點選滑鼠右鍵的 "內容"。
      001
    2. 將 "啟動類型" 改為 "自動",設定完成後按下 "確定"。
      002
    3. 手動啟動 XinetServer 服務。
      003
  4. 設定哪些主機 (IP) 可以透過 NRPE 可以對此進行進行 NRPE 的監測。
    有兩種方法可以限制有哪些主機 (IP) 可以對此系統進行 NRPE 的監控,一種方式是使用 Windows 內建的防火牆功能,另外一種方式則是透過 xinetd 的設定檔。這兩種方式並不會互相排斥,甚至我的建議是兩種方式都加以設定,以達到較為嚴格的管控。
    1. 開啟 "服務器管理員" => "設定" => "具有進階安全性的 Windows 防火牆" => "輸入規則"。找到名為 Nrpe 的規則,點選滑鼠右鍵"內容"。004
    2. 開啟 "領域" => "遠端 IP 位址",點選 "這些 IP 位址" 並加上監測主機的 IP 位址 (如192.168.1.1)。設定完畢後按下"確定"。012
    3. 修改 xinetd 的設定檔。
      在我的系統下,此設定檔的位置是 C:\Program Files (x86)\ICW\etc\xinetd.d\nrpe,請根據你的環境找出檔案的所在位置。
      # only_from =     <ipaddress1> <ipaddress2>
      改為
      # only_from = 192.168.1.1
    4. 在監測主機 (192.168.1.1) 使用下列指令測試 NRPE 的設定。
      /usr/lib64/nagios/plugins/check_nrpe –H 192.168.1.2 –c ‘pdm_disk_c’ –t 30
      如果設定無誤的話,可以看到類似下列訊息
      DISK OK – usage C: 31037.0 MB (1.82% of total 1706686.0 MB)|’disk in use’=31037.0MB; ‘disk usage’=1.82%;90;95; ‘disk total’=1706686.0MB
      但是如果看到下列的訊息,就表示監測主機 (192.168.1.1) 無法與被監測主機 (192.168.1.2) 進行溝通。
      CHECK_NRPE: Error – Could not complete SSL handshake.
  5. 修改被監測主機 (192.168.1.2) 上的 nrpe 設定
    在我的系統下此檔案的位置是 C:\Program Files (x86)\ICW\nrpe.cfg,請根據你的環境找出檔案的所在位置。當你需要修改監測的參數或者是加上監測指令時,就必須修改這個檔案。這個檔案修改後,必須重新啟動 XinetServer 這個服務才會生效。

第二部分:設定監測主機 (192.168.1.1)

  1. 修改監測主機上的 localhost.cfg
    在 localhost.cfg (/etc/icinga/objects/localhost.cfg) 加入下列設定

    1. 設定主機資訊
      define host { 
        use windows-server 
        host_name win2008 
        alias win2008 
        address 192.168.1.2 
      }
    2. 設定主機群組
      define hostgroup { 
        hostgroup_name windows-servers; 
        alias Windows Servers; 
        members win2008; 
      }
    3. 設定服務
      define service { 
        use local-service 
        hostgroup_name windows-servers; 
        service description Disk – C: 
        check_command nrpe!pdm_disk_c 
      }
      除了 pdm_disk_c 之外,也可以加上其他的監測項目,像是內建的 pdm_disk_d、pdm_cpuload、pdm_memload、event_all_errors 等。

  2. 重新啟動監測主機上的 icinga 服務,指令為
    service icinga restart
進行至此,使用瀏覽器瀏覽 icinga 服務,應該可以就看到這些監測項目了。
011

嚴格來說,使用 winrpe 與使用 npre 並沒有多大的不同,設定檔 nrpe.cfg 的架構可說是完全一致。不過在使用 winrpe 時,仍有下列幾點須特別注意:
  1. winrpe 並不支援 dont_blame_nrpe 這個設定值,所以無法透過監測指令指定相關的參數。也就是說,任何監測參數的指定,都必須透過修改被監測主機 (192.168.1.2) 上的 nrpe.cfg 檔案來達成。
  2. winrpe 並不支援 allowed_hosts 這個設定值,取而代之是 xinetd 的存取控制 (請參考前面的步驟)。除此之外,也可以進一步使用 Windows 內建的防火牆限制存取權限。
  3. 修改設定檔時 (nrpe.cfg 與 nrpe) 請使用可以辨識 Linux 換行字元的編輯器。如果使用會自動轉換換行字元的編輯器 (如 WordPad ),可能導致格式的錯誤而無法正常地啟動服務。

About