欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

Zabbix调用python脚本监控MySQL主从复制状态
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
Zabbix调用python脚本监控MySQL主从复制状态
Zabbix调用python脚本监控MySQL主从复制状态
在Monitoring - Latest data查看数据
Zabbix调用python脚本监控MySQL主从复制状态

Zabbix调用python脚本监控MySQL主从复制状态 在对应的主机上配置trigger

Zabbix调用python脚本监控MySQL主从复制状态
Zabbix调用python脚本监控MySQL主从复制状态
触发告警

mysql> stop slave;

Zabbix调用python脚本监控MySQL主从复制状态

相关标签: devops