貴官: "我裝好了 OpenNMS, 也設定 HTTPS/SSL, 可以用瀏覽器登入看到 Web Console 了, 嗯, 很好, .... 然後呢?"
NMS: "...."

OpenNMS 的 Web Console 

呵呵, OpeNMS 也是電腦程式, 沒跟他講怎麼做, 他當然一動也不動囉, 所以在安裝完畢後, 我們第一步該做的, 就是要想辦法告訴 OpenNMS, 有哪些伺服器是我們想要請他監控的!!

Discovery 方法(1): 指定 IP 範圍 (Include Ranges)

貴官: "請幫我找出並監控一下 192.168.1.1~192.168.1.254 範圍內的伺服器!"
NMS: "Yes, Sir!! 請按照下面的步驟以及附圖操作, 就可了喔!!"

  1. 點上方主功能表的 "Admin"
  2. 進入 Admin 功能區後, 點 Operations 裡面的 "Configure Discovery"
  3. Include Ranges 區塊裡面的 [Add New] 按鈕
  4. 輸入一段 IP 起迄位址, 例如: 192.168.1.1 ~ 192.168.1.254 (註: 輸入的範圍當然是要 OpenNMS 可以 ping 得到的, 請您按照您的環境修改)
  5. 按 [Add] 按鈕結束輸入
  6. 最後千萬記得按 [Save and Restart Discovery], 不然就前功盡棄了喔!!
  7. 點一下畫面左上角的 openNMS 圖示, 回到主畫面

 

OpenNMS 指定 Discovery 的 IP 範圍   

NMS: "報告長官! 目前監控的目標是 192.168.1.1~192.168.1.254 (254 個 IP)"


貴官: "ㄟ? 怎麼畫面上看還是看不到東東?"
NMS: "別急~ 別急~, 我已經開始努力的工作啦, 請長官先去喝杯咖啡, 10分鐘後再回來看初步結果"

呵呵~ 趁 OpenNMS 正在努力工作的當下, 我們在來看看還有哪些 Discovery 的方法囉

Discovery 方法(2): 指定 IP (Specifics)

貴官: "請幫我找出並監控一下 192.168.2.200 這台伺服器!"
NMS: "Yes, Sir!! 請按照下面的步驟就可了喔!!"

  1. 點上方主功能表的 "Admin"
  2. 進入 Admin 功能區後, 點 Operations 裡面的 "Configure Discovery"
  3. Specifics 區塊裡面的 [Add New] 按鈕
  4. 輸入 IP 192.168.2.200
  5. 按 [Add] 按鈕結束輸入
  6. 按 [Save and Restart Discovery]
  7. 點一下畫面左上角的 openNMS 圖示, 回到主畫面

 

NMS"報告長官! 目前的設定是監控以下目標:

     1. 192.168.1.1~192.168.1.254 (共 254 個 IP)
     2. 192.168.2.200 (共 1 個 IP)"

Discovery 方法(3): 把 IP 清單放在文字檔 (Include URLs)

貴官: "我有一堆有的沒的沒有規則的 IP, 例如:
     192.168.3.30
     192.168.5.59
     192.168.7.100
     而且可能會隨時改變, 要怎麼設定啊?

 NMS: "Yes, Sir!! 請您把這些 IP 記錄到一個文字檔案, 並放到我的主機的某個位置, 例如: /opt/opennms/etc/my_ip.txt, 並按照下面的步驟操作就可了喔!!"

  1. 點上方主功能表的 "Admin"
  2. 進入 Admin 功能區後, 點 Operations 裡面的 "Configure Discovery"
  3. 按 Include URLs 區塊裡面的 [Add New] 按鈕
  4. 輸入 "file:/opt/opennms/etc/my_ip.txt"
  5. 按 [Add] 按鈕結束輸入
  6. 按 [Save and Restart Discovery]
  7. 點一下畫面左上角的 openNMS 圖示, 回到主畫面

 

