Zabbix调用python脚本监控mysql主从状态

本是古典 何须时尚 2022-05-28 07:57 319阅读 0赞

脚本只监控从库的同步状态

Zabbix安装路径:/usr/local/zabbix/

zabbix客户端:192.168.15.66

一、配置脚本查询mysql帐号权限

  1. CREATE USER 'showslavestatus'@'localhost' IDENTIFIED BY '123456';
  2. GRANT REPLICATION CLIENT ON *.* TO 'showslavestatus'@'localhost';

二、创建py脚本存放路径/usr/local/zabbix/script

cat SHOWSLAVESTATUS.py

  1. #!/usr/bin/python3
  2. # -*- coding: utf-8 -*-
  3. #__author:"zhengchaooo"
  4. #date: 2018/3/31
  5. import re,os
  6. class SHOWSLAVESTATUS:
  7. mysqlpath = '/usr/local/d/bin/mysql'
  8. def __init__(self,ip,port,username,pwd):
  9. self.ip = ip
  10. self.port = port
  11. self.username = username
  12. self.pwd = pwd
  13. def show(self,content):
  14. 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()
  15. Slave_IO_Running = ((re.search('Slave_IO_Running: [\S]*', pip)).group()[18:])
  16. Slave_SQL_Running = ((re.search('Slave_SQL_Running: [\S]*', pip)).group()[19:])
  17. Last_Errno = int((re.search('Last_Errno: [\d]*',pip)).group()[12:])
  18. print ('Slave_IO_Running:%s Slave_SQL_Running:%s Last_Errno:%s'%(Slave_IO_Running,Slave_SQL_Running,Last_Errno))
  19. if Last_Errno == 0 and Slave_IO_Running == 'Yes' and Slave_SQL_Running == 'Yes':
  20. print ('Yes,主从库同步正常')
  21. else:
  22. print ('False,主从库同步异常')
  23. s1 = SHOWSLAVESTATUS('127.0.0.1','63307','showslavestatus','123456')
  24. s1.show('\"SHOW SLAVE STATUS\G\"')

授予权限chmod +x SHOWSLAVESTATUS.py

测试脚本./SHOWSLAVESTATUS.py

70

  1. Slave_IO_Running #I/O线程是否被启动并成功地连接到主服务器上
  2. Slave_SQL_Running #SQL线程是否被启动
  3. Last_Errno #被多数最近被执行的查询返回的错误数量和错误消息。错误数量为0并且消息为空字符串意味着“没有错误”。
  4. 提示: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 增加

  1. UnsafeUserParameters=1
  2. UserParameter=SHOWSLAVESTATUS[*],/usr/local/zabbix/script/SHOWSLAVESTATUS.py

70 1

重启zabbix_agentd,脚本可以调用

四、在zabbix服务器上调用测试

  1. 执行命令 192.168.15.66是客户端脚本的地址
  2. /usr/local/zabbix/bin/zabbix_get -s 192.168.15.66 -p 30050 -k "SHOWSLAVESTATUS"

70 2

五、在zabbix添加监控脚本

70 3

然后查看最新数据查看接收数据

70 4

六、创建触发器,要是接收到False就告警

70 5

这边关闭主库数据库检查是否会告警

70 6

70 7

成功接收到报警邮件

发表评论

表情:
评论列表 (有 0 条评论,319人围观)

还没有评论,来说两句吧...

相关阅读

    相关 7. 监控MySQL主从状态

    在生产环境里,常见的MySQL架构使用最多的就是主从了,所以对于主从是否同步数据的监控尤为重要。如果使用了专业的监控软件(如zabbix)监控MySQL,那么选择监控工具提供的

    相关 zabbix 监控nginx状态

    很久没有写博客了,今天遇到个麻烦事,网站的访问量突然加大,监控报警是把我的机房带宽全部跑满了,最后把硬件防火墙的策略改动之后才恢复正常。然后负责人要关于nginx网站,和带宽的