近來 維護主機的量越來越多,連放假都要監看主機,一台一台連一台一台看,總覺得沒有效率,

所以上網Google一下主機監控軟體,發現有不少類似軟體,有的發簡訊有的發mail,有的號稱免費

但結果不是網頁失效就是免費試用,相對發簡訊也要收費,但考慮現在都使用智慧型手機,就算發mail

智慧型手機都一樣可以馬上收到.所以考慮使用sysmon來試試看,就算要發簡訊也可以搭配email to sms.

環境:

centos 6.2

套件:sysmon

sysmon需要搭配 gcc 與 flex 套件

所以我們先使用yum 來安裝

#yum -y install gcc 

#yum -y install flex

安裝完後,接下來就是安裝sysmon ,但sysmon並無法使用yum安裝,所以需要另外下載

# 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

安裝完後會出現類似下方的警示語

installing into /usr/local/bin
mkdir -p /usr/local/bin
mv /usr/local/bin/sysmond /usr/local/bin/sysmond.old
mv: rename /usr/local/bin/sysmond to /usr/local/bin/sysmond.old: No such file or directory
*** Error code 1 (ignored)

mv /usr/local/bin/sysmon /usr/local/bin/sysmon.old
mv: rename /usr/local/bin/sysmon to /usr/local/bin/sysmon.old: No such file or directory
*** Error code 1 (ignored)

cp sysmon sysmond /usr/local/bin
creating directory /usr/local/etc
mkdir -p /usr/local/etc

接著我們就可以開始設定

[root]/usr/local/etc# vi sysmon.conf  (如果在/usr/local/etc 底下找不到sysmon.conf ,我們可以到

/home/alien/sysmon-0.92.2/examples/sysmon.conf.dist 複製成/usr/local/etcsysmon.conf)

*****************************************************************************
root = "netmonitor"; //指定監測主機名稱 (根主機名稱) ### Global Configuration Options### /註解文字 config showupalso; //狀態網頁顯示 UP 主機 (若無此選項則僅顯示 Down) config numfailures 3; //測試失敗 3 次後發 E-Mail 給指定的聯絡人 config statusfile html "/var/www/html/index.html "; //指定監控網頁結果產生路徑 config logging file "/var/log/sysmond.log"; //指定 sysmon 系統記錄路徑 config sender "sysmon"; //指定寄件者帳號 config dnsexpire 7200; //指定 DNS 過期時間 (秒) config maxqueued 50; //指定最多可監控 50 個對象 config pageinterval 2; //若監控對象失敗則每隔 2 分鐘就發 E-Mail 給指定的聯絡人 config subject "%h is %u"; //通知 E-Mail 主旨 config pmesg "%H (%w) is %u at %t"; //通知 E-Mail 內文 ### Object Configuration Options### //註解文字 object netmonitor { //指定監控對象名稱 (第一個為監測主機本身)(需與root="XXX"的值一樣喔) ip "10.1.1.162"; //netmonitor 主機的 IP Address type ping; //測試協定使用 Ping desc "NetMonitor"; //監控對象的文字描述 contact "XXXXX@gmail.com"; //測試此主機失敗超過 3 次時發 E-Mail 給誰 }; object DNS server { //指定監控對象名稱 ip "10.1.1.101"; //監控 dns server的 IP Address亦可輸入主機名稱 type ping; //測試協定使用 Ping desc "dns.xxx.com.tw"; //監控對象的文字描述 dep "netmonitor"; //若監控主機 netmonitor 測試失敗則不進行此測試 (相依於 netmonitor) contact "XXXXXX@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 "xxxx@gmail.com"; //測試此主機失敗超過 3 次時發 E-Mail 給誰 contact_on both; //當測試主機 UP <-> Down 時發 E-Mail 給聯絡人 };

object seven.com.tw {         //指定監控對象名稱

ip "www.XXXX.com.tw";      //監控 XXXXX IP

type tcp;                    //測試協定使用 TCP

port 80;                    //測試協定使用80 網頁port

desc "web server";           //對監控對象的描述

dep "netmonitor";   //若監控主機 netmonitor 測試失敗則不進行此測試 (相依於 netmonitor)

contact "yihyuh.twu@gmail.com"; //測試此主機失敗超過 3 次時發 E-Mail 給誰

contact_on both;     //當測試主機 UP <-> Down 時發 E-Mail 給聯絡人

};

 

object dns2.XXXX.com.tw { //指定監控對象名稱

ip "dns2.XXXX.com.tw";  //監控 XXXXX IP

type udp;  //測試協定使用 TCP

port 53; //測試協定使用53 port

desc "dns2";  //對監控對象的描述

dep "netmonitor";  //若監控主機 netmonitor 測試失敗則不進行此測試 (相依於 netmonitor)

contact "XXXXXX@gmail.com"; //測試此主機失敗超過 3 次時發 E-Mail 給誰

contact_on both;  //當測試主機 UP <-> Down 時發 E-Mail 給聯絡人

};

*******************************************************************************

#/usr/local/bin/sysmond –t   檢查 sysmon.conf是否有設定錯誤

#/usr/local/bin/sysmond  &    sysmon 開始背景執行

#/usr/local/bin/sysmond stop  sysmon 停止執行

#/usr/local/bin/sysmond reload  sysmon 重啟

檢查 Listen Port 

 

#netstat -tnl | grep 1345
 tcp 0 0 0.0.0.0:1345 0.0.0.0:* LISTEN

到此如果都可正常執行就OK了!

我們可以開始看成果!

輸入此台網址,我們就可看到主機狀況了

sysmon  

綠色代表正常

紅色代表不正常

 

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)

選項

說明

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 給管理人員的資訊,詳細的變數如下表格所示:

選項

說明

%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)

%I

IP Address

%w

監控對象描述 (其實就是 Object 內 desc 內容)

%u

錯誤型態描述

%h

監控對象的 Hostname

%r

監控對象 UP 百分比

%V

Verbose History (not implemented)

%c

監控失敗重複次數 (since last success)

%C

監控成功重複次數 (since last failure)

%U

服務狀態 (UP or Down)

 

 

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  dns server  {                                        
        ip "10.1.1.162";                                
        type ping;                                        
        desc "dns.XXXX.com.tw";                      
        dep "netmonitor";  //若監控對象 netmonitor 測試失敗則不進行此測試
        contact "XXXXXXX@gmail.com";                     
 }; 

 

 

參考

 

不自量力 の Weithenn: Sysmon-網路監控及告警系統

 


創作者介紹
創作者 翰 的頭像

Linux 技術資源站

翰 發表在 痞客邦 留言(0) 人氣()