Egg Chang 的部落格

跳到主文

雜七雜八 IT 生涯

部落格全站分類:數位生活

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 1月 03 週一 201112:44
  • OpenNMS 之 SNMP Part 2

在上一篇拙作裡面, 筆者大略的展示了 OpenNMS SNMP 的效果, 還不錯吧? 筆者用這招 "拍" 死很多案子不順利牽拖網路硬體的廠商 (廠商: 原來我在你心中只是一隻蒼蠅...) .心動不如行動, 行動不如叫別人動... 啊, 別這樣啦, 還是請貴官動個手做看看, 這樣底下的工程師才不會在 m01 上面 po 文罵長官豬頭.

回到正題, 這次我們的目標是:

讓 OpenNMS 可以透過 SNMP 收集 Windows 的資料

此招有四個步驟, 如下:

  1. 在 Windows 2003 Server 上面安裝 SNMP Service
  2. 在 Windows 2003 Server 上面 "設定" SNMP Service
  3. 在 Windows 2003 Server 上面安裝 SNMP Informant
  4. 設定 OpenNMS 來搜刮 (Collect) Windows SNMP 的資料

以下就對每個步驟詳細說明囉.

 

1. 在 Windows 2003 Server 上面安裝 SNMP Service

執行 "新增或移除程式": "開始" --> "控制台" --> "新增或移除程式"

 Add/Remove Program

(1). 按 "新增/移除 Windows 元件"

(2). 點選 "Management and Monitoring Tools" (註: 不是勾選)

(3). 按 "詳細資料"

(4). 勾選 "Simple Network Management Protocol (SNMP) 與 "WMI SNMP 提供者"

(5). 按 "確定"

(6). 按 "下一步"

接下來就是 Windows 安裝程式的 "標準作業程序": 遇到到 "下一步" 就果決的按下去, 看到螢幕上有逐漸長(ㄓㄤˇ)長(ㄔㄤˊ)的藍色光條, 就喝著咖啡兩眼無神的盯著, 直到安裝完畢!!

W2K3 Install SNMP Service 

 

2. 在 Windows 2003 Server 上面 "設定" SNMP Service

安裝完了, 可得要設定一下, 否則 小心!! 駭客就在你身邊

請: 開始功能表 --> 控制台 --> 系統管理工具 --> 服務

Start configure Windows SNMP Service 

(1). 找到 SNMP Service, 並用滑鼠雙擊打開內容

(2). 切換頁籤到 "代理程式"

(3). 填入聯絡人與位置 (非必填)

(4). 勾選全部的服務 ("實體" 與 "資料連結及子網路" 預設沒有勾選)

(5). 請繼續看下一張圖片 ...

Configure SNMP Service 1 

重點來了, SNMP 可以提供很多 "敏感" 的資料, 我們總不會允許任意電腦來查詢 SNMP 資料吧?

(6). 切換到 "安全性" 頁籤

(7). 按 "新增" 以增加群體名稱 (Community Name), 這時候會出現 "SNMP 服務設定" 畫面

(8). 群體權利選擇 "唯讀", 群體名稱隨便取一個 (目前先取 MYSNMP 好了, 這相當於是 SNMP 與 NMS 之間的通關密語)

(9). 按 "新增", 回到 "安全性的頁面"

(10). 點選 "可從所有主機接受 SNMP 封包" (註: 這是不良示範!! 在 Production 環境應該只允許 "從下列主機接受 SNMP 封包", 並新增 OpenNMS 的主機就好, 以免駭客猜到我們簡單的通關密語, 並進一步取得 SNMP 資料)

(11). 按 "確定", 即可完成 SNMP 的設定

Configure SNMP Service 2 

 

3. 在 Windows 2003 Server 上面安裝 SNMP Informant

安裝並設定好 Windows SNMP Service 其實就可以運作了, 不過 Windows 所附的 SNMP Service 功能實在有點陽春 ... 幸好有佛心的 SNMP Informant 提供免費的 Standard 版本給大家使用, 那就不客氣的來用囉  

(註: 這個可以略過不裝直接跳到步驟4, 不會影響運作)

(1). 瀏覽 SNMP Informat 的官網 http://www.wtcs.org/informant

(2). 點 Download

(3). 在 Choose the file 選項選擇 "SNMP Informat-STD v1.6 (current production release)

(4). 按 "Download Now", 即可開始下載 informant-std-1.6.zip

Download SNMP Informant 

打開剛剛下載的zip檔案 (推薦用7-zip, 另一個 Open Source 的佳作), 請先閱讀 "Installation and Configuration Guide.pdf" ..... 啊, 你沒有閱讀!! Bad Admin, 去牆邊罰站 10 分鐘 (典故來自於 qmail 的安裝指引).

開玩笑的 請執行 "informant-std-16.exe, 接下來就又是 Windows 安裝程式的標準作業程序了

SNMP Informat Installer  

OK!! Windows 2003 Server 端的作業到此結束, 下台一鞠躬... 啊 這樣還不行啦 OpenNMS 也是要設定一下的, 請各位長官再耐心一下下囉

 

4. 設定 OpenNMS 來搜刮 (Collect) Windows SNMP 的資料

OpenNMS 預設會以 public 的群體名稱 (Community Name) 來偵測 Node 是否有提供 SNMP 服務, 有些設備 (例如事務機, 網路設備) 的 SNMP 群體名稱 (Community Name) 也是 public, 因此大家有時候會發現, 即使沒有設定 OpenNMS 的 SNMP, 有的 Node 也會 "自動" 奉上他的 SNMP 資料. 當然這是很不安全的作法, 時機壞壞, 有開方便之門的話, 請務必上個密碼鎖.

