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进程是否存在。

zabbix配置监控进程,并且调用脚本写入日志或者数据库

4.创建触发器,监控刚刚的tomcat监控项,一旦出现触发条件,则会在页面显示。

zabbix配置监控进程,并且调用脚本写入日志或者数据库

5.配置动作

zabbix配置监控进程,并且调用脚本写入日志或者数据库

zabbix配置监控进程,并且调用脚本写入日志或者数据库

zabbix配置监控进程,并且调用脚本写入日志或者数据库

zabbix配置监控进程,并且调用脚本写入日志或者数据库

这里配置的是隔段时间执行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()

具体如果需要发送邮件或者发送短信等,都可以在这个脚本里控制。

zabbix配置监控进程,并且调用脚本写入日志或者数据库

监控到写入的日志,一旦tomcat进程启动了,日志就不写了,说明进程正常了。

相关推荐