zabbix3.0.4添加对进程的监控:
方法一:通过自定义命令进行监控
主要思路:
通过 ps -ef|grep sdk-push-1.0.0.jar |grep -v grep|wc -l 这个命令来判断进程sdk-push是否运行,如果不等于1则表示进程挂了,触发报警
被监控的zabbix-agent端:
添加监控参数:
# vim /etc/zabbix/zabbix_agentd.conf
UserParameter=sdk_push,ps -ef|grep sdk-push-1.0.0.jar |grep -v grep|wc -l
重启zabbix-agent使配置生效
service zabbix-agent restart
zabbix-server测试是否ok,当端口不是默认的10050时,需要添加-p指定端口:
zabbix_get -s 1.1.1.1 -p 20050 -k sdk_push
在zabbix的web页面添加对应的监控:
添加监控项item
Confuguration --> Hosts --> 找到对应的主机,点开 Items --> Create item
创建对该监控项的触发器
Confuguration --> Hosts --> 找到对应的主机,点开 Triggers --> Create trigger
当然还可以定义动作action来对应用进行重新启动,如果应用较为复杂不建议这么做
最后不要忘记测试,可以将进程停止看是否会报警
方法二:通过zabbix自带的模板对指定进程进行监控
以下是对elasticsearch进程的监控配置,key中的参数说明,第一个参数是进程名字,没必要填写,填了反而会使监控不太准确,第二个参数是运行进程的用户名,第三个为进程的状态 ,包括:all (default), run, sleep, zomb ,第四个参数用来指定进程名中包含的字符,对进程进行过滤。
items --> create item
Name: amount of es
Type: Zabbix agent
Key: proc.num[,yunva,all,elasticsearch]
Application: process monitor
Key: proc.num[,yunva,all,elasticsearch] 中的值yunva要根据实际情况填写(运行elasticsearch程序的用户)
注意Type要选择Type: Zabbix agent 因为Type: Zabbix agent(active) 模式不能执行远程命令
3.配置好监控项后,添加触发器,如下触发器表示最后两次的值都是0,说明没有elasticsearch进程在运行,则出发报警。
trggiers --> create trigger
Name: process of es is down
Expression: {hostname:proc.num[,yunva,all,elasticsearch].max(#2)}=0
通过自带模板对端口进行监控
Type: zabbix agent
key : net.tcp.listen[9999]
trigger:
Name: yuyin port 9999 is down
Expression: {Template OS Linux_yuyin_file_aiwaya:net.tcp.listen[9999].max(#2)}=0