62 期 - Sysmon 輕便型網路監控告警系統

網管人雜誌

          本文刊載於 網管人雜誌第 62 期 - 2011 年 3 月 1 日出刊,NetAdmin 網管人雜誌 為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它或透過下列圖示連結至博客來網路書店訂閱它。



文章目錄

1、前言
2、實作環境
3、在 FreeBSD 上安裝及設定 Sysmon 套件
4、在 CentOS 上安裝 Sysmon 套件
5、Sysmon.conf 設定檔內容
6、啟動 Sysmon 服務
7、測試告警機制
          監控對象運作正常
          監控對象網路斷線 (服務剛失效)
          監控對象網路斷線 (通知管理人員)
          告警郵件及郵件發送訊息
8、Sysmon.conf 設定檔 - 通用設定詳解 (Global)
9、Sysmon.conf 設定檔 - 物件設定詳解 (Object)
10、Sysmon.conf 設定檔 - 變數詳解
11、結語



1、前言

          Sysmon 為一輕便型的網路服務狀態監控告警工具,它設計的主要精神是提供高效能、高準確率、低負載的網路服務狀態監控,因此 Sysmon 服務運作於監控主機時對於系統效能影響相當低,相對於其它開放源始碼網管系統例如 Nagios、Cacti、Bigsister…等來說在效能表現上更為出色。目前 Sysmon 支援監控的網路協定項目有 Ping、PingV6、POP3、TCP、UDP、DNS、Radius、NNTP、SMTP、IMAP、x500、WWW、SNMP 等。

          本文將說明在 FreeBSDCentOS 作業系統上如何安裝及設定 Sysmon 套件,讓您輕鬆建構網路服務狀態監控告警系統,當 Sysmon 告警系統架設完成後觀看監控網頁時它利用顏色的區別讓您可以一目了然目前企業營運中各項網路服務運作的狀態 (綠色-正常、黃色-警告、紅色-失敗),並且在指定監控的網路服務項目失敗達設定次數時馬上發送 Email 通知管理人員,您也可結合市面上許多業者提供的 Email to SMS 服務,如此一來當公司重要服務運作失效時您可以在第一時間內收到告警簡訊通知。



2、實作環境

FreeBSD 8.1-RELEASE
  • 主機名稱: monitor1.weithenn.org
  • 安裝套件: sysmon-0.92.2

CentOS 5.4 (2.6.18-164.el5)
  • 主機名稱: monitor2.weithenn.org
  • 安裝套件: sysmon-0.92.2、gcc-4.1.2-48.el5、flex-2.5.4a-41.fc6



3、在 FreeBSD 上安裝及設定 Sysmon 套件

          在 FreeBSD 上安裝 Sysmon 套件以前建議您先更新 Ports Tree 以確保您安裝的套件為最新且穩定的版本,完成 Ports Tree 更新後請切換到 sysmon 套件安裝目錄執行 make install clean 指令進行安裝套件的動作,安裝完成後您可以在 /usr/local/etc 資料夾下看到預設範例設定檔 sysmon.conf.sample,而 Sysmon 設定檔內容解說將留待後續一起說明。
# cd /usr/ports/net-mgmt/sysmon
# make install clean
# cd /usr/local/etc
# cp sysmon.conf.sample  sysmon.conf



4、在 CentOS 上安裝 Sysmon 套件

          由於 Sysmon 套件並未被收錄在 YUM (Yellowdog Updater Modified) Repositories 中,因此我們必須自行下載、解壓縮、編譯、安裝 Sysmon 套件,為了確保您的主機可以順利編譯此套件請在開始編譯以前確定您的 CentOS 系統已經有安裝 gccflex 套件,至於 Sysmon 設定檔內容解說將留待後續一起說明。
# yum –y install gcc flex
# wget ftp://puck.nether.net/pub/jared/sysmon-0.92.2.tar.gz
# tar zxvf sysmon-0.92.2.tar.gz
# cd sysmon-0.92.2
# ./configure
# cd src
# make
# make install



