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

Sysmon-網路監控及告警系統

前言

[Sysmon] 是一個網路監測工具,主要提供高效能和高準確性的網路監測。目前 [Sysmon] 支援監控的協定有 Ping、PingV6、POP3、TCP、UDP、DNS、Radius、NNTP、SMTP、IMAP、x500、WWW、sysmon、SNMP 等測試,此工具允許讓任何對它有興趣的人使用於公共領域中,[Sysmon] 提供更好的性能和檢測能力,而不像其他的工具如 Nocmon (不是這個:nocmonitor)、Whatsup、Big Brother...等效能吃重的網路監測工具。

實作環境

安裝及設定

步驟1.安裝 sysmon 套件

切換至 Ports Tree 下開始安裝 Sysmon 套件

 #cd /usr/ports/net-mgmt/sysmon                           //切換至安裝路徑
 #make install clean                                      //安裝並清除安裝過程中不必要的檔案

安裝完成時系統會出現訊息告知您 sysmon 執行檔路徑 (屆時啟動 Sysmon 服務的執行檔)

 /usr/local/bin/sysmond

步驟2.修改 sysmon 設定檔 (sysmon.conf)

修改 sysmon 設定檔 sysmon.conf 內容如下 (以下設定檔內容為此次實作範例,實際情形請依個人環境自行設定)

 #cd /usr/local/etc                                       //切換到設定檔路徑
 #cp sysmon.conf.sample sysmon.conf                       //複製範例檔來進行修改 
 root = "netmonitor";                                     //指定監測主機名稱 (根主機名稱)
 ### Global Configuration Options###                      //註解文字
 config showupalso;                                       //狀態網頁顯示 UP 主機 (若無此選項則僅顯示 Down)
 config numfailures 3;                                    //測試失敗 3 次後發 E-Mail 給指定的聯絡人
 config statusfile html "/home/web/sysmon/index.html";    //指定監控網頁結果產生路徑
 config logging file "/var/log/sysmond.log";              //指定 sysmon 系統記錄路徑
 config sender "sysmon";                                  //指定寄件者帳號
 config dnsexpire 7200;                                   //指定 DNS 過期時間 (秒)
 config maxqueued 50;                                     //指定最多可監控 50 個對象
 config pageinterval 5;                                   //若監控對象失敗則每隔 5 分鐘就發 E-Mail 給指定的聯絡人
 config subject "%h is %u";                               //通知 E-Mail 主旨
 config pmesg "%H (%w) is %u at %t";                      //通知 E-Mail 內文
 ### Object Configuration Options###                      //註解文字
 object netmonitor {                                      //指定監控對象名稱 (第一個為監測主機本身)
        ip "192.168.1.30";                                //netmonitor 主機的 IP Address
        type ping;                                        //測試協定使用 Ping
        desc "NetMonitor";                                //監控對象的文字描述
        contact "weithenn@gmail.com";                     //測試此主機失敗超過 3 次時發 E-Mail 給誰
 };
 object Printer1 {                                        //指定監控對象名稱
        ip "192.168.1.10";                                //監控 Pirnter1 IP Address
        type ping;                                        //測試協定使用 Ping
        desc "Ping HP-3389 Printer";                      //監控對象的文字描述
        dep "netmonitor";                                 //若監控主機 netmonitor 測試失敗則不進行此測試 (相依於 netmonitor)
        contact "weithenn@gmail.com";                     //測試此主機失敗超過 3 次時發 E-Mail 給誰
        contact_on both;                                  //當測試主機 UP <-> Down 時發 E-Mail 給聯絡人
 };
 object Hinet-DNS {                                       //指定監控對象名稱
        ip "168.95.192.1";                                //監控 Hinet-DNS IP
        type dns;                                         //測試協定使用 DNS
        dns-query "hntp1.hinet.net";                      //DNS-Query 要求要送給誰
        desc "Test Hinet DNS";                            //對監控對象的描述
        dep "netmonitor";                                 //若監控主機 netmonitor 測試失敗則不進行此測試 (相依於 netmonitor)
        contact "weithenn@gmail.com";                     //測試此主機失敗超過 3 次時發 E-Mail 給誰
        contact_on both;                                  //當測試主機 UP <-> Down 時發 E-Mail 給聯絡人
 }; 

