貴官: "我裝好了 OpenNMS, 也設定 HTTPS/SSL, 可以用瀏覽器登入看到 Web Console 了, 嗯, 很好, .... 然後呢?"
NMS: "...."
呵呵, OpeNMS 也是電腦程式, 沒跟他講怎麼做, 他當然一動也不動囉, 所以在安裝完畢後, 我們第一步該做的, 就是要想辦法告訴 OpenNMS, 有哪些伺服器是我們想要請他監控的!!
Discovery 方法(1): 指定 IP 範圍 (Include Ranges)
貴官: "請幫我找出並監控一下 192.168.1.1~192.168.1.254 範圍內的伺服器!"
NMS: "Yes, Sir!! 請按照下面的步驟以及附圖操作, 就可了喔!!"
- 點上方主功能表的 "Admin"
- 進入 Admin 功能區後, 點 Operations 裡面的 "Configure Discovery"
- 按 Include Ranges 區塊裡面的 [Add New] 按鈕
- 輸入一段 IP 起迄位址, 例如: 192.168.1.1 ~ 192.168.1.254 (註: 輸入的範圍當然是要 OpenNMS 可以 ping 得到的, 請您按照您的環境修改)
- 按 [Add] 按鈕結束輸入
- 最後千萬記得按 [Save and Restart Discovery], 不然就前功盡棄了喔!!
- 點一下畫面左上角的 openNMS 圖示, 回到主畫面
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!! 請按照下面的步驟就可了喔!!"
- 點上方主功能表的 "Admin"
- 進入 Admin 功能區後, 點 Operations 裡面的 "Configure Discovery"
- 按 Specifics 區塊裡面的 [Add New] 按鈕
- 輸入 IP 192.168.2.200
- 按 [Add] 按鈕結束輸入
- 按 [Save and Restart Discovery]
- 點一下畫面左上角的 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, 並按照下面的步驟操作就可了喔!!"
- 點上方主功能表的 "Admin"
- 進入 Admin 功能區後, 點 Operations 裡面的 "Configure Discovery"
- 按 Include URLs 區塊裡面的 [Add New] 按鈕
- 輸入 "file:/opt/opennms/etc/my_ip.txt"
- 按 [Add] 按鈕結束輸入
- 按 [Save and Restart Discovery]
- 點一下畫面左上角的 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!! 請按照下面的步驟就可了喔!!"
- 點上方主功能表的 "Admin"
- 進入 Admin 功能區後, 點 Operations 裡面的 "Configure Discovery"
- 按 Exclude Ranges 區塊裡面的 [Add New] 按鈕
- 輸入 IP 192.168.1.64 ~ 192.168.1.127
- 按 [Add] 按鈕結束輸入
- 按 [Save and Restart Discovery]
- 點一下畫面左上角的 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)"
恭喜大家!! 總算是設定好了, 我們來看看根據這些 Discovery 的設定, OpenNMS 幫我們找到了哪些主機? 請點上方主功能表的 "Node List" 即可
以上是 OpenNMS 設定 Discovery 的大概描述, 除了 Include URLs 這個功能之外, 其他功能都能在 Web Console 直接做初步的設定, 比以前的版本要來得方變得多. 不過若是要做到比較精細的控制, 免不了還是要手動編輯一下 OpenNMS 的相關設定檔, 例如 Discovery 功能需要編輯 /opt/opennms/etc/discovery-configuration.xml, 所以還是讓我們來看一下這個謎樣的 xml 設定檔吧 ^^
<!-- 這裡設定 Specifics --> <!-- 這裡設定 Exclude Ranges --> |
相信看過後大家一定恍然大悟, 原來 Web Console 就是幫我們把剛剛的設定寫到 discovery-configuration.xml 裡面 (裡面的中文字除外 ^^), 若有需要, 以後自己直接編輯這個 xml 也是可以的.
xml 檔案裡面有幾個 attributes 值得大家注意一下:
- packets-per-second="1"
Discovery 每秒鐘只發出 "1" 個 ping 來判斷該 IP 有沒有主機存在, 所以若需要 discovery 的範圍很大的時候, 整個 discovery 程序就會很久. - timeout="2000"
Discovery 發出 ping 後若超過 "2" 秒鐘沒有收到回應, 則表示在這個 IP 沒有找到主機. 對於慢速網路 (例如要 ping 遠端 office 的主機), 這個值可以設定 "5000" - retries="1"
Discovery 對同一個 IP 會嘗試 ping "1" 次, 若超過這個次數都 timeout, 則 OpenNMS 判定這個 IP 沒有主機存在. 對於慢速或品質不好的網路, 最好設定 "3" - threads="1"
若需要 Discovery 的 IP 範圍很大, 一個一個 IP 排隊輪流慢慢 ping, 是要 ping 到民國幾年啊? 來啊, 多加幾個人手 (電腦手?) 大家同時來一起 ping 吧!! "1" 表示一個電腦手, 設得越大肯定會讓Discovery 程序加速完成, 但是也比較花費網路資源. 權衡之後, 通常 "3" ~ "5" 是比較可以接受的數值 - restart-sleep-time="86400000"
完成一次 Discovery 程序, 掃過所有該掃描的 IP 位址後, Discovery 就會累得跑去休息, 經過 "86400" 秒 (24小時), 再重新進行一次 Discovery 程序. - initial-sleep-time="300000"
OpenNMS 服務初啟動時, Discovery 先別急著忙, 請先等候 "300" 秒 (5分鐘), 等其他東西都 set (請用日語發音) 好, 再開始進行開機後第一次的 Discovery 程序.
所以就是:
- OpenNMS 服務開始
- 休息 initial-sleep-time (5分鐘)
- 開始 Discovery 程序
- 用 threads (1) 個電腦手努力 ping 喔~
- 每個電腦手一秒鐘發出 packets-per-second (1) 個 ping
- 發出 ping 後, 若收到回應, 就繼續下一個 IP
- 若對某個 IP 發出 ping 後等了 timeout (2秒) 沒有回應, 看一下 ping 這個 IP timeout 的次數有沒有超過 (>=) retries (1), 沒超過就再 ping 一次, 超過就當做這個 IP 沒有主機存在
- Discovery 把所有 IP 都 ping 過了, 去睡覺
- 休息 restart-sleep-time (24小時)
- 跳到步驟 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>
參考文件