NMS"報告長官! 目前的設定是監控以下目標:

     1. 192.168.1.1~192.168.1.254 (共 254 個 IP)
     2. 192.168.2.200 (共 1 個 IP)
     3. 192.168.3.30, 192.168.5.59, 192.168.7.100 (共 3 個 IP)" 

Discovery 方法(4): 排外清單 (Exclude Ranges)

貴官: "哎呀, 192.168.1.64~192.168.1.127 這範圍的 IP 是給 User 用, 可以不用監控嗎?"
(背景音: 總經理的怒吼 "誰這麼大膽敢一直 ping 我的電腦~~")
NMS: "Yes, Sir!! 請按照下面的步驟就可了喔!!"

  1. 點上方主功能表的 "Admin"
  2. 進入 Admin 功能區後, 點 Operations 裡面的 "Configure Discovery"
  3. 按 Exclude Ranges 區塊裡面的 [Add New] 按鈕
  4. 輸入 IP 192.168.1.64 ~ 192.168.1.127
  5. 按 [Add] 按鈕結束輸入
  6. 按 [Save and Restart Discovery]
  7. 點一下畫面左上角的 openNMS 圖示, 回到主畫面

 

NMS"報告長官! 目前的設定是監控以下目標:

     1. 192.168.1.1~192.168.1.63 (共 63 個 IP) + 192.168.1.128~192.168.1.254 (共 127 個 IP)
     2. 192.168.2.200 (共 1 個 IP)
     3. 192.168.3.30, 192.168.5.59, 192.168.7.100 (共 3 個 IP)" 

OpenNMS Discovery 的設定狀況 

恭喜大家!! 總算是設定好了, 我們來看看根據這些 Discovery 的設定, OpenNMS 幫我們找到了哪些主機? 請點上方主功能表的 "Node List" 即可

OpenNMS Node List 

以上是 OpenNMS 設定 Discovery 的大概描述, 除了 Include URLs 這個功能之外, 其他功能都能在 Web Console 直接做初步的設定, 比以前的版本要來得方變得多. 不過若是要做到比較精細的控制, 免不了還是要手動編輯一下 OpenNMS 的相關設定檔, 例如 Discovery 功能需要編輯 /opt/opennms/etc/discovery-configuration.xml, 所以還是讓我們來看一下這個謎樣的 xml 設定檔吧 ^^


<?xml version="1.0" encoding="UTF-8"?>
<discovery-configuration
    xmlns="http://xmlns.opennms.org/xsd/config/discovery" threads="1"
    packets-per-second="1" initial-sleep-time="300000"
    restart-sleep-time="86400000" retries="1" timeout="2000">

    <!-- 這裡設定 Include Ranges -->
    <include-range retries="1" timeout="2000">
        <begin xmlns="">192.168.1.1</begin>
        <end xmlns="">192.168.1.254</end>
    </include-range>

    <!-- 這裡設定 Specifics -->
    <specific retries="1" timeout="2000">192.168.2.200</specific>

    <!-- 這裡設定 Exclude Ranges -->
    <exclude-range>
        <begin xmlns="">192.168.1.64</begin>
        <end xmlns="">192.168.1.127</end>
    </exclude-range>

    <!-- 這裡設定 Include URLs -->
    <include-url retries="1" timeout="2000">file:/opt/opennms/etc/my_ip.txt</include-url>

</discovery-configuration>

相信看過後大家一定恍然大悟, 原來 Web Console 就是幫我們把剛剛的設定寫到 discovery-configuration.xml 裡面 (裡面的中文字除外 ^^), 若有需要, 以後自己直接編輯這個 xml 也是可以的.

