近來 維護主機的量越來越多,連放假都要監看主機,一台一台連一台一台看,總覺得沒有效率,
所以上網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.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"; };
參考