5、Sysmon.conf 設定檔內容

          sysmon.conf 設定檔內容可分為二個部份來看一是 「通用設定 (Global Configuration)」  另一部份則是 「物件設定 (Object Configuration)」 ,通用設定為設定此台監控主機的整體運作系統項目 例如: 監控網頁產生的路徑、監控主機運作的記錄檔路徑、監控對象服務失效幾次後發 Email 給管理人員、每隔幾分鐘若監控對象服務仍失效則再發 Email、通知管理人員 Email 的主旨及內文…...等,而物件設定則定義要監控對象的網路服務項目例如: 使用 Ping 監控主機或印表機或其它裝置、使用 SMTP/POP3 檢測公司郵件伺服器是否運作正常、使用 WWW 檢測公司網頁伺服器是否運作正常……等。

          下列設定檔內容為監控三個對象的網路服務,測試此台監控主機能否對外溝通 (Hinet DNS)、測試區網內二台印表機 (Ricoh / Epson Printer) 網路運作正否正常,此台監控主機每 60 秒就會測試所有設定項目、當測試對象連續3次失敗後就發 Email 給指定管理人員、當監控對象服務從運作正常到服務失效或者從服務失效回到運作正常也都會發 Email 給指定聯絡人,以下為範例設定檔內容:
# vi /usr/local/etc/sysmon.conf
   root = "netmonitor";
   ### Global Configuration Options###
   config showupalso;
   config numfailures 3;
   config statusfile html "/home/web/index.html";
   config logging file "/var/log/sysmond.log";
   config sender "sysmon";
   config dnsexpire 7200;
   config maxqueued 50;
   config pageinterval 5;
   config subject "%h is %u";
   config pmesg "%H (%w) is %u at %t";
   ### Object Configuration Options###
   object netmonitor {
       ip "10.10.25.71";
       type ping;
       desc "NetMonitor";
       contact "weithenn@weithenn.org";
   };
   object Printer1 {
       ip "10.10.25.7";
       type ping;
       desc "Ping Epson AL-C1100 Printer";
       dep "netmonitor";
       contact "weithenn@weithenn.org";
       contact_on both;
   };
   object Printer2 {
       ip "10.10.25.8";
       type ping;
       desc "Ping Ricoh Aficio MP1100 Printer";
       dep "netmonitor";
       contact "weithenn@weithenn.org";
       contact_on both;
   };
   object Hinet-DNS {
       ip "168.95.192.1";
       type dns;
       dns-query "hntp1.hinet.net";
       desc "Test Hinet DNS";
       dep "netmonitor";
       contact "weithenn@weithenn.org";
       contact_on both;
   };



6、啟動 Sysmon 服務

          當您將設定檔依需要編修完成後於啟動 Sysmon 服務以前建議您執行 sysmond –t 指令來檢查 sysmon.conf 設定檔內容是否有語法上的錯誤以免造成服務啟動失敗,當確定設定檔語法無誤後即可啟動 Sysmon 服務,下列指令依序為檢查設定檔語法、啟動 Sysmon 服務、停止 Sysmon 服務、重新載入 Sysmon 服務 (用於修改設定檔後重新啟動服務)、確定 Listen Port 1345有開啟。
# /usr/local/bin/sysmond –t
# /usr/local/bin/sysmond &
# /usr/local/bin/sysmond stop
# /usr/local/bin/sysmond reload
# sockstat |grep sysmond          //檢查 Listen Port (For FreeBSD)
   root     sysmond    12550 3  tcp4   *:1345                *:*
# netstat -tnl | grep 1345        //檢查 Listen Port (For CentOS)
   tcp      0      0 0.0.0.0:1345    0.0.0.0:*             LISTEN

          啟動 Sysmon 服務後系統便會建立監控服務狀態網頁在您剛才建立的 sysmon.conf 設定檔中指定的路徑產生 /home/web/index.html,而 Sysmon 服務運作的狀態記錄檔則是產生在 /var/log/sysmond.log。



7、測試告警機制

監控對象運作正常

          啟動 Sysmon 服務後當您開啟瀏覽器連結至監控網頁後您會看到如下圖一內容,在下圖中我們可以看到目前各監控對象其網路服務皆運作正常 (綠色-正常), Up N 為監控主機已測試監控對象網路服務 2 次且運作正常次數。

圖1、各監控對象皆運作正常(綠色-正常)

