OpenNMS 心得

在一間連鎖企業當 IT 人員, 分公司遍佈全台灣, 而各分公司業務狀況都是透過 MPLS VPN 回傳, 加上 VoIP 網路電話, 監控系統等資訊設備, 還有 ISP 的 VPN 設備, 就算可以自己寫 shell script 或批次檔來檢查, 也需要不少時間.

之前試用過 Cacti , 可以透過 SNMP 協定詳細列出各主機狀況, 不過以前安裝的設備很少啟用這個功能, 加上要發通報需要額外安裝插件(plug-in), 所以覺得不適合現在的公司環境使用.

後來發現有 Nagios 這套軟體, 看起來功能很多, 不過發現設定檔需要以文字檔儲存, 考慮到一個系統不應該只由一個人會用與維護(至少如果我離職, 不想接電話回答或解釋 :p ), 所以還是放棄.

再來又看到 OpenNMS , 雖然是自由軟體(開放軟體, 名稱或相關授權可能要再確認), 以 Java 開發, Windows / Linux 都可以安裝, 所以初期以 Linux 環境測試, 將來要正式上線的話, 還可以裝在 Windows 上.

既然有工具, 就要先想想工具的用途, 目前公司內已經有:
1. 各分公司的後台主機(業務用).
2. 總公司後台主機(業務用).
3. 總公司機房有一台主機, 已經有同事寫了幾個檢測分公司後台主機的程式.

所以整理一下:
1. 各分公司的後台主機寫幾個排程, 定期做資料庫的整理與備份.
2. 總公司機房主機, 維持檢查公司專用的業務程式是否順利.
3. OpenNMS 專門用來檢查網路與主機是否存活與通報. (SNMP 資源查詢則列入下一階段準備.)

安裝方式就省略, 用 Debian + Oracle Java + PostgreSQL + OpenNMS , 可以找到不少文章.

安裝之前其實就有先想, 資訊系統在公司內的結構與特性, 可以有三種屬性:
1. 地點: 各分公司
2. 功能: VoIP, 後台主機, 監控系統
3. 時間: 後台主機不關機, POS 機則會關機.

所以裝好 OpenNMS 之後, 先確認幾個功能目標:
1. 如何列出所有的設備?
2. 哪些設備需要確認存活與通報?
3. 怎樣的情況才算存活? (例如後台主機與 POS 機使用時機不同)
4. 哪些情況需要通報?
5. 是否會有重複通報的情況? 例如 ISP 斷線, 則該分公司所有主機都連不上, 會不會發的通報很多, 反而讓工作人員很煩.

第1項比較簡單, OpenNMS 把設備稱為 node , 列出設備稱為 discovery , 所以把要列出的 IP , 列在 discovery include range 內即可. OpenNMS 會以常用的服務去查, 例如: ICMP(ping), http, ftp, snmp, smtp 等.
第2項則是有一個 manage 清單, 如果是業務人員帶筆電到分公司, 連線狀況本來就不穩定, 可以在第一項就不列在 include range , 或在 manage 清單中取消勾選.
而通報系統是採用 e-mail 方式, 利用公司現有的 mail server 發信給 IT 人員.
第3到第4項就還在測試, 雖然看到一些網站說可以設定哪些設備有離線時間, 不過還沒成功.
第5項則是希望有階段性的判斷, 例如 ISP 網路設備不通, 後台也不通, 就不用重複發通知, 這個就不強求了.

而下班前, 就發生某分公司斷電, 收到了幾封 mail , 雖然不希望常收到這種信, 不過也表示環境大致上結構是對的, 剩下通報頻率(例如 ISP 瞬斷, 雖然也該修理不過業務可以勉強運作)等.