站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

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

網管人雜誌

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

訂閱: 網管人雜誌

前言

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

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

實作環境

FreeBSD 8.1-RELEASE

CentOS 5.4 (2.6.18-164.el5)

在 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

在 CentOS 上安裝 Sysmon 套件

由於 Sysmon 套件並未被收錄在 YUM (Yellowdog Updater Modified) Repositories 中,因此我們必須自行下載、解壓縮、編譯、安裝 Sysmon 套件,為了確保您的主機可以順利編譯此套件請在開始編譯以前確定您的 CentOS 系統已經有安裝 gcc 及 flex 套件,至於 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

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;
  };

啟動 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

檢查 Listen Port (For FreeBSD)

 #sockstat |grep sysmond
  root     sysmond    12550 3  tcp4   *:1345                *:*

檢查 Listen Port (For CentOS)

 #netstat -tnl | grep 1345
  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。

測試告警機制

監控對象運作正常

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

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

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

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

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

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

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

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

模擬監控對象連線恢復

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

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

告警郵件及郵件發送訊息

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

圖五、告警郵件內容 圖六、監控主機郵件記錄檔

Sysmon.conf 設定檔參數說明

通用設定詳解 (Global)

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

選項說明
config showupalso;預設監控網頁僅會顯示 Down 對象狀態需要加入此設定才會將 UP 對象狀態也一併顯示
config nologconnects;不開放給例如 python, java 的 Client 擷取主機 Log 訊息
config noheartbeat;Sysmond 服務在開始測試監控對象前會送出一個 heartbeat 封包,這個封包內容包括主機名稱及 Sysmon 版本及監控主機作業系統名稱,這個初始封包即使不發送也不會影響之後的運作效能及設定
config nosubject;當監控對象運作失敗時寄給管理人員的郵件將沒有主旨
config statusfile [ text | html ] "/path/to/file";指定監控網頁匯出格式為純文字檔或 HTML 網頁,並指定監控網頁匯出路徑
config logging syslog [ facility | none ];將 sysmond 服務運作狀態及監控對象狀態寫入指定記錄檔內
config queuetime [ integer ];監控主機於指定時間內執行監控對象的任務,請自行依監控主機效能調整,預設為 60 秒
config dnsexpire [ integer ];監控主機 DNS Cache 時間,預設為 7200 秒
config dnslog [ integer ];監控主機 DNS Cache Log 時間,預設為 600 秒
config pageinterval [ integer ];當監控對象持續失效時,系統每隔多久寄發提示 Email 給您,數值單位為分鐘
config maxqueued [ integer ];指定監控主機一次可測試多少個監控對象,請自行依監控主機效能調整,預設為監控 50 個對象
config numfailures [ integer ];當監控對象無回應的失敗次數達指定值後即通知聯絡人,預設值為 4 次
config pmesg " string ";郵件主體內容,預設值為 %H (%I) %w is %u %d,請參考下方變數設定詳解
config [ from | sender ] " username@example.com";為寄送出去的郵件插入來源及寄件者郵件地址,預設寄件者名稱為 sysmon
config subject "string";郵件主旨,預設值為 %h is %u,請參考下方變數設定詳解
config upcolor "string";監控對象 UP 時監控網頁顯示該列的顏色,預設值為綠色 77ff77
config downcolor "string";監控對象 Down 時監控網頁顯示該列的顏色,預設值為紅色 ff5500
config recentcolor "string";監控對象 Warning 時監控網頁顯示該列的顏色,預設值為黃色 ffff00
config replyto "user@example.com";將寄送出去的郵件插入回覆人 (Reply To) 的郵件地址
config errorsto "user@example.com";將寄送出去的郵件插入錯誤回覆 (Error) 郵件地址
config header "text";將寄送出去的郵件插入標頭 (Hearder) 資訊
config pidfile "path";指定 sysmond 服務執行時的 PID 路徑
config html refresh seconds;指定監控狀態網頁重新整理的更新時間,預設值為 60 秒
config authkey "text";需要使用 密碼/認證 金鑰來登入存取時使用
include "path";需要其它設定檔案時可另外呼叫載入進來
root "object-name";指定監控主機名稱 (這是必要選項不可忽略)

物件設定詳解 (Object)

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

選項說明
also-notify "text";此功能在目前版本中尚未完成
contact "username@example.com";當監控對象失敗後寄送給指定管理人員的 Email 地址
contact_on down|up|both;當監控對象狀態為 UP -> Down 或 Down -> UP 或 Both 時通知管理人員
dep "object";附屬此監控對象,當上層的監控對象不是 UP 時則此附屬的監控項目將不執行,例如監控網路交換器及伺服器當交換器失效時也不監控伺服器
desc "text";填入一段對監控對象的描述文字
ip "[hostname | ip-address ]";填入監控對象的主機名稱或 IP 位址
page "text";此功能在目前版本中尚未完成
username "username";當監控型態為 POP3、IMAP、Radius 時此設定才有效
password "password";當監控型態為 POP3、IMAP、Radius 時此設定才有效
port [ integer ];當監控型態為 TCP、UDP 時必須指定 Port Number
reverse;當監控其它 sysmonds 時或接收備用監控時使用
secret "string";當監控型態為 Radius 時此設定才有效
type "[ping ...]";監控型態支援 Ping、PingV6、POP3、TCP、UDP、DNS、Radius、NNTP、SMTP、IMAP、x500、WWW、sysmon、SNMP
snmp-type "[ low...]";SNMP 監控型支援 low、high、rate、exact、range、reboot、 compare
snmp-octets;當使用 SNMP OID 時可以自行指定 snmp-rate bytes/sec
url "string";當監控型態為 WWW 時此設定才有效
urltext "string-to-search-for";尋找您指定的 url 檔案內字串

變數詳解

下列表格中的變數常用來搭配通用設定中關於測試失敗時發送 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,詳細的變數如下表格所示:

選項說明
%m監控主機的本機名稱 (Localhost Name)
%H顯示您在 Object 內指定的 IP 欄位名稱 (Hostname 或 IP Address)
%s監控的服務 (Service)
%p埠數 (Port Number)
%T目前時間 (hh:mm:ss)
%t目前時間 (mm dd hh:mm:ss)
%d監控失敗時間 (dd:hh:mm)
%D監控失敗時間 (dd:hh:mm:ss)
%i監控中斷唯一識別 ID (Unique ID for outage)
%IIP Address
%w監控對象描述 (其實就是 Object 內 desc 內容)
%u錯誤型態描述
%h監控對象的 Hostname
%r監控對象 UP 百分比
%VVerbose History (not implemented)
%c監控失敗重複次數 (since last success)
%C監控成功重複次數 (since last failure)
%U服務狀態 (UP or Down)

結語

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

Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com