步驟3.啟動 sysmon 服務

修改 sysmon 設定檔完成後,在啟動 sysmon 服務以前建議您測試一下 sysmon 設定檔內容語法是否正確以免造成服務啟動失敗。

 sysmond -t                                               //測試 sysmon.conf 語法正確性 (沒有任何訊息為內容全部正確)
 sysmond &                                                //啟動 sysmon 服務 (Listen Port 1345),並丟到背景執行
 sysmond stop                                             //停止 sysmon 服務
 sysmond reload                                           //測試及檢查設定檔語法正確性 (服務重新啟動)
 sysmond -h                                               //顯示幫助訊息

啟動 sysmon 服務成功後請檢查看看 sysmon 是否啟動成功

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

步驟4.查看監控成果頁面

服務成功後即可開啟瀏覽器連結至 Sysmon 監控網頁,也就是您剛才設定檔中指定的 config statusfile html 路徑 (此次實作為 /home/web/sysmon/index.html)

ex. http://www.weithenn.org/sysmon/index.html

補充1.Sysmon - Global Configuration Options 中文翻譯

選項預設值說明
config showupalso;預設未載入總是顯示 UP 狀態,監控狀態 Html 網頁預設僅顯示 Down 狀態,加入此選項後會連 UP 主機狀態也顯示
config nologconnects;預設未載入使得常用來擷取 Log 的 python,java 等 Client 無法連接 Sysmond
config noheartbeat;預設未載入Sysmon 在開始測試監控主機前會送出一個 heartbeat 封包,這封包內容包括主機名稱及 Sysmon 版本及監控主機作業系統名稱,這初始封包即使不發送也不會影響之後的效能及設定
config nosubject;預設未載入當監控失敗時寄給聯絡人的郵件將沒有主旨
config statusfile [ text | html ] "/path/to/file";/usr/local/htdocs/index.html;將監控狀態匯出為文字檔或 Html 網頁,並指定匯出路徑
config logging syslog [ facility | none ];/var/log/sysmond.log將 sysmond 服務運作狀態及監控對象狀態寫入指定記錄檔內
config queuetime [ integer ];60 秒監控主機於指定時間進行監控對象的任務 (依監控主機效能自行考量)
config dnsexpire [ integer ];7200 秒監控主機內部 DNS Cache 時間
config dnslog [ integer ];600 秒監控主機 DNS Cache Log 時間
config pageinterval [ integer ];預設未載入設定當監控對象失敗時,系統每隔多久寄發提示 email 給您 (單位為分鐘)
config maxqueued [ integer ];50指定監控主機一次可測試多少個監控對象 (依監控主機效能自行考量)
config numfailures [ integer ];4指定當監控對象無回應的失敗次數達指定值後即通知聯絡人
config pmesg " string ";%H (%I) %w is %u %d請參考下方 Replacement Options 說明
config [ from | sender ] " username@example.com";sysmon可在寄出的郵件插入來源(from)及寄件者(sender)郵件地址
config subject "string";%h is %u請參考下方 Replacement Options 說明
config upcolor "string";綠色 (77ff77)監控對象 UP 時 Html 網頁顯示該列的顏色,可參考 [ Html Color Codes]
config downcolor "string";紅色 (ff5500)監控對象 Down 時 Html 網頁顯示該列的顏色,可參考 [ Html Color Codes]
config recentcolor "stringi";黃色 (ffff00)監控對象無回應但未達 numfailures 指定次數時 Html 網頁顯示該列的顏色,可參考 [ Html Color Codes]
config replyto "user@example.com";預設未載入可在寄出的郵件插入回覆人(reply-to)郵件地址
config errorsto "user@example.com";預設未載入可在寄出的郵件插入錯誤回覆(errors-to)郵件地址
config header "text";預設未載入可在寄出的郵件插入標頭(header)資訊
config pidfile "path";預設未載入可指定 sysmond 執行時的 PID 路徑 (基於安全性理由)
config html refresh seconds;60 秒可指定匯出的 Html 監控狀態網頁更新時間
config authkey "text";預設未載入當需要使用 密碼/認證 金鑰來登入存取時
include "path";預設未載入有其它設定檔案時可另外載入進來
root "object-name";my.default.gateway-obj指定監控主機名稱 (這是必要選項)

