Zabbix调用python脚本监控MySQL主从复制状态
程序员文章站
2022-04-30 12:45:39
...
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
1、创建查询主从同步用户
mysql> rant replication client on *.* to aaa@qq.com'localhost' identified by 'pwd';
本人是Centos7,为了方便就使用自带的python2.7 edition,python3.x需要安装,edition个人自定义,脚本只需要修改print语句而已
2、编写python(2.7)
vim /usr/local/script/monitor.py
#!/usr/bin/python2.7
# -*- coding: utf-8 -*-
import re
import os
def monitor():
username = 'monitor'
pwd = 'pwd'
content = '\"show slave status\G;\"'
show = os.popen('mysql -h localhost -u{} -p{} -e {}'.format(username, pwd, content)).read()
Slave_IO_Running = re.search('Slave_IO_Running: [\S]*', show).group()[18:]
Slave_SQL_Running = re.search('Slave_SQL_Running: [\S]*', show).group()[19:]
Last_Errno = int(re.search('Last_Errno: [\d]*', show).group()[12:])
current_state = ('Slave_IO_Running:{} Slave_SQL_Running:{} Last_Errno:{}'.format(Slave_IO_Running,
Slave_SQL_Running, Last_Errno))
if Last_Errno == 0 and Slave_IO_Running == 'Yes' and Slave_SQL_Running == 'Yes':
print 'Status: OK\n', current_state
else:
print 'Status: PROBLEM\n', current_state
if __name__ == '__main__':
monitor()
安全考虑,修改权限
chown zabbix: monitor.py
chmod 500 monitor.py
3、配置zabbix agent
vim /usr/local/zabbix_agentd/conf/zabbix_agentd.conf
UnsafeUserParameters=1 #改为1,不可以自定义
UserParameter=showslavestatus,/usr/local/script/monitor.py
UserParameter说明:
var1是zabbix键值,也是报警的告警项目,自定义;var2是命令或脚本
showslavestatus稍后在zabbix界面添加监控项的自定义键值,如果脚本需要加参数则写成showslavestatus[*]
重启zabbix agent
4、在zabbix server上调用测试
zabbix_get -s client_ip -p 10050 -k "showslavestatus" # showslavestatus是zabbix agent配置文件的var1
mysql: [Warning] Using a password on the command line interface can be insecure.
Status: OK
Slave_IO_Running:Yes Slave_SQL_Running:Yes Last_Errno:0
5、配置item and trigger
在对应的监控主机上配置item
在Monitoring - Latest data查看数据
触发告警
mysql> stop slave;
上一篇: css设置垂直居中的方法
下一篇: Flex 布局