A. 如何實現zabbix報警郵件中可以顯示ip地址
說明:
Zabbix監控服務端、客戶端都已經部署完成,被監控主機已經添加,Zabiix監控運行正常。
實現目的:
在Zabbix服務端設置郵件報警,當被監控主機宕機或者達到觸發器預設值時,會自動發送報警郵件到指定郵箱。
具體操作:
以下操作在Zabbix監控服務端進行
備註:Zabbix監控服務端
操作系統:CentOS
主機名:zabbix.osyunwei.com
郵件報警有兩種情況:
1、Zabbix服務端只是單純的發送報警郵件到指定郵箱,發送報警郵件的這個郵箱賬號是Zabbix服務端的本地郵箱賬號(例如:[email protected]),只能發送,不能接收外部郵件。
2、使用一個可以在互聯網上正常收發郵件的郵箱賬號(例如:[email protected]),通過在Zabbix服務端中設置,使其能夠發送報警郵件到指定郵箱。
第一種:使用Zabbix服務端本地郵箱賬號發送郵件
一、安裝sendmail或者postfix
yum install sendmail #安裝
service sendmail start #啟動
chkconfig sendmail on #設置開機啟動
yum install postfix
service postfix start
chkconfig postfix on
CentOS 5.x 默認已經安裝好sendmail
CentOS 6.x 默認已經安裝好postfix
sendmail和postfix只需要安裝一個即可並開啟服務即可。
二、安裝郵件發送工具mailx
yum install mailx #安裝
CentOS 5.x
編譯安裝mailx,直接yum安裝的mailx版本太舊,使用外部郵件發送會有問題。
yum remove mailx #卸載系統自帶的舊版mailx
下載mailx:
http://nchc.dl.sourceforge.net/project/heirloom/heirloom-mailx/12.4/mailx-12.4.tar.bz2
tar jxvf mailx-12.4.tar.bz2 #解壓
cd mailx-12.4 #進入目錄
make #編譯
make install UCBINSTALL=/usr/bin/install #安裝
ln -s /usr/local/bin/mailx /bin/mail #創建mailx到mail的軟連接
ln -s /etc/nail.rc /etc/mail.rc #創建mailx配置文件軟連接
whereis mailx #查看安裝路徑
mailx -V #查看版本信息
echo "zabbix test mail" |mail -s "zabbix"
[email protected]
#測試發送郵件,標題zabbix,郵件內容:zabbix test
mail,發送到的郵箱:[email protected]
三、配置Zabbix服務端郵件報警
1、打開Zabbix
管理-示警媒介類型-Email
名稱:Email
類型:電子郵件
SMTP伺服器:zabbix.sa.huanqiu.com
SMTP HELO:zabbix.sa.huanqiu.com
SMTP電郵:[email protected]
已經用:勾選
存檔
備註:zabbix.sa.huanqiu.com為Zabbix監控端主機名稱,建議修改,否則使用默認的localhost.localdomain發送郵件會被當做垃圾郵件攔截。
2、設置Zabbix用戶報警郵箱地址
組態-用戶-Admin (Zabbix Administrator)
切換到示警媒介
添加
類型:Email
收件人:[email protected]
其他默認即可,也可以根據需要設置
狀態:已啟用
存檔
3、設置Zabbix觸發報警的動作
組態-動作-創建動作
名稱:Action-Email
默認接收人:故障{TRIGGER.STATUS},伺服器:{HOSTNAME1}發生:
{TRIGGER.NAME}故障!
默認信息:
告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
恢復信息:打鉤
恢復主旨:恢復{TRIGGER.STATUS}, 伺服器:{HOSTNAME1}:
{TRIGGER.NAME}已恢復!
恢復信息:
告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
已啟用:打鉤
切換到操作選項
新的
操作類型:送出信息
送到用戶:添加
默認信息:打鉤
用戶:勾選Admin
選擇
僅送到:Email
存檔
四、測試Zabbix報警
關閉Zabbix客戶端服務
service zabbix_agentd stop
查看[email protected]郵箱,會收到報警郵件
再開啟Zabbix客戶端服務
service zabbix_agentd start
查看[email protected]郵箱,會收到恢復郵件
使用Zabbix服務端本地郵箱賬號發送郵件設置完成。
第二種:使用外部郵箱賬號發送報警郵件設置
一、關閉sendmail或者postfix
service sendmail stop #關閉
chkconfig sendmail off #禁止開機啟動
service postfix stop
chkconfig postfix off
備註:
使用外部郵箱賬號時,不需要啟動sendmail或者postfix
如果在sendmail或者postfix啟動的同時使用外部郵箱發送報警郵件,首先會讀取外部郵箱
配置信息。
二、安裝郵件發送工具mailx
yum install mailx #安裝
CentOS 5.x 編譯安裝mailx,直接yum安裝的mailx版本太舊,使用外部郵件發送會有問題。
yum remove mailx #卸載系統自帶的舊版mailx
下載mailx:
http://nchc.dl.sourceforge.net/project/heirloom/heirloom-mailx/12.4/mailx-12.4.tar.bz2
tar jxvf mailx-12.4.tar.bz2 #解壓
cd mailx-12.4 #進入目錄
make #編譯
make install UCBINSTALL=/usr/bin/install #安裝
ln -s /usr/local/bin/mailx /bin/mail #創建mailx到mail的軟連接
ln -s /etc/nail.rc /etc/mail.rc #創建mailx配置文件軟連接
whereis mailx #查看安裝路徑
mailx -V #查看版本信息
三、配置Zabbix服務端外部郵箱
vi /etc/mail.rc #編輯,添加以下信息
set [email protected] smtp=smtp.163.com
set [email protected]
smtp-auth-password=123456
set smtp-auth=login
:wq! #保存退出
echo "zabbix test mail" |mail -s "zabbix" [email protected]
#測試發送郵件,標題zabbix,郵件內容:zabbix test
mail,發送到的郵箱:[email protected]
#這時候,郵箱[email protected]會收到來自[email protected]的測試郵件
四、配置Zabbix服務端郵件報警
1、打開Zabbix
管理-示警媒介類型-創建媒體類型
名稱:Sendmail
類型:腳本
腳本名稱:sendmail.sh
已啟用:勾選
存檔
2、設置Zabbix用戶報警郵箱地址
組態-用戶-Admin (Zabbix Administrator)
切換到示警媒介-添加
類型:Sendmail
收件人:[email protected]
其他默認即可,也可
以根據需要設置
狀態:已啟用
存檔
3、設置Zabbix觸發報警的動作
組態-動作-創建動作
名稱:Action-Email
默認接收人:故障{TRIGGER.STATUS},伺服器:{HOSTNAME1}發生:
{TRIGGER.NAME}故障!
默認信息:
告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
恢復信息:打鉤
恢復主旨:恢復{TRIGGER.STATUS}, 伺服器:{HOSTNAME1}:
{TRIGGER.NAME}已恢復!
恢復信息:
告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
已啟用:打鉤
切換到操作選項
新的
操作類型:送出信息
送到用戶:添加
默認信息:打鉤
選擇用戶:Admin
選擇
僅送到:Sendmail
存檔
4、添加Zabbix服務端郵件發送腳本
cd /usr/local/zabbix/share/zabbix/alertscripts #進入腳本存放目錄
vi sendmail.sh #編輯,添加以下代碼
#!/bin/sh
echo "$3" | mail -s "$2" $1
:wq! #保存退出
chown zabbix.zabbix
/usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh
#設置腳本所有者為zabbix用戶
chmod +x /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh
#設置腳本執行許可權
五、測試Zabbix報警
關閉Zabbix客戶端服務
service zabbix_agentd stop
查看[email protected]郵箱,會收到報警郵件
再開啟Zabbix客戶端服務
service zabbix_agentd start
查看[email protected]郵箱,會收到恢復郵件
使用外部郵箱賬號發送報警郵件設置完成。
至此,Zabbix郵件報警設置完成。
B. 求助zabbix 簡訊告警腳本
2.填上發簡訊腳本的名稱 zabbix 實戰簡訊報警之調用簡訊介面3.注意zabbix_server.conf裡面的配置,指定腳本放的位置及賦予腳本執行和屬主zabbix
C. 請問網上常說的mon是什麼意思
Mon的中文意思是:星期一(Monday)。
星期的英文及縮寫如下:
星期日:Sunday(Sun.)
星期二:Tuesday(Tues.)
星期三:Wednesday(Wed.)
星期四:Thursday(Thur./Thurs.)
星期五:Friday(Fri.)
星期六:Saturday(Sat.)
歷史起源
星期作為時間周期最早起源於巴比倫。世界各國通用一星期七天的制度最早由羅馬皇帝君士坦丁大帝制定,他在公元321年3月7日正式宣布7天為一周,這個制度一直沿用至今。而在中國,明末清初基督教在中國傳播時,星期才逐漸被人們所知曉。民國時期規定使用公歷之後,星期才逐步普及起來。
D. zabbix監控怎麼添加報警人
zabbix監控添加主機,報警、監控的設置
根據使用zabbix這么久的經驗,總結了一套zabbix比較實用的添加主機、監控報警的使用流程,供大家參考。
一:添加處理方法,就是如何報警
打開zabbix的管理------處理方法----create media type:
我用的是腳本發郵件的方式來報警的,腳本名字為mail.py。指的一提的是腳本存放位置,我的腳本是放在/usr/local/zabbix/bin/目錄下面,在這里不寫目錄的據對路徑,直接寫腳本名字,他的路徑設置是在zabbix伺服器端的配置文件中設置的,在zabbix_server.conf配置文件中設置:AlertScriptsPath=/usr/local/zabbix/bin/
二:添加zabbix用戶和組,設置其郵箱地址等信息
1:打開zabbix的管理------用戶---選擇用戶組下拉----create user group:
填寫個組名,設置需要的許可權直接保存就成,其他的不用填寫和選擇。
2:打開zabbix的管理------用戶---選擇用戶下拉----create user:
填寫用戶信息
3:添加報警介質,就是報警方式,因為是報警,【信息】那項就不用勾選,信息一般就是伺服器信息發生變化時報警,這個一般沒有什麼意義,所以不勾選,不過你也可以選擇,根據個人喜好。類型的話就是選擇處理發放中的報警介質,選擇你添加的。然後可以保存信息,完成添加用戶(Permissions那項沒有不填寫)。
三:報警觸發器觸發的動作設置
當監控項中的觸發器達到你設置的報警值之後,需要執行操作來發送郵件等動作。具體設置:
1:打開zabbix的系統配置---操作---- 選擇事件源為觸發器------create action:
2:觸發條件設置:
3:詳細操作設置,即滿足觸發條件之後執行什麼動作,這里一般設置為發郵件之類的,設置收郵件的用戶(建議每個組對應一個用戶,這樣發郵件的時候容易設置發送對象):
四:zabbix中常用到的幾個key
Zabbix的key可以理解為zabbix的命令,執行這個key可以得到相應的結果。
1:監控埠的:net.tcp.port[,3306]
/usr/local/zabbix/bin/ -s192.168.8.120 -knet.tcp.port[,3306] 返回1為192.168.8.120的埠3306存在,0為不存在
2:監控進程的:proc.num[mysqld]
/usr/local/zabbix/bin/zabbix_get -s192.168.8.120 -kproc.num[mysqld] 返回值為192.168.8.120中mysqld的進程數量
/usr/local/zabbix/bin/zabbix_get -s192.168.8.120 -kproc.num[] 返回值為192.168.8.120中所有的進程數量
3:查看CPU核數的:system.cpu.num 返回值為伺服器CPU的核數
4:查看系統的系統啟動時間和當前時間:system.boottime、system.localtime 返回值為系統啟動時間和當前時間,為時間戳格式
5:查看系統的簡單信息:system.uname 返回值為192.168.8.120的系統信息,類似於linux系統的uname -a命令
6:查看windowns系統當前網卡的進出流量:net.if.out[{HOST.NAME},bytes]、net.if.in[{HOST.NAME},bytes]和linux系統的key:net.if.out[eth0,bytes]、net.if.in[eth0,bytes]一樣
/usr/local/zabbix/bin/zabbix_get -s192.168.8.120 -knet.if.in[192.168.8.120,bytes] 返回值為IP為192.168.8.120的進流量,此值為計數值,單位為bytes,減去上次取得值,除以時間間隔為此段時間內的平均流量
/usr/local/zabbix/bin/zabbix_get -s192.168.8.120 -knet.if.out[192.168.8.120,bytes] 返回值為IP為192.168.8.120的出流量,此值為計數值,單位為bytes,減去上次取得值,除以時間間隔為此段時間內的平均流量
7:查看系統內存大小:vm.memory.size[total],返回值單位bytes
8:查看文件的大小: vfs.file.size[file] 如: vfs.file.size[/var/log/syslog] 返回的是/var/log/syslog的大小,單位是:bytes
9:查看文件是否存在:vfs.file.exists[file] 文件如果存在返回0,不存在返回1
10:查看文件的MD5:vfs.file.md5sum[file]查看小文件的MD5,返回為MD5值(好像只有2.0以上的版本有這個key)
11:自動發現網卡並監控流量和自動發現分區及分區掛載情況的兩個key:net.if.discovery,vfs.fs.discovery,windows和linux監控模板中都有這模板(2.0以上版本),應用即可
以上是常用的key,其實監控伺服器無非就是內存、硬碟佔用、CPU負載、流量、伺服器和埠等情況。如果要監控其他的可以自定義key來實現,本人喜歡自定義key,寫個腳本來返回,得到自己想要的監控結果,zabbix在這塊做的非常好,擴展性很強,支持各種腳本來實現自定義的key。
要啟用自定義key,需要在客戶端的配置文件中啟用UnsafeUserParameters=1參數,然後在配置文件的最下面來定義key,如:
UserParameter=free.disk,/usr/local/zabbix/bin/disk.py
free.disk為key的名字,/usr/local/zabbix/bin/disk.py為伺服器端調用free.disk這個key時執行的腳本,其結果就是free.disk的返回值。腳本可以是任何可以運行的腳本語言。
五:創建監控模板和監控項
其實在zabbix伺服器端安裝完成之後,就有許多自帶的監控模板,基本上可以滿足大眾化的監控需求,不過其中有許多是沒有必要的監控項或是自己不感興趣的,比較冗餘,所以要做好監控的話,還是自定義模板和監控項,這個監控模板可以修改zabbix系統自帶的,也可以自己創建。以下為自己創建監控模板。
1:創建監控模板:
打開zabbix的系統配置---模板----create template:
填寫模板名字和模板所在組保存即可。
E. 如何把報警記錄的消息文本輸出到靜態文本或IO域中
可以用腳本讀取報警記錄,然後寫入到靜態文本或IO域中:假如需要讀取報警記錄中的報警內容和報警點分別讀取到變數tag1和tag2中,參考腳本如下:
Dim cc1
Set cc1=CreateObject("adodb.connection")
Dim snam1,Rtname
Dim ServerName1
Set ServerName1 = HMIRuntime.Tags("@ServerName")
ServerName1.Read
Dim DatasourceNameRT
Set DatasourceNameRT = HMIRuntime.Tags("@DatasourceNameRT")
DatasourceNameRT.Read
Rtname=DatasourceNameRT.Value
snam1=ServerName1.Value
strcon="provider=WinCCOLEDBProvider.1;catalog=" & Rtname & ";data source=" & snam1 & "\WinCC"
cc1.ConnectionString=strcon
cc1.CursorLocation=3
cc1.open
Dim sqlstr
Dim rst
Dim t1
Set rst=CreateObject("adodb.recordset")
sqlstr="ALARMVIEW:Select * from algviewcht WHERE DateTime >''2013-12-1 12:00:00'' and DateTime <''2013-12-1 12:10:00'' "
Set t1=CreateObject("adodb.command")
t1.commandtype=1
Set t1.activeconnection=cc1
t1.commandtext=sqlstr
Set rst=t1.execute
rst.movefirst
''''rst.fields("text1").value 『』對應報警內容
''''rst.fields("text2").value 『』對應報警點
'' 報警內容寫入變數中
dim tag1,tag2
set tag1=hmiruntime.tags("tag1")
set tag2=hmiruntime.tags("tag1")
tag1.read
tag1.write rst.fields("text1").value
tag2.read
rag2.write rst.fields("text2").value
rst.close
Set rst=Nothing
cc1.close
Set cc1=Nothing
Set ServerName1=Nothing
Set printgrid=Nothing
Set t1=Nothing
set tag1=nothing
set tag2=nothing
以上腳本是查詢了13年12月1號12點0分到12點10分這十分鍾內的報警,然後選取第一條報警內容讀取到變數中
F. zabbix 告警等級怎麼設置
zabbix的告警通知非常靈活,支持的通知類型有Email、Jabber、sms、script 。其在設備需要修護時,同樣可以提供同nagios 一樣的設備維護期間,暫停告警的功能有,而且其相對於nagios 更加靈活。本篇就針對zabbix的告警和設備維護功能進行下說明。 一、media types 告警通知 本篇以腳本通知為例進行說明 1、配置AlertScriptsPath # vim /etc/zabbix/zabbix_server.conf 找到# AlertScriptsPath=${datadir}/zabbix/alertscripts 行,增加如下內容 AlertScriptsPath=/etc/zabbix/alertscripts 配置完成後,需要重啟zabbix_server服務生效,在後面media type 寫入的腳本名稱就會從上面的配置目錄中查找並執行。 2、創建media type 步驟為:登錄 zabbix web 頁面------Administration--------Media types--------Create Media Type(右上角) ,如下圖: 配置完成後,save保存即可。 3、創建Action 步驟為:登錄 zabbix web 頁面---- Configuration ---- Actions ---- Create action , 如下圖 subject為發送主題,message為發送內容(通過message內容的自定義,可以例如在告警時,將其他相關信息也進行通知,可以從側面了解整個主機的運行情況---某次面試時面試官曾提過的需求),這兩者的內容都可以很方便的進行更改。勾選了Recovery message 選項,會在監控項恢復時也會給一個恢復的提示。 condeitions 選項中設置的是觸發通知的條件,默認情況下只有A、B兩項 ,這里可以設置觸發級別、主機組、主機、觸發值、應用等 。舉例說明下: 1、可以根據告警級別進行通知,如severity 級別大於等於average時,通知OPS運維人員,級別為Disater時通知部門經理或者BOSS (這需要配置兩個action); 2、也可以根據時間進行定義,如只在工作時間進行告警通知; 3、如果你喜歡的話,也可以指定不同主機組通知到不同的人; 而且所有條件之間的關系可以是AND或者OR ,默認情況下都是AND,即所有條件都滿足時,觸發通知。 註:個別主機,如DB主機,晚上有備份任務導致晚上某段時間過載(同時又不是所有主機都這樣,又不想增大觸發條件的話),可以在configuation ---hosts 里的items 選項里配置通知的時間范圍,那裡也有 time period 配置選項(從另一方面也反映了zabbix的靈活,有宏觀調控,也有微觀調控,適用性很強) 。不過要盡可能的都在actions 里進行配置,因為這一般查看具體條件都是在這里 。 下圖是action的Operations部分,該項是必填項: Operation details 是一個比較強的配置項,這里主要有三個知識點---Escalations、remote command 和 event acknowledged,其中Escalations、remote command比較重要 。 operation details 的 step部分主要和escalations 相關,在監控場景中,如果你一天收到100+的簡訊告警,真有一天「狼」真來了估計你也不會注意到。有了escalations功能,可以實現如下配置(需配置多條operation): 1、在單位時間內(step ration)發送的總的通知次數(to - from +1 次),並通知到相應的組或人; 2、假如條件1中設置的是1800秒內發送1-5 次給OPS運維人員,結果運維人員在該時間段未能處理;我們就可以再增加一個Operations,指定from 5 to 10 (第5到10條告警)通知給 運維經理 ;我們還可以再增加,第11-15條給BOSS ,第16-20條告警時執行一個遠程命令。 escalations部分,可以參看官方文檔。 第二個知識點就是Operation type部分,類型可以是send message進行通知,也可以是remote command : remote command 可以支持的操作有IPMI、Custom script、ssh、telnet、Global script (其中前兩者只能在zabbix server 或 zabbix proxy上操作),該功能是相當牛B的。如,檢測到一個tomcat 服務404,我們就可以利用該功能重啟tomcat 服務 。 remote command部分可以查看官方頁面。 第三個功能主要是為有值班人員或上班時間准備的一個功能,當設置這個條件時,如果一個告警的狀態被設置為ACK ,則本次告警的後續通知就會停止 。 在一線運維人員接到告警信息時,在zabbix 的首頁上,移到相應告警提示的部分,選擇主機的ACK 部分 ,點選 NO ,會跳出一個message的窗口,在message里輸入相關信息 ,如:誤報、因什麼什麼原因在調試、已通知到相關責任人等 ,並點擊Acknowledge 提交,此時的ACK 狀態會變成YES 。本次告警也將停止不再進行。直到本次告警解決,下次再次出現同樣告警時,該項又會重新變成ACK 。 Acknowledge部分,可以參看官文頁面。 二、maintenance 維護 在線場景中,經常會遇到這樣的情況:在線產品需要進行升級或其他操作,此時又不想將監控系統的完整告警功能進行全部關閉,只臨時關閉在線升級主機的告警。這就可以使用zabbix的maintenance功能。具體配置方式如下: 創建maintenance的步驟為:登錄 zabbix web 頁面---- Configuration-----Maintenance ----- create maintenance period ,如下圖所示: 第一選項卡配置的是任務名和一個大范圍的時間值,其指定了維護所在的磊的時候段在什麼范圍。maintenance type 指定在維護期間是否仍進行數據搜集。 periods指定的時間段具體的維護時間段,和maintenace中的范圍為包含關系。而period type指定了執行的類型,其類型有one time only 一次執行,也有按日、星期或月定期執行 ,如果是後三種方式,date項會變成具體的間隔、開始時間 。無論是何種類型,都有maintenance period length型 ,其指定了具體每次維護的持續時間,如2小時。 hosts & groups 項太多內容,就是選擇某組主機或某個主機在維護期間不進行告警通知。
G. zabbix的告警腳本目錄在哪
zabbix媒介類型包括mail、sms、自定義腳本,我們用的最多的還是腳本媒介,再次我們就不講另外兩個媒介了。當事件通知到腳本,會傳遞三個參數它,分別為$1(發送給誰) $2(標題) $3(內容)。例如發送郵件給[email protected],標題為nginx離線,內容是IP地址:1.1.1.1,nginx離線,請立即處理。
H. omnibus的插入告警信息腳本怎麼寫
輯判斷有點小復雜,需要仔細閱讀才能理解其中的思想)。最後加入crontab每分鍾執行一次。
[root@SvrTest script]# cat NBmonirot
#!/bin/bash
# this script is monitor all the server healthy
# created by zhangkai @ hundsun 2010-10-10
#echo `date +%Y%m%d-%T`
WORK_DIR=/root/work/script
cd $WORK_DIR
############# 初始化記錄日誌文件和狀態文件 ##################
if [ ! -e $WORK_DIR/Status.txt ];then
touch $WORK_DIR/Status.txt
fi
if [ ! -e $WORK_DIR/Alert.log ];then
touch $WORK_DIR/Alert.log
fi
############# 定義處理函數 ##################
function check_svr
I. type 8E是什麼文件系統
Snort分析報告
1.--snort的簡介
snort 是一個基於libpcap的數據包嗅探器並可以作為一個輕量級的網路入侵檢測系統(
NIDS)。所謂的輕量級是指在檢測時盡可能低地影響網路的正常操作,一個優秀的輕量
級的NIDS應該具備跨系統平台操作,對系統影響最小等特徵並且管理員能夠在短時間內
通過修改配置進行實時的安全響應,更為重要的是能夠成為整體安全結構的重要成員。
Snort作為其典型範例,首先可以運行在多種操作系統平台,例如UNIX系列和Windows 9
X.(需要libpcap for Win32的支持),與很多商業產品相比,它對操作系統的依賴性比
較低。其次用戶可以根據自己的需要及時在短時間內調整檢測策略。就檢測攻擊的種類
來說,據最新數據表明(2000/12/4)snort共有21類(???)1271條檢測規則,其中包括
對緩沖區溢出,埠掃描和CGI攻擊等等。SNORT集成了多種告警機制來提供實時告警功
能,包括:syslog、用戶指定文件、UNIXSocket、通過SMBClient使用WinPopup對Windo
ws客戶端告警。 Snort的現實意義維作為開源軟體填補了只有商業入侵檢測系統的空白
,可以幫助中小網路的系統管理員有效地監視網路流量和檢測入侵行為。
2.snort與其他工具的比較。
Snort的主要用途就是網路監視、數據包的記錄和檢測入侵行為,下面是與分別具有上述
兩種功能的典型工具的比較。
1)--snort與tcpmp的比較
Tcpmp是最為經典的嗅探工具,主要是用於記錄網路數據,網路故障的探測診斷工具。
Snort與它的最大的共同之處在於都是基於libpcap的並且支持BPF過濾機制,所以本質上
都是調用的捕獲數據包的庫函數,但是snort的目的不僅僅是在於記錄這個數據包而是從
安全的角度考慮出發區解析它,並且tcpmp主要是分析第二層或者第三層的報文來進行
網路故障診斷,而snort則主要針對於應用層的數據進行分析從而實現檢測入侵行為。除
此之外,由於tcpmp旨在快速完整地記錄流量,所以它制定了特殊的輸出格式,速度快
但是不易看懂,而snort就提供了更為友好的輸出格式,有利於系統管理員的直接分析。
--Figure 1 - Typical Snort telnet packet display:
--------------------------------------------------------------------------
20:59:49.153313 0:10:4B:A9:66 -> 0:60:97:7:C2:8E type:0x800 len:0x7D
192.168.1.3:23 -> 192.168.1.4:1031 TCP TTL:64 TOS:0x10 DF
***PA* Seq: 0xDF4A6536 Ack: 0xB3A6FD01 Win: 0x446A
FF FA 22 03 03 E2 03 04 82 0F 07 E2 1C 08 82 04 ..".............
09 C2 1A 0A 82 7F 0B 82 15 0F 82 11 10 82 13 FF ................
F0 0D 0A 46 72 65 65 42 53 44 20 28 65 6C 72 69 ...FreeBSD (elri
63 2E 68 6F 6D 65 2E 6E 65 74 29 20 28 74 74 79 c.home.net) (tty
70 30 29 0D 0A 0D 0A p0)....
---------------------------------------------------------------------------
--Figure 2 - The same telnet packet as displayed by tcpmp:
---------------------------------------------------------------------------
20:59:49.153313 0:10:4b:d:a9:66 0:60:97:7:c2:8e 0800 125: 192.168.1.3.23 >
192.168.1.4.1031: P 76:147(71) ack 194 win 17514 (DF) [tos 0x10] (ttl 64,
id 660)
4510 006f 0294 4000 4006 b48d c0a8 0103
c0a8 0104 0017 0407 df4a 6536 b3a6 fd01
5018 446a d2ad 0000 fffa 2203 03e2 0304
820f 07e2 1c08 8204 09c2 1a0a 827f 0b82
150f 8211 1082 13ff f00d 0a46 7265 6542
5344 2028 656c 7269 632e 686f 6d65 2e6e
6574 2920 2874 7479 7030 290d 0a0d 0a
---------------------------------------------------------------------------
2)--snort與NFR的比較
根據Denmac System公司1999年11月的現有商用網路入侵檢測工具的調查結果表明,NFR
的綜合性能指數高於ISS公司的RealSecure和CA公司的SessionWall,所以其代表了目前
國際上的IDS的最高水準,是一個比較成熟的商業產品。Snort的許多設計思想類似於NF
R,但是在很多方面都顯出不足之處,例如無法實現IP Defragmentation等功能,在探測
規則語言的格式上來說,NFR採用的是一種深層次的腳本語言,SNORT與其相比就略顯單
薄。但是snort的優勢就在於它是開源軟體,全世界的愛好者都可以加入它的開發升級工
作中來,其前景是無法限量的。
2.--原理
snort作為一個NIDS[註:基於網路的入侵檢測系統(NIDS),其工作原理為在基於共享
網路上檢測原始的網路傳輸數據,通過分析捕獲的數據包,主要工作為匹配入侵行為的
特徵或者從網路活動的角度檢測異常行為,進而採取入侵的預警或記錄。從檢測模式而
言,snort屬於是誤用檢測(misuse detection)。[註:該方法對已知攻擊的特徵模式
進行匹配,包括利用工作在網卡混雜模式下的嗅探器被動地進行協議分析,以及對一系
列數據包解釋分析特徵。]從本質上上來說,snort是基於規則檢測的入侵檢測工具,即
針對每一種入侵行為,都提煉出它的特徵值並按照規范寫成檢驗規則,從而形成一個規
則資料庫。其次將捕獲得數據包按照規則庫逐一匹配,若匹配成功,則認為該入侵行為
成立。目前,snort的檢測規則庫主要包括了以下幾類的入侵行為:
snort的結構主要分為三個部分如圖n-1:
l--數據包捕獲和解析子系統(Capture Packet Mechanism from link layer and the
packet decoder ):
該子系統的功能為捕獲網路得傳輸數據並按照TCP/IP協議的不同層次將數據包進行解析
。Snort利用libpcap庫函數進行採集數據, 該庫函數可以為應用程序提供直接從鏈路層
捕獲數據包的介面函數並可以設置數據包的過濾器以來捕獲指定的數據。(的詳細介紹
請參閱附錄N)。網路數據採集和解析機制是整個NIDS實現的基礎,其中最關鍵的是要保
證高速和低的丟包率,這不僅僅取決於軟體的效率還同硬體的處理能力相關。對於解析
機制來說,能夠處理數據包的類型的多樣性也同樣非常重要,目前,snort可以處理以太
網,令牌環以及SLIP等多種鏈路類型的包。
l--檢測引擎(the detect engine)
檢測引擎是一個NIDS實現的核心,准確性和快速性是衡量其性能的重要指標,前者主要
取決於對入侵行為特徵碼的提煉的精確性和規則撰寫的簡潔實用性,由於網路入侵檢測
系統自身角色的被動性——只能被動的檢測流經本網路的數據,而不能主動發送數據包
去探測,所以只有將入侵行為的特徵碼歸結為協議的不同欄位的特徵值,通過檢測該特
征值來決定入侵行為是否發生。後者主要取決於引擎的組織結構,是否能夠快速地進行
規則匹配。
Snort採用了靈活的插件形式來組織規則庫,即按照入侵行為的種類劃分為相應的插件,
用戶可以根據需要選取對應的插件進行檢測。目前包括的插件分別如下:
每一類插件中包括了數十條的檢測規則,分別代表同一類型的不同入侵行為。對於規則
的定義,snort使用了一種簡單的,輕量級的規則描述語言,上述已經提及到檢測的最終
行為就是檢測數據包中協議的不同欄位,例如埠號就是重要的入侵線索。為了更為清
楚地闡述這個問題,我們舉一例說明:
攻擊名稱--NT IIS Showcode ASP
攻擊種類--獲取非法訪問許可權。
攻擊描述--通過構造特定的URL請求可以非法閱讀伺服器上的其他文件http://attack
host/msadc/Samples/SELECTOR/showcode.asp?source=/msadc/Samples/../../../../.
./boot.ini
入侵特徵碼 --IP地址:保護網段以外的IP地址。
--協議類型:TCP
--埠:80
--TCP標志位:PUS, ACK
--數據段內容:/selector/showcode.asp
CVE ID--CAN-1999-0736
Bugtraq ID --167
分析以上的這個入侵實例,我們可以看出其實檢測該入侵行為的關鍵是判斷埠號和數
據段內容,IP地址、協議類型和TCP標志位只是輔助的特徵碼。但是當開始分析原始數據
包時,是否應該就直接匹配埠和數據段的內容?無疑針對該入侵行為上述做法的匹配
效率是最高的。但是實際上這樣做會降低整體檢測的效率,因為入侵系統要對龐大的網
絡數據逐一進行檢測,應該遵循先檢測所有入侵行為的共同特徵其次才是個體特徵的原
則,例如如果首先檢測IP地址,一旦發現並不屬於檢測范圍之內,就立即檢測下一個數
據包而並非繼續檢測該包的其他欄位。這樣既保證了檢測的快速性,又提高了報警的實
時性。
Snort正是按照上述原則定義規則的,將檢測規則劃分成兩個部分:規則頭和規則選項。
前者是所有規則共有的包括IP地址、協議類型、埠號,後者根據不同規則包括相應的
欄位關鍵字,例如TCP的標志位或者窗口大小等。檢測規則除了包括上述的關於「要檢測
什麼」還應該定義「檢測到了該做什麼」,snort定義了三種處理方式——alert(發送報
警信息),log(記錄該數據包)和pass(忽略該數據包)並定義為規則的第一個匹配關鍵
字,這樣設計的目的非常簡單,旨在在程序中組織整個的規則庫,即將所有的規則按照
處理方式組織成三個鏈表以用於更快速准確地進行匹配,體現了設計者的巧妙之處。
下面我們來舉一實例來具體說明規則的定義:
alert tcp !$HOME_NET any -> $HOME_NET 80 (msg:"CAN-1999-0736 - IIS-showcode"
;flagsA; content:"/selector/showcode.asp"; nocase
該實例正式針對表(N)中所示的入侵行為所定義的檢測規則,通過該例可以看出snort
的規則語言簡明實用,基本格式為:
規則動作 協議類型 IP地址 埠號 -> 協議類型 IP地址 埠號 (規則選項)
源發送方 目的接受方
關於規則的具體書寫規范不再贅述,下面就其關鍵和特別之處加以說明:
1.-- 變數和操作符
snort作為一個NIDS,主要的目的就是能夠保護本網段即及時發現外部網對內部網的攻擊
,所以規則中的IP地址的定義主要是針對外部網和內部網地址兩種。由此snort引入了變
量的機制,即可以在規則中用變數表示IP地址欄位,用戶在運行前可根據實際的子網地
址來定義該變數,這樣在解析檢測規則時snort會自動替換變數值,增加了規則的靈活性
,不過只適應於像IP地址這種基本所有規則都具有同一值。
為了更為准確地表達規則和精確地表示檢測范圍,snort還定義了三類操作符:
l--否定操作符——「 ! 」
用於表示snort還增加了否定符「!」來區分內部網和外部網。例如例n的!$HOME_NET。
l--方向操作符——「->」和」<>」
用於表示傳輸的方向,分別表示單向和雙向傳輸。
l--埠描述符——「 : 」
用於表示埠的范圍。例如: 「600:「表示大於600的埠號。
2. 規則選項
規則選項作為檢測時的重要標准組成了snort入侵檢測引擎的核心,既易用又非常靈活強
大。首先其靈活性是指可以根據不同的不同行為制定相應的檢測選項內容,其次其強大
性是指不僅檢測具有一定的廣度和深度並且定義了檢測到時該做什麼 。snort中有15個
規則選項關鍵字,其中有三個關鍵字是做為檢測到後的回應:
msg - 在報警和包日誌中列印一個消息
logto - 把包記錄到用戶指定的文件中而不是記錄到標准輸出
resp - 主動反應(切斷連接等)
Resp關鍵字可以對匹配一條Snort規則的流量進行靈活的反應(flexible reponse
-FlexResp)。FlexResp代碼允許Snort主動地關閉惡意的連接。該模塊合法的參數如下
:
rst_snd - 向發送方發送TCP-RST數據包
rst_rcv - 向接受方發送TCP-RST數據包
rst_all - 向收發雙方發送TCP_RST數據包
icmp_net - 向發送方發送ICMP_NET_UNREACH
icmp_host - 向發送方發送ICMP_HOST_UNREACH
icmp_port - 向發送方發送ICMP_PORT_UNREACH
icmp_all - 向發送方發送上述所有的ICMP數據包。
作為入侵檢測系統,理論上只需要檢測入侵,並不需要去回應入侵行為的。所以該功能
應該是作為SNORT的附加功能,但是值得一提的是,發送RST和ICMP UNREACH數據包向攻
擊方可以暫緩其對目標主機的攻擊,我們所研究的一個工具叫做dsniff中的tcpkill就是
利用這個原理進行切斷非法連接,但是對於一般的拒絕服務攻擊,該方法的作用就不甚
明顯了。對於SNORT來說,實現該功能必然會降低檢測的的效率尤其是在網路流量特別大
的時候。
另外12中關鍵字都是針對協議中的不同欄位設置的:
關鍵字--檢測內容--主要針對的攻擊行為
ttl--檢測ip頭的ttl的值 --用於對traceroute探測的檢測
id--檢測ip頭的分片id值--黑客的固定攻擊,例如設置為31337
dsize--檢測包的凈荷尺寸的值--緩沖區溢出攻擊。
content--在包的凈荷中搜索指定的樣式--最為重要的一個選項,用於在數據包的數據段
中搜索指定的內容並根據數據觸發響應,可以搜索包含混合的文本和二進制數據。並設
置了三個輔助關鍵字:offset,dsize,nocase
Flags--檢測tcp flags的值--非法埠掃描或者其他非法探測主機操作系統類型等。
Seq--檢測tcp順序號的值--檢測主機發送的序列號集是否是固定的集合。入侵者可以利
用該值冒充合法用戶向被入侵者發送數據,偽裝正常的通信以竊取信息或者其他非法活
動。
Ack--檢測tcp應答(acknowledgement)的值--Nmap的TCP PING會設置該項的值為0,從而
判斷可能正在用Nmap進行非法掃描。
Itype--檢測icmp type的值--拒絕服務攻擊。註:只作為其中的一種特徵。
Icode--檢測icmp code的值--可疑的流量。
Session--記錄指定會話的應用層信息的內容--記錄在TCP會話中的會話數據。
Icmp_id--檢測ICMP ECHO ID的值--
Icmp_seq--檢測ICMP ECHO 順序號的值--
Ipoption--監視IP option的特定代碼--
Rpc--監視特定應用/進程調用的RPC服務--檢測非法的RPC請求,查看RPC請求,並自動將
應用(Application),過程(procere)和程序版本(program version)解碼,如果
所有三個值都匹配的話,該規則就顯示成功。
3.預處理程序
預處理程序從Snort版本1.5開始引入,其代碼在檢測引擎被調用之前先被運行,為檢測
做鋪墊,從而提高檢測的准確性和速度。而且預處理機制採用插件形式,用戶和程序員
能夠將模塊化的插件方便地融入Snort之中。目前snort現有的預處理程序模塊有以下三
種:
l--Minfrag
Minfrag預處理程序檢查給定尺寸限制的分片數據包。數據包被分片通常是由源和目的主
機之間的路由器引起的。一般說來,商業網路設備不會產生小於512位元組的分片包。可以
利用這個事實,來監控含有小分片的流量。
l--HTTP Decode
HTTP Decode用於處理HTTP URI字元串,將串中的數據轉化為可讀的ASCII字串,用於檢
測HTTP的數據信息對付隱蔽的WebURL掃描器和惡意的入侵者。
l--Portscan Detector
Snort Portscan預處理程序的用處:
向標准記錄設備中記錄從一個源IP地址來的埠掃描的開始和結束。
如果指定了一個記錄文件,在記錄掃描類型的同時也記錄目的IP地址和埠。埠掃描
定義為在時間T(秒)之內向超過P個埠進行TCP連接嘗試,或者在時間T(秒)之內向
超過P個埠發送UDP數據包。埠掃描可以是對任一IP地址的多個埠,也可以是對多
個IP地址的同一埠進行。現在這個版本可以處理一對一和一對多方式的埠掃描,下
一個完全版本將可以處理分布式的埠掃描(多對一或多對多)。埠掃描也包括單一
的秘密掃描(stealthscan)數據包,比如NULL,FIN,SYNFIN,XMAS等。如果包括秘密
掃描的話,埠掃描模塊會對每一個掃描數據包告警。
network to monitor - 監視埠掃描的目標網路以network/CIDR表示
number of ports - 在探測期間訪問的埠數目
detection period - 以秒計數的埠訪問時間限制
logdir/filename - 告警信息存放的目錄/文件名,告警也可以寫入標準的告警文件中。
l--日誌及報警子系統(logging/alerting subsystem)
入侵檢測系統的輸出結果系統的必要特徵是實時性和多樣性,前者指能夠在檢測到入侵
行為的同時及時記錄和報警,後者是指能夠根據需求選擇多種方式進行記錄和報警。一
個好的NIDS,更應該提供友好的輸出界面或發聲報警等等。
Snort是一個輕量級的NIDS,它的另外一個重要功能就是數據包記錄器,所以該子系統主
要提供了方式:
1.--fast model :採取TCPDUMP的格式記錄信息
2. readable model :按照協議格式記錄,易於用戶查看。
3.alert to syslog: 向syslog發送報警信息。
4.alert to text file :以明文形式記錄報警信息。
值得提出的是,snort考慮到用戶需要高性能的時候,即網路數據流量非常大,可以將數
據包信息進行壓縮從而實習快速的報警。
3.-- 程序結構
1)--snort的整體結構
snort作為優秀的公開源代碼的入侵檢測系統範例,其整個程序結構清晰,構思巧妙,我
們對於其版本1.6.3的源碼進行了深入的分析。Snort共有64個c文件和h文件,首先介紹
程序的整體結構,其流程圖如下:
其中最為關鍵的函數就是ProcessPacket(),--其流程圖如下:
2)--數據結構--
snort的主要數據結構就是幾個鏈表,上述已經提及,snort組織規則庫的巧妙之處就是
按照規則的處理動作來劃分成三個鏈表,其中每個鏈表又按照協議類型:TCP,IP和ICMP
分成三個鏈表,所以所有的規則都會被分配到這個三個鏈表中。鏈表中的成員就是描述
每條規則的結構——RuleTreeNode,該結構中的一個重要成員就是記錄該規則的處理函
數鏈表——RuleFpList,一條規則有時候需要調用多個處理函數來進行分析。該結構中
的另外一個重要成員就是規則選項的結構,該結構同樣包括該規則的選項信息以及其處
理函數鏈表。
值得提出的是,並不是每一條規則都分配一個RuleTreeNode結構,因為很多規則的選項
前的頭部分是相同的,只需要根據不同的規則選項鏈取不同的選項函數處理鏈表。基本
整體的結構如圖n所示,所有鏈表的初始化都是在捕獲數據包前進行的。
除以上鏈表外,snort還定義了預處理、輸出的關鍵字和處理函數鏈表,設計鏈表的主要
意圖是為了實現插件的思想,即用戶何以根據需求添加刪除預處理的功能模塊。其只要
的數據結構如下:
typedef struct _PreprocessKeywordNode
{
char *keyword;
void (*func)(char *);
} PreprocessKeywordNode;
// 預處理關鍵字信息結構。
typedef struct _PreprocessKeywordList
{
PreprocessKeywordNode entry;
struct _PreprocessKeywordList *next;
} PreprocessKeywordList;
//預處理關鍵字鏈表。
typedef struct _PreprocessFuncNode
{
void (*func)(Packet *);
struct _PreprocessFuncNode *next;
} PreprocessFuncNode;
//預處理函數鏈表。
所有鏈表的初始化都是在捕獲數據包前進行初始化的,一旦鏈表都已建立完畢,開始捕
獲數據包,每收到一個數據包都會現首先調用預處理程序鏈表中的函數進行處理後,其
次按照默認地順序遍歷AlertList,PassList和LogList三個鏈表。遍歷時首先根據數據包
的協議類型定位規則鏈表,其次調用遞歸函數進行規則的逐一匹配,即首先匹配規則頭
,若匹配則繼續遞歸匹配規則選項,若不匹配,直接匹配下一條規則。為了加快遍歷的
速度,snort在規則選項中的」content」內容匹配時調用了Boyer-Moore演算法。
4.--改進
1.--背景
我們認為snort已經具備了NIDS的基本功能,由於它本身定位在一個輕量級的入侵檢測工
具,盡管與商業的入侵檢測工具比起來,它的規則語言略顯簡陋,在報警方式和圖形化
使用界面上也顯露出不足之處,但是程序的整體結構清晰,規則語言簡單實用並提供插
件的功能支持,用戶可以添加自己的檢測規則和處理函數,這對於規則庫的及時更新有
著極為現實的意義。
通過分析,與商業的NIDS相比,SNORT 1.6.3沒有設置對IP 分片包的處理功能,即對於
例如「Teardrop」和「Ping of Death」兩類利用非法IP分片包進行的攻擊無法檢測:
?--teadrop——該攻擊是針對很多操作系統的TCP/IP協議棧沒有正確處理已分段的IP包
的重組。其特徵是發送2個或更多特別的分段IP數據報。第一個包是偏移量為0的段,數
據段(分段長度)位元組是N,並設置了MF位,第二個包是最後一個分段(MF==0),但它的偏移
量小於N,所有造成兩個分段重疊了。為了重組這些包,有弱點的系統就會在TCP/IP棧中
分配非常大的空間,因此導致目標系統因為內存耗盡而停止響應或者重啟。
?--Ping of Death——該攻擊的特正是向攻擊目標發送大量的ICMP分片數據包,當這些
數據包重組時其數據段已經大於65535個位元組,系統會因為無法處理這種數據包而造成拒
絕服務或者重啟。
?--
2.--方案
3.--實現
J. MON是什麼意思
mon通用目資源監視系統備用於監視網路服務用性伺服器問題諸溫度等影響系統運行環境條件
資源監視視兩部獨立任務:測試條件現問題觸發作mon設計用於檢測獨立stand-alone服務並能作相應響應作mon調度器形式實現監視任務執行監視器失效調用響應告警程序
我般mon作集群環境資源監控平台通我能夠監控幾乎所已知服務像http服務、telnet服務、郵件服務等等甚至能夠監視文件變化實解控主機否重啟等等mon監視遠程主機系統資源提供良平台除外mon提供強告警機制監視具體服務失效或者效mon作放映喜論mon監視工具monitor告警程序都通便捷腳本語言書寫使用shell使用perl或者別需要傳遞參數藉助mon守護進程變數、系統環境變數命令行式傳遞給相應具體腳本程序
面些mon軟體包附帶客戶端工具cgi-bin/
clients/
目錄找:
-moncmd,
用於客戶端操作工具實現完整客戶/服務介面
-monshow用於報告監視服務運行狀態既命令行工具提供cgi教本友、圖形化式顯示服務前狀態、組信息錯誤志
-skymon,
SKYTEL雙路頁面調度介面允許查詢服務狀態同提供moncmd致維護服務訪問通簡單用戶/密碼認證機制訪問控制文件進行
-mon.cgi,
monweb介面僅允許通web頁面查看服務運行狀態實改變服務相應參數
監視器告警程序並mon部盡管附帶發行包些工具意味著新服務需要監視或者修改作需要響應mon須改保證mon擴展性
mon特性
mon針linux發工具眾所周知sorlaris工作客戶服務端都由perl語言書寫輕便性問題
監控
監控詞用於檢查特定環境條件任何形式隨報告服務功失敗消息mon設計非獨立使用自喜任何語言書寫監控程序要按照要求放mon指定監控程序工作
非同步事件通信機制
mon服務支持非同步事件通信機制放式協議像monitoralert腳本觸發任何事件典型應用作SNMP陷阱遠程結點產陷阱事件採用監視器池通知失效事件處理容易能建立布式監控體系例WAN范圍內同域主機收集自身運行信息適重事件通知位於位置伺服器比NOC等
告警
告警教本用於mon檢測問題發送消息或者進行失效處理工作些告警腳本監視腳本mon本身部作擴展模塊隨意加入支持"Upalerts"種用於服務失效段間隨即恢復所觸發專用腳本程序
告警管理失效控制
任何受監控服務失效都引起告警行甚至同事件觸發告警消息別同用戶使用特性建立"on
call"調度例設定系統使旦發現任何資源用情況經判斷早8點前發送告警消息給所系統管理員早8點發送給管理員王
並行性
能夠同主機或者同組主機檢測服務工作並行化例
限制重復報警
mon系統限制重復報警行例設定持續失效服務僅沒1發送告警郵件停發送選擇忽略些微、短暫失效事件
依賴關系
mon支持內部服務依賴特性例監視伺服器受監視WWW伺服器間路由失效雖訪問HTTP服務確告警消息內容要指路由問題非HTTP問題重要資源訪問依賴關系防止量告警消息發依賴性理解層結構或者樹結構發失效事件種依賴關系使失效事件按照樹結構向處理任務傳遞葉結點說依賴關系能使告警盡能反映失效真實情況復雜依賴關系應該使用圖表示實際用樹結構或者層結構描述依賴關系
擴展配置
mon提供伸縮性、擴展性非強配置文件機制主機規劃組每主機或者主機組自服務(service)具體參考附帶範例文件
真客戶/服務模式
使用交互命令、WWW界面SkyTel客戶端工具查詢服務狀態歷史紀錄協議簡單使容易添加自客戶端工具Mon支持種認證包括PAM實現每用戶訪問控制查詢服務狀態使用PerlAPI模塊進行編程所編寫自通信介面簡單比用WAP協議訪問服務狀態要提現幾社區發展自WWW介面工具
基於視圖狀態報告
通復雜配置文件用戶通服務狀態視圖查看信息需要解每受監視服務具體狀態例"network"視圖顯示整網路拓撲情況"servers"視圖則包括所關服務信息故需要每用戶配置視圖用戶控制自視圖
允許或禁止實告警
mon禁止服務失效事件告警行直失效問題解決才使效種狀態叫"ack"客戶介面獲(恢復)用戶能知道支持員解決特殊問題必慮特定主機、組或者服務設定暫禁止客戶端重新使能狀態需要停止或重啟服務假升級特殊服務禁止告警功能升級完重新使告警效
歷史記錄
mon保持失效事件、告警觸發等行歷史紀錄提供用戶查詢
輕便
Mon非輕便工具擴展服務需要編寫復雜代碼需經歷痛苦編譯、鏈接程所擴展功能都模塊化且採用純腳本語言perl編寫點充保證Mon體系輕便簡單