監控對象網路斷線 (服務剛失效)

          我們將接於 Epson印表機的網路線拔除後 (模擬網路斷線) 在下圖二中可以看到監控主機無法觸及到監控對象 Epson 印表機後,將 Up N 數值歸 0 並且將 Down N 數值加 1 表示監控主機第1次無法觸及到監控對象並服務失效的狀態寫入 Status 欄位中,另外也將服務失效時間點寫入 Time Failed 欄位中方便管理人員查詢問題發生時間點,同時在監控表格中該列顏色由原本運作正常的綠色轉為警告的黃色

圖2、Epson印表機網路剛斷線 (黃色-警告)

監控對象網路斷線 (通知管理人員)

          當監控主機連續 3 次 (Down N) 無法觸及到監控對象 Epson 印表機時,此服務監測失敗數值達到我們在 sysmon.conf 設定檔中的失效通知設定值 (config numfailures 3),此時監控主機立刻發送 Email 給管理人員,同時在監控表格中該列顏色由原本警告的黃色轉為服務失效的紅色,如下圖三所示。

圖3、Epson印表機網路斷線超時 (紅色-失敗)

模擬監控對象連線恢復

          當 Epson 印表機網路恢復連線後此時監控主機又可以監控到 Epson 印表機,將監控失效數值 Down N 數值歸 0 並把監控成功數值 Up N 數值從 1 開始計算,並將服務恢復時間點寫入 Time Up 欄位以便管理人員了解服務再次上線時間,此時監控主機會寄發 Email 通知管理人員 Epson 印表機再次上線,同時在監控表格中該列顏色由原本運作失敗的紅色轉為運作正常的綠色。

圖4、Epson印表機網路恢復 (綠色-正常)

告警郵件及郵件發送訊息

          當監控主機進行3次監控任務都無法偵測到Epson 印表機時會發出告警 Email 通知管理人員 (Up > Down),待 Epson 印表機網路連線恢復時也會通知管理人員 (Down > Up),圖五為管理人員收到的告警郵件主旨、內容、監控對象狀態等資訊,因此管理人員可以很輕易了解哪個監控對象在哪時發生問題或重新上線,而圖六為監控主機上發送告警郵件的記錄檔內容,當然您查看 /var/log/sysmond.log 也可發現相關內容。

圖5、告警郵件內容

圖6、監控主機郵件記錄檔



8、Sysmon.conf 設定檔 – 通用設定詳解 (Global)

          上述範例設定檔為一個簡單的監控示範,但 Sysmon 就只有這樣簡單的功能嗎? 當然不是!! 因此下列表格將列出 sysmon.conf 設定檔中所有可以使用的參數選項預設值及功能說明:





9、Sysmon.conf 設定檔 – 物件設定詳解 (Object)




10、Sysmon.conf 設定檔 – 變數詳解

          下列表格中的變數常用來搭配通用設定中關於測試失敗時發送 Email 給管理人員的資訊,例如 PMESG (指定郵件的主體內容) 其預設值為 %H (%I) %w is %u %d 因此告警郵件的主體內容為【主機名稱或IP 位址】【監控對象描述】 is 【錯誤型態描述】【監控失敗時間】 例如 10.10.25.7 (Ping Epson AL-C1100 Printer) is Unpingable at Nov 5 14:29:51、Subject (指定郵件主旨)其預設值為 %h is %u 因此告警郵件的主旨為【監控對象的 Hostname】 is 【錯誤型態描述】例如 10.10.25.7 is Unpingable,詳細的變數如下表格所示:




11、結語

          Sysmon 雖然與其它開放源始碼網管系統例如 Nagios、Cacti、Bigsister 相形比較之下並沒有炫麗的面板、精致的圖表、為數眾多的 Plug-ins,但也正因為如此 Sysmon 更專注於監控服務的效能上因此您可使用一台普通 PC 即可擔任企業網路服務監控的重任,也由於 Sysmon 簡單明瞭的特性因此不管是初次建置或之後災難重建作業上花費在建構 Sysmon 監控系統的時間相較於其它網管系統相信所花費時間將更短更快速復原。並且經過上述的演練測試後相信您已經了解到 Sysmon 監控系統的高效能、高準確率、低負載特性,對於 IT 預算不多的中小企業來說不失為一個便宜、有效、效能好的監控系統方案。