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

 

呵呵, 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 圖示, 回到主畫面

 

  

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)" 

 

恭喜大家!! 總算是設定好了, 我們來看看根據這些 Discovery 的設定, 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

Egg Chang 的部落格

Egg Chang 發表在 痞客邦 留言(1) 人氣(4,638)