好啦, 開始設定我們的 OpenNMS 囉.

OpenNMS Web Console 的主功能表 "Admin" --> "Configure SNMP Community Names by IP"

Start configure SNMP on OpenNMS 

因為我們只設定 1 台目標主機, 因此只需要填寫 "First IP Address", 以及 "Community String" 即可. 請填上我們剛剛設定的那台 Windows 2003 Server 的 IP, 以及 "MYSNMP" 後按 "Submit"

Configure SNMP on OpenNMS 

由於 OpenNMS 的 Capd 預設每 24 小時才重新掃描一次, 請大家回去睡覺等明天.... 啊, 等等!! 這樣不就每改一次設定就要睡覺一次? 呵呵, 當然不是這樣囉!! OpenNMS 雖然 Open, 但是並不笨 我們可以用 OpenNMS 提供的 Rescan 功能強迫 OpenNMS 的 Capd 立即掃描該 Node 的服務是否有改變. 所以, 請找到該 Node (主功能表的 Node List) 後, 點 "Rescan"

Force rescan 

點完後會出現確認的畫面, 請按 "Rescan" 按鈕 (為何這裡特地要再確認一次? " 筆者到現在還努力思考箇中原因)

Confirm force rescan 

確認後會回到 Node 的畫面, 但是.... Rescan 前跟 Rescan 後的畫面好像沒什麼改變耶? OpenNMS 還沒回神嗎? 呵呵, 請大家稍安勿躁, 注意一下 Recent Events 裡面多出了一個黃色的 Warning "A Services scan has been forced on this node", 原來 Rescan 已經在進行中, 只是需要一點時間, 所以請大家去喝杯咖啡 (到現在為止總共喝幾杯了?) 後, 再回來看結果.

Start rescan forcely 

等掃描完畢之後, 畫面上看起來就不一樣了, 多了一個 "SNMP Attributes" (如果設定都對的話), 其中的 Name 就是電腦名稱 (Computer Name), "Location" = SNMP 設定時我們填寫的 "位置", "Contact" 則是我們在設定 SNMP 時所填寫的 "聯絡人"

 Forced rescan has completed 

Ok, 設定完畢!! 過幾個小時候, 就可以從 Resource Graphs 看到上一篇文章所展示的資源歷史圖表. 祝大家設定順利囉!!

 

大家: (舉手) 為什麼 Location 與 Contact 都是亂碼!? 你不是在 Windows SNMP Service 設定的時候敲了中文字嗎?

筆者: 因為 Windows SNMP Service 回應給 OpenNMS 的 Location/Contact 資料是 Big5 編碼, OpenNMS 不認得.

大家: 你吹牛 (參考7-11的廣告)

筆者: .....=_=

 

好吧, 證明一下, 下圖是 Wireshark (Open Source 的 Network Sniffer) 所抓到的 SNMP 封包, 這是 OpenNMS 對我們的 Windows Server 進行查詢 (getBulkRequest) 後, Windows SNMP Service 回應 (get-response) 給 OpenNMS 的自白書. 筆者特別標示出這個封包裡面的一些資料:

b1 60 a6 db a4 76 ab f5 ... 

SNMP Packet 

以繁體中文的 Big5 編碼來解析這些16進位, 我們會發現 (請用內碼輸入法)

b1 60 = 常

a6 db = 自

a4 76 = 己

ab f5 = 挖

....

以此類推

Big5 

由於 OpenNMS 收到這些資料後, 以為是 Unicode 編碼, "警察廣播電台" 聽成 "警察伯伯變態" (註: 我的6歲女兒真的這樣問我), 就直接塞到 PostgreSQL 裡面, 於是就變成大家在畫面上所看到的亂碼了, 了沒?

大家: (將信將疑) 那怎樣才可以避免?

筆者: (斬釘截鐵) 打英文!

大家: .... (丟紙杯)

文章標籤
全站熱搜
創作者介紹
創作者 Egg Chang 的頭像
Egg Chang

Egg Chang 的部落格

Egg Chang 發表在 痞客邦 留言(0) 人氣(6,975)

  • 全站分類:
  • 個人分類:OpenNMS
▲top

個人資訊

Egg Chang
暱稱:
Egg Chang
分類:
數位生活
好友:
累積中
地區:

熱門文章

  • ()OpenNMS 之 SNMP Part 2
  • ()OpenNMS 之 SNMP Part 1
  • ()OpenNMS 之 Discovery - 請幫我監控一些伺服器吧
  • ()OpenNMS 之 SNMP Part 4
  • ()OpenNMS 之 SNMP Part 3
  • ()在 CentOS 7 上面安裝 Mantis (Microsoft AD 認證, xdebug)
  • ()Redmine 3.4.4: 設定 Windows AD 認證
  • ()CentOS 7 安裝 PHP 5.6.x/PHP 7.0.x
  • ()OpenNMS 之 Notification Part 1
  • ()安裝 OpenNMS 1.12.6 on CentOS 6.5

文章分類

  • OpenNMS (0)
  • 軟體開發與Team (0)
  • OpenVPN (0)
  • 系統安裝 (0)
  • Mantis (0)
  • Redmine (0)
  • 未分類文章 (1)

最新文章

    最新留言

    動態訂閱

    文章精選

    文章搜尋

    誰來我家

    JS

    eggchang
    PIXNET Logo登入

    參觀人氣

    • 本日人氣:0
    • 累積人氣:70,434