zabbix配置监控进程,并且调用脚本写入日志或者数据库
参考http://chenx1242.blog.51cto.com/10430133/1837990
1 前期说明
zabbix_server查看“文件在后台运行数量”所对应的key就是:proc.num[<name>,<user>,<state>,<cmdline>],具体意思如下:
<name>:进程名称,默认为“all processes”;
<user>:用户名,默认 “all users”;
<state>:可用值,默认是 all,可以进一步设定比如run,sleep等等;
<cmdline>:ps -ef命令行过滤,这里可以写正则表达式或者关键字
2 比如监控nginx进程
Ps ef | grep nginx
root 15032 1 0 Nov17 ? 00:00:00 nginx: master process/usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx 1522215032 0 Nov17 ? 00:04:36 nginx: worker process
root 2336520018 0 14:56 pts/0 00:00:00 grep --color=auto nginx
里面一共3个关于nginx的进程,其中一个是root启动的,另一个是grep的,所以只有一个nginx进程
其实你可以发现可以监控各种各样的进程,只是把key做一些改变就可以了,"proc.num[,root,all,进程名字]"
3.先创建监控项,例如监控tomcat进程是否存在。
4.创建触发器,监控刚刚的tomcat监控项,一旦出现触发条件,则会在页面显示。
5.配置动作
这里配置的是隔段时间执行python脚本,写入日志文件:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os,sys,md5,datetime,shutil,time,zipfile,chardet,time,pymysql
fp = open(‘/home/app/py/alarm/tmstop.log‘,‘a+‘)
currtime=time.strftime(‘%Y-%m-%d %H:%M:%S‘,time.localtime(time.time()))
stoptime="2"+sys.argv[1]+" "+sys.argv[2]
ip=sys.argv[3]
msg="tomcat stop "+stoptime +" "+ip;
fp.writelines(msg+"\n")
fp.flush()
fp.close()
db = pymysql.connect(host="192.168.71.205",user="root",password="XXXX",database="zabbix",charset="utf
8")
#2.利用db方法创建游标对象
cur = db.cursor()
#3.利用游标对象execute()方法执行SQL命令
#cur.execute(";") #这里填写正确的SQL语句 例如:
cur.execute("INSERT INTO `tb_send_sms`(msg,`status`) VALUES(‘"+msg+"‘,0);")
#4.提交到数据库执行
db.commit()
print("OK")
#5.关闭游标对象
cur.close()
具体如果需要发送邮件或者发送短信等,都可以在这个脚本里控制。
监控到写入的日志,一旦tomcat进程启动了,日志就不写了,说明进程正常了。