xml 檔案裡面有幾個 attributes 值得大家注意一下:

  1. packets-per-second="1"
    Discovery 每秒鐘只發出 "1" 個 ping 來判斷該 IP 有沒有主機存在, 所以若需要 discovery 的範圍很大的時候, 整個 discovery 程序就會很久.
  2. timeout="2000"
    Discovery 發出 ping 後若超過 "2" 秒鐘沒有收到回應, 則表示在這個 IP 沒有找到主機. 對於慢速網路 (例如要 ping 遠端 office 的主機), 這個值可以設定 "5000"
  3. retries="1"
    Discovery 對同一個 IP 會嘗試 ping "1" 次, 若超過這個次數都 timeout, 則 OpenNMS 判定這個 IP 沒有主機存在. 對於慢速或品質不好的網路, 最好設定 "3"
  4. threads="1"
    若需要 Discovery 的 IP 範圍很大, 一個一個 IP 排隊輪流慢慢 ping, 是要 ping 到民國幾年啊? 來啊, 多加幾個人手 (電腦手?) 大家同時來一起 ping 吧!! "1" 表示一個電腦手, 設得越大肯定會讓Discovery 程序加速完成, 但是也比較花費網路資源. 權衡之後, 通常 "3" ~ "5" 是比較可以接受的數值
  5. restart-sleep-time="86400000"
    完成一次 Discovery 程序, 掃過所有該掃描的 IP 位址後, Discovery 就會累得跑去休息, 經過 "86400" 秒 (24小時), 再重新進行一次 Discovery 程序.
  6. initial-sleep-time="300000"
    OpenNMS 服務初啟動時, Discovery 先別急著忙, 請先等候 "300" 秒 (5分鐘), 等其他東西都 set (請用日語發音) 好, 再開始進行開機後第一次的 Discovery 程序.

 

所以就是:

  1. OpenNMS 服務開始
  2. 休息 initial-sleep-time (5分鐘)
  3. 開始 Discovery 程序
  4. threads (1) 個電腦手努力 ping 喔~ 
    1. 每個電腦手一秒鐘發出 packets-per-second (1) 個 ping
    2. 發出 ping 後, 若收到回應, 就繼續下一個 IP
    3. 若對某個 IP 發出 ping 後等了 timeout (2秒) 沒有回應, 看一下 ping 這個 IP timeout 的次數有沒有超過 (>=) retries (1), 沒超過就再 ping 一次, 超過就當做這個 IP 沒有主機存在
  5. Discovery 把所有 IP 都 ping 過了, 去睡覺
  6. 休息 restart-sleep-time (24小時)
  7. 跳到步驟 3, 繼續一整個 Discovery 程序

 

另外大家應該會發現, xml 檔案除了一開頭有這些參數之外, 後續的 specific, include-range, include-url 也有類似的參數? 是的!! 這是 OpenNMS 很有彈性的地方, discovery-configuration.xml 一開頭的參數設定可以當做是 Discovery 程序的預設值, 若後續的 specific, include-range, include-url 沒有特別指定的話, 就直接套用這個預設值, 否則套用自己指定的參數.

例如我們要 Discovery 兩個網段:

192.168.1.1~192.168.1.254 (位於本地)
192.168.120.1~192.168.120.254 (位於遠端辦公室, 兩地透過 VPN 連線)

本地的網段通常是高速網路, 用預設值比較沒問題, 遠端辦公室的 VPN 通常比較慢速且不穩定, 因此可以考慮以下的設定方式:

   <!-- 本地高速網路, 品質保證 -->
   <include-range>
        <begin xmlns="">192.168.1.1</begin>
        <end xmlns="">192.168.1.254</end>
    </include-range>

   <!-- 遠端辦公室 VPN, 多 retry 幾次, timeout 設定久一點比較好 -->
   <include-range retries="5" timeout="10000">
        <begin xmlns="">192.168.1.1</begin>
        <end xmlns="">192.168.1.254</end>
    </include-range>

 

參考文件

OpenNMS 官網對 Discovery 的說明

 

 

創作者介紹

Egg Chang 的部落格

Egg Chang 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • PowerOp
  • 好文!有計劃寫更多 OpenNMS 相關的文章嗎?
  • 會的, 預計每週一篇, 當然還是要看本身是否忙碌, 感謝支持!

    Egg Chang 於 2010/12/21 08:39 回覆