補充2.Sysmon - Object Configuration Options 中文翻譯

選項說明
also-notify "text";此功能尚未完成
contact "username@example.com";指定監控對象聯絡人
contact_on down|up|both;指定當監控對象狀態為 UP -> Down 或 UP -> Down 或 Both 時通知聯絡人
dep "object";附屬此監控對象,當指定的監控對象不是 UP 時則此監控將不執行
desc "text";描述監控的對象
ip "[hostname | ip-address ]";填入監控對象的 Hostname 或 IP Address
page "text";此功能尚未完成
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 檔案內字串
username "username";當監控型態為 POP3、IMAP、Radius 時才有效

補充3.Sysmon - Replacement Options 中文翻譯

此選項用常用來搭配 Global Configuration Options 內關於測試失敗時發送 Mail 給聯絡人的資訊,例如 PMESG (指定郵件的主體內容)、Subject (指定郵件主旨)...。

選項說明例如
%m監控主機的本機名稱 (Localhost Name)netmonitor.weithenn.org
%H顯示您在 Object 內指定的 ip 欄位名稱 (Hostname 或 IP Address)61.60.59.58
%s監控的服務 (Service)ping
%p埠數 (Port Number)-
%T目前時間 (hh:mm:ss)10:28:49
%t目前時間 (mm dd hh:mm:ss)Apr 26 10:28:49
%d監控失敗時間 (dd:hh:mm)00:00:02
%D監控失敗時間 (dd:hh:mm:ss)00d00h02m02s
%i監控中斷唯一識別 ID (Unique ID for outage)11775544070x8071600
%IIP Address61.60.59.58
%w警告描述 (其實就是 Object 內 desc 內容)Ping HP-3389 Printer
%u錯誤型態描述Host Down
%h監控對象的 Hostname若無 FQDN 則顯示 ip
%r監控對象 UP 百分比0.000000%
%VVerbose History (not implemented)-
%c監控失敗重複次數 (since last success)3
%C監控成功重複次數 (since last failure)0
%U服務狀態 (UP or Down)down

參考

[Sysmon Home Page]

[sysmon-0.91.19 Configuration Documentation]

[sysmon 官網的 ScreenShots]

[Ray事件簿 - sysmond(System Monitoring Utility)主機監控]

[NET網誌 » Blog Archive » Sysmond網路狀況]

[ Stenly.com 網頁型-色碼表]

Me FAQ

Q1.object Printer1 has no relationship. It will not be monitored.?

Error Meaage:

當執行 sysmond -t 時跳出如下錯誤訊息,無法監控指定的對象?

 #sysmond -t
 object Printer1 has no relationship. It will not be monitored.

Ans:

原因在於設定檔內容中除了 root object 之外其它的 object 都必須要指定 dep 至 root,否則便出現訊息說指定的監控對象沒有建立關系無法監控。

 object Printer1 {                                        
        ip "192.168.1.10";                                
        type ping;                                        
        desc "Ping HP-3389 Printer";                      
        dep "netmonitor";                                 //若監控對象 netmonitor 測試失敗則不進行此測試
        contact "weithenn@gmail.com";                     
 }; 

Q2.WARNING: Possible missing ; in object between lines 45 and 46.?

Error Meaage:

當執行 sysmond -t 時跳出如下錯誤訊息,無法監控指定的對象?

 #sysmond -t
 WARNING: Possible missing ; in object between lines 45 and 46.

Ans:

出現這樣的訊息通常就是說那幾行附近你可能結尾忘了加上 ;(分號)

Q3.incomprehensible service state boundary name on line 50 in /usr/local/etc/sysmon.conf?

Error Meaage:

當執行 sysmond -t 時跳出如下錯誤訊息,無法監控指定的對象?

 #sysmond -t
 incomprehensible service state boundary name on line 50 in /usr/local/etc/sysmon.conf

Ans:

出現這樣的訊息通常就是說那行你不應該加上 "" (雙引號)

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