每一個公司都有本身的程序,本身的進程名與端口監聽,對於nagios來講,這些都常常須要本身去寫插件,可是zabbix不須要,它本身就有監控進程與端口的key。ios
在使用zabbix的key來監控進程與端口前,我也本身寫了插件,但用起來很不爽,由於須要在全部agent上都要進行配置與維護。若是用zabbix自帶的功能,只須要在server端維護就能夠了。簡直就是操十分心與操一分心的區別啊,爲何我就沒有早點發現這功能呢。
tcp
開始正題......ide
監控端口使用以下key:this
key:net.tcp.listen[port]spa
Checks if this port is in LISTEN state. 0 - it is not, 1 - it is inLISTEN state.插件
翻譯:監聽端口狀態,返回結果爲1,則運行;返回結果爲0,則沒有運行。翻譯
例如監控443端口,net.tcp.listen[443]3d
若是一個進程沒有監聽端口,則能夠使用以下key。orm
key:proc.num[<name>,<user>,<state>,<cmdline>]server
Number of processes. <name> and <user> same as inproc.mem item. <state> all (default), run, sleep, zomb. <cmdline>filter by command line (supports regex).
name:是進程名
user:運行該進程的用戶
state:進程狀態包括run,sleep,zomb
cmdline:該項內容是模糊匹配,即用ps aux看到的最後一列中包含該字段則匹配上。
注:name匹配可能不是很準,通常根據cmdline來匹配進程
例如監控cond,proc.num[,root,all,crond]
配置以下:
對於端口的監控,正常則返回值=1;對於進程的監控,正常則返回值>=1;若是返回結果爲0,則表明該進程宕掉。
例如對443端口的觸發器配置以下:
如最後兩次的結果都等於0時,則報警。對於進程的觸發器配置,是同樣的。
zabbix對監控進程與端口存活狀態實在太方便了。最近我在自學zabbix,慢慢的探索更多好用的功能,歡迎留言交流。