一、在装有zabbix-agent服务器配置中添加脚本
需要在服务器安装python3和mysqlclient模块
yum install -y python3 python3-devel
二进制安装python3参考:https://blog.csdn.net/qq_39626154/article/details/118415815
安装模块时报错信息:
OSError: mysql_config not found
解决方法:
执行以下命令yum install python-devel mysql-devel -y
然后再 pip3 install mysqlclient 可顺利安装完成
[root@db ~]# cd /etc/zabbix/
[root@db zabbix]# mkdir script
[root@db zabbix]# cd script/
[root@db script]# vim slave_status.py
编写脚本内容如下:
#!/usr/bin/python3
#coding:utf-8
import MySQLdb
import sys
class check_gz_repl():
def __init__(self):
#根据实际的连接参数添加参数变量
self.dbhost = '127.0.0.1'
self.dbuser = 'root'
self.dbpass = '*****'
self.dbport = 3306
self.db = "mysql"
#连接mysql数据库执行show slave status;语句并截取slave的io与sql进程运行状态
self.conn = MySQLdb.connect(host=self.dbhost, user=self.dbuser, passwd=self.dbpass, port=self.dbport, db=self.db)
self.cursor = self.conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
self.sql = 'show slave status;'
self.cursor.execute(self.sql)
self.data = self.cursor.fetchall()
self.io = self.data[0]['Slave_IO_Running']
self.sql = self.data[0]['Slave_SQL_Running']
self.conn.close()
#根据进程状态返回相应的状态码1或0
def get_io_status(self):
if self.io == 'Yes':
return 1
else:
return 0
def get_sql_status(self):
if self.sql == 'Yes':
return 1
else:
return 0
#输入系统参数对相应内容进行打印
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: %s [io|sql]" %sys.argv[0])
sys.exit(1)
mysql = check_gz_repl()
if sys.argv[1] == "io":
print(mysql.get_io_status())
elif sys.argv[1] == "sql":
print(mysql.get_sql_status())
为脚本添加可执行权限
[root@db script]# chmod +x slave_status.py
二、添加自定义监控项目
[root@db script]# cd /etc/zabbix/zabbix_agentd.d/
[root@db script]# vim userparameter_mysql_slave.conf
#获取mysql_slave状态
UserParameter=mysql.slave[*],/etc/zabbix/script/slave_status.py $1
添加好后重启zabbix-agent进程
systemctl restart zabbix-agent
在zabbix-server服务器上运行zabbix_get检测一下脚本运行状态
[root@zabbix ~]# zabbix_get -s 192.168.100.18 -k mysql.slave[io]
1
#返回结果为1,说明状态正常。结果为0即进程中断。
三、在zabbix-web页面上配置模板
添加一个mysql-slave的模板,选择要实施的群组
添加io与sql监控项,每分钟执行一次脚本返回对应值
再添加监控项相应的触发器,严重性我这里设置为警告。一旦触发器响应,会触发响应的告警动作。
添加相应的图形
图形预览
四、主机链接相应的模板
选择主机中的模板选项,选择我们刚刚创建好的MySQL_Slave模板
链接完成后就可在该主机的图形选项中查看到该监控的运行状态