Zabbix调用python脚本监控mysql主从状态
脚本只监控从库的同步状态
Zabbix安装路径:/usr/local/zabbix/
zabbix客户端:192.168.15.66
一、配置脚本查询mysql帐号权限
CREATE USER 'showslavestatus'@'localhost' IDENTIFIED BY '123456';
GRANT REPLICATION CLIENT ON *.* TO 'showslavestatus'@'localhost';
二、创建py脚本存放路径/usr/local/zabbix/script
cat SHOWSLAVESTATUS.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-
#__author:"zhengchaooo"
#date: 2018/3/31
import re,os
class SHOWSLAVESTATUS:
mysqlpath = '/usr/local/d/bin/mysql'
def __init__(self,ip,port,username,pwd):
self.ip = ip
self.port = port
self.username = username
self.pwd = pwd
def show(self,content):
pip = os.popen('%s -h %s -P %s -u%s -p%s -e %s'%(self.mysqlpath,self.ip,self.port,self.username,self.pwd,content)).read()
Slave_IO_Running = ((re.search('Slave_IO_Running: [\S]*', pip)).group()[18:])
Slave_SQL_Running = ((re.search('Slave_SQL_Running: [\S]*', pip)).group()[19:])
Last_Errno = int((re.search('Last_Errno: [\d]*',pip)).group()[12:])
print ('Slave_IO_Running:%s Slave_SQL_Running:%s Last_Errno:%s'%(Slave_IO_Running,Slave_SQL_Running,Last_Errno))
if Last_Errno == 0 and Slave_IO_Running == 'Yes' and Slave_SQL_Running == 'Yes':
print ('Yes,主从库同步正常')
else:
print ('False,主从库同步异常')
s1 = SHOWSLAVESTATUS('127.0.0.1','63307','showslavestatus','123456')
s1.show('\"SHOW SLAVE STATUS\G\"')
授予权限chmod +x SHOWSLAVESTATUS.py
测试脚本./SHOWSLAVESTATUS.py
Slave_IO_Running #I/O线程是否被启动并成功地连接到主服务器上
Slave_SQL_Running #SQL线程是否被启动
Last_Errno #被多数最近被执行的查询返回的错误数量和错误消息。错误数量为0并且消息为空字符串意味着“没有错误”。
提示:Warning: Using a password on the command line interface can be insecure 在MySQL 5.6 在命令行输入密码,就会提示这些安全警告信息,直接无视
三、添加zabbix_agentd.conf自定义配置脚本 编辑/usr/local/zabbix/etc/zabbix_agentd.conf 增加
UnsafeUserParameters=1
UserParameter=SHOWSLAVESTATUS[*],/usr/local/zabbix/script/SHOWSLAVESTATUS.py
重启zabbix_agentd,脚本可以调用
四、在zabbix服务器上调用测试
执行命令 192.168.15.66是客户端脚本的地址
/usr/local/zabbix/bin/zabbix_get -s 192.168.15.66 -p 30050 -k "SHOWSLAVESTATUS"
五、在zabbix添加监控脚本
然后查看最新数据查看接收数据
六、创建触发器,要是接收到False就告警
这边关闭主库数据库检查是否会告警
成功接收到报警邮件
还没有评论,来说两句吧...