Board logo

标题: Zabbix调用Python3脚本监控MySQL主从同步状态 [打印本页]

作者: admin    时间: 2020-5-11 12:22     标题: Zabbix调用Python3脚本监控MySQL主从同步状态

笺注:这是在 MySQL5.6主从/主主同步 的基础上进行的。 从服务器的数据库管理员root@localhost无密码验证登录MySQL: 图片1.png 查看当前登录的数据库用户: mysql> Select user(); +----------------+ | user() | +----------------+ | root@localhost | +----------------+ 1 row in set (0.00 sec) mysql> 查看root@localhost的权限: mysql> show grants for root@localhost; +---------------------------------------------------------------------+ | Grants for root@localhost | +---------------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION | | GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION | +---------------------------------------------------------------------+ 2 rows in set (0.00 sec) mysql> 注释:此时,root@localhost是没有密码的 显示所有的库: mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | data1 | | data2 | | mysql | | performance_schema | +--------------------+ 5 rows in set (0.07 sec) 注释:库mysql是默认就有的。 监控原理:从服务器的状态中,以下两项(Slave_IO_RunningSlave_SQL_Running)的返回值都必须为Yes mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.168.130 Master_User: happy Master_Port: 3306 Connect_Retry: 60 Master_Log_File: binlog.000001 Read_Master_Log_Pos: 454 Relay_Log_File: mysqld-relay-bin.000005 Relay_Log_Pos: 236 Relay_Master_Log_File: binlog.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 454 Relay_Log_Space: 570 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1 Master_UUID: 5bb1908b-7fcc-11e8-9ee0-000c292b173a Master_Info_File: /var/lib/mysql/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 1 row in set (0.00 sec) mysql> 注释:Seconds_Behind_Master是衡量Master与Slave之间主从同步延迟情况的一个重要参数,返回值为0时,表示没有延迟。 ###### 在从服务器上安装第三方库(PyMySQL),可参考:Python3脚本管理Linux下的MySQL 查看PyMySQL的版本: [root@mysql-2 ~]# pip3 freeze PyMySQL==0.10.1 [root@mysql-2 ~]# 注释:PyMySQL可以管理MySQL,也可以管理MariaDB ###### 在从服务器上创建Python3脚本:(监控Slave_IO_Running、Slave_SQL_Running) [root@mysql_2 ~]# cat /usr/local/Replication_status.py #coding=utf-8 import pymysql def db_connect(): db=pymysql.connect("localhost", "root", "", "mysql",3306,charset="utf8") #打开数据库连接;本地连接(localhost)、用户名、密码、其中一个库(mysql)的名称、端口号、字符集。 cursor=db.cursor() cursor.execute("show slave status") #执行SQL语句 Results=cursor.fetchone() #print (Results) #print (Results[10]) #print (Results[11]) a = Results[10] b = Results[11] if a=='Yes' and b=='Yes': print(1) else: print(0) db.close() def main(): try: db_connect() except Exception as e: print(e) if __name__ == "__main__": main() 设置脚本权限: [root@mysql_2 ~]# chmod a+x /usr/local/Replication_status.py [root@mysql_2 ~]# 测试: 在从服务器上关闭同步: mysql> stop slave; Query OK, 0 rows affected (0.01 sec) mysql> 在从服务器上本地测试Python3脚本: [root@mysql_2 ~]# python3 /usr/local/Replication_status.py 0 [root@mysql_2 ~]# 在从服务器上开启同步: mysql> start slave; Query OK, 0 rows affected (0.01 sec) mysql> 在从服务器上本地测试Python3脚本: [root@mysql_2 ~]# python3 /usr/local/Replication_status.py 1 [root@mysql_2 ~]# ############### 被监控主机的Agent的安装可参考 Zabbix使用Agent监控CentOS6/Redhat6 修改被监控主机的Agent配置文件:(只监控从服务器) [root@mysql_2 ~]# vi /etc/zabbix/zabbix_agentd.conf # UnsafeUserParameters=0 修改为:(启用该功能) UnsafeUserParameters=1 插入: UserParameter=Replication_status,/usr/bin/python3 /usr/local/Replication_status.py 如下图: 图片2.png 保存好配置文件后,重启zabbix-agent: [root@mysql_2 ~]# service zabbix-agent restart Shutting down Zabbix agent: [确定] Starting Zabbix agent: [确定] [root@mysql_2 ~]# ###### 在Zabbix服务器测试,验证能否获取被监控主机(192.168.168.131)的键值: [root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.131 -p10050 -k "Replication_status" 1 [root@centos8 ~]# ##################Zabbix添加被监控主机:(只监控从服务器) 配置》主机》创建主机:  (主机名称无需与被监控主机的真实主机名一致;群组可以随便选;IP地址那里要输入被监控主机的IP地址;端口为10050) 图片3.png 注释: 使用agent代理程序的接口。 使用 TCP 10050 端口。 主机添加成功:(主机可以不用模板的) 图片4.png 给“主从同步状态”创建监控项: 自定义名称: MySQL Replication_status 键值: Replication_status 信息类型: 数字(无正负) 图片5.png 备注:其他地方保持默认,点击底下的“添加”按键。 给监控项“MySQL Replication_status”创建触发器:(返回值等于0就告警) 自定义名称: MySQL Replication_status is down 严重性: 严重 图片6.png 插入表达式:(监控项: MySQL_Slave_2: MySQL Replication_status 图片7.png 自动生成的表达式:(触发器的表达式要用到监控项中的键值) {MySQL_Slave_2:Replication_status.last()}=0 图片8.png 本页拖下去: 图片9.png 给监控项“MySQL Replication_status”创建图形: 图片10.png 监控项: 图片11.png 查看图形“MySQL Replication_status image”: 监测》图形: 图片12.png 图片13.png 图片14.png 注释:图形中的“最新”值为 1 测试: 在从服务器上关闭同步: mysql> stop slave; Query OK, 0 rows affected (0.00 sec) mysql> 在从服务器上本地测试Python3脚本: [root@mysql_2 ~]# python3 /usr/local/Replication_status.py 0 [root@mysql_2 ~]# 在Zabbix服务器上远程测试: [root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.131 -k "Replication_status" 0 [root@centos8 ~]# 监控项“MySQL Replication_status”的返回值等于0时,仪表板会如下图显示:(显示对应触发器的名称) MySQL Replication_status is down 图片15.png 图片16.png 图形“MySQL Replication_status image”会自动发生改变: 图片17.png 注释:图形中的数据线是从右往左延伸的。 图片18.png 注释:图形中的“最新”值变为 0 在从服务器上开启同步: mysql> start slave; Query OK, 0 rows affected (0.00 sec) mysql> 图形“MySQL Replication_status image”也会自动发生改变: 图片19.png 图片20.png 注释:图形中的“最新”值变为 1 仪表板的告警自动消失: 图片21.png ############### ############### 在从服务器上创建Python3脚本:(监控Seconds_Behind_Master) [root@mysql_2 ~]# cat /usr/local/Seconds_Behind_Master.py #coding=utf-8 import pymysql def db_connect(): db = pymysql.connect("localhost", "root", "", "mysql",3306,charset="utf8") cursor = db.cursor() SQL_1 = "show slave status" #SQL语句 cursor.execute(SQL_1) #执行SQL语句 Result_1 = cursor.fetchone() print(Result_1[32]) #print(type(Result_1[32])) # db.close() def main(): try: db_connect() except Exception as e: print(e) if __name__ == "__main__": main() 设置脚本权限: [root@mysql_2 ~]# chmod a+x /usr/local/Seconds_Behind_Master.py [root@mysql_2 ~]# 运行脚本的结果: [root@mysql-2 ~]# python3 /usr/local/Seconds_Behind_Master.py 0 [root@mysql-2 ~]# ############### 修改被监控主机的Agent配置文件:(只监控从服务器) [root@mysql_2 ~]# vi /etc/zabbix/zabbix_agentd.conf 在UnsafeUserParameters=1下面插入自定义的键值: UserParameter=My_Seconds_Behind_Master,/usr/bin/python3 /usr/local/Seconds_Behind_Master.py 保存好配置文件后,重启zabbix-agent: [root@mysql_2 ~]# service zabbix-agent restart Shutting down Zabbix agent: [确定] Starting Zabbix agent: [确定] [root@mysql_2 ~]# ###### 在Zabbix服务器测试,验证能否获取被监控主机(192.168.168.131)的键值: [root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.131 -k My_Seconds_Behind_Master 0 [root@centos8 ~]# ###### 给键值“Seconds_Behind_Master”创建监控项: 自定义名称: Seconds Behind Master 192.168.168.130 键值: My_Seconds_Behind_Master 信息类型: 数字(无正负) 单位: !秒 图片22.png 备注:其他地方保持默认,点击底下的“添加”按键。 给监控项“Seconds Behind Master 192.168.168.130”创建图形: 图片23.png 监控项: 图片24.png 查看图形“Seconds Behind Master 192.168.168.130 image”: 监测》图形: 图片25.png 图片26.png 图片27.png 给监控项“Seconds Behind Master 192.168.168.130”创建触发器: 自定义名称: Replication lag is too high (over 30m for 5m) 严重性: 警告 表达式: {MySQL_Slave_2:My_Seconds_Behind_Master.min(5m)}>30m 图片28.png 注释:触发器的表达式要用到监控项中的键值。 本页拖下去: 图片29.png 再次查看图形“Seconds Behind Master 192.168.168.130 image”: 图片30.png 注释: replication lag 即,复制滞后 Replication lag is too high (over 30m for 5m) 即,连续5分钟,Seconds_Behind_Master的时长超过1800秒 相关文章: Zabbix使用模板监控MySQL主从同步状态 Zabbix调用Python3脚本监控Linux下的MySQL Zabbix调用Python3脚本监控Linux进程/内存使用率/分区使用率 ################################# ################################# 亲,学习研究也要劳逸结合哦,来我微店逛逛,买点东西好好犒劳犒劳自己和家人吧^_^^_^ 苏泊尔多功能电热锅韩式电火锅8-10人家用电炒锅不粘锅电锅电烤锅 guo.png 苏泊尔电火锅多功能家用电热锅不沾锅一体电煮锅宿舍4-6人 huoguo.png

图片附件: guo.png (2020-5-19 13:35, 470.68 KB) / 下载次数 36
http://blog.zhuohua.store/attachment.php?aid=7078&k=b2e38b3632ecb781df1f18d48df3d65b&t=1714385317&sid=88i4P3



图片附件: huoguo.png (2020-5-19 13:40, 444 KB) / 下载次数 39
http://blog.zhuohua.store/attachment.php?aid=7079&k=146b6f043d0f3e36838c24febec3f916&t=1714385317&sid=88i4P3



图片附件: 图片1.png (2022-9-10 15:30, 128.24 KB) / 下载次数 69
http://blog.zhuohua.store/attachment.php?aid=20815&k=76f2648c33966fb7738b52a3f304a709&t=1714385317&sid=88i4P3



图片附件: 图片2.png (2022-9-10 15:36, 36.01 KB) / 下载次数 55
http://blog.zhuohua.store/attachment.php?aid=20816&k=7b7e674988d74fa1ea2063551c9af82c&t=1714385317&sid=88i4P3



图片附件: 图片3.png (2022-9-10 15:37, 34.5 KB) / 下载次数 50
http://blog.zhuohua.store/attachment.php?aid=20817&k=14b314de542d2614583c7f64b3253d40&t=1714385317&sid=88i4P3



图片附件: 图片4.png (2022-9-10 15:38, 27.42 KB) / 下载次数 57
http://blog.zhuohua.store/attachment.php?aid=20818&k=efe250b7220c243e33ea2412c65a40c4&t=1714385317&sid=88i4P3



图片附件: 图片5.png (2022-9-10 15:38, 24.83 KB) / 下载次数 49
http://blog.zhuohua.store/attachment.php?aid=20819&k=00df286078927ef5109340face06654e&t=1714385317&sid=88i4P3



图片附件: 图片6.png (2022-9-10 15:39, 39.52 KB) / 下载次数 45
http://blog.zhuohua.store/attachment.php?aid=20820&k=98ce8f0a01e55ecc7dcc055c95d7f748&t=1714385317&sid=88i4P3



图片附件: 图片7.png (2022-9-10 15:39, 28.21 KB) / 下载次数 56
http://blog.zhuohua.store/attachment.php?aid=20821&k=1804966f4f5b852d1ed252095b7d2674&t=1714385317&sid=88i4P3



图片附件: 图片8.png (2022-9-10 15:39, 13.03 KB) / 下载次数 68
http://blog.zhuohua.store/attachment.php?aid=20822&k=a9fda89b3bdb079df7f067362943766a&t=1714385317&sid=88i4P3



图片附件: 图片9.png (2022-9-10 15:39, 12.66 KB) / 下载次数 57
http://blog.zhuohua.store/attachment.php?aid=20823&k=ecd19d06640762ace5c6202b9afb5e32&t=1714385317&sid=88i4P3



图片附件: 图片10.png (2022-9-10 15:40, 55.17 KB) / 下载次数 66
http://blog.zhuohua.store/attachment.php?aid=20824&k=9f2352766b0e4eee3cbb2608cf5a03bd&t=1714385317&sid=88i4P3



图片附件: 图片11.png (2022-9-10 15:40, 15.84 KB) / 下载次数 57
http://blog.zhuohua.store/attachment.php?aid=20825&k=a1518ca7edd0577dc54ef5d9b0eeb49e&t=1714385317&sid=88i4P3



图片附件: 图片12.png (2022-9-10 15:41, 5.58 KB) / 下载次数 64
http://blog.zhuohua.store/attachment.php?aid=20826&k=331450fa8d554932a12d8867fb151dcb&t=1714385317&sid=88i4P3



图片附件: 图片13.png (2022-9-10 15:42, 63.42 KB) / 下载次数 64
http://blog.zhuohua.store/attachment.php?aid=20827&k=caf3376245408316aa492e58b2ebd3a5&t=1714385317&sid=88i4P3



图片附件: 图片14.png (2022-9-10 15:42, 20.2 KB) / 下载次数 45
http://blog.zhuohua.store/attachment.php?aid=20828&k=d896985b7f104009dd8a0f888301a792&t=1714385317&sid=88i4P3



图片附件: 图片15.png (2022-9-10 15:43, 45.74 KB) / 下载次数 53
http://blog.zhuohua.store/attachment.php?aid=20829&k=1a71ced43575cf10f2518d3a83e57d33&t=1714385317&sid=88i4P3



图片附件: 图片16.png (2022-9-10 15:43, 20.62 KB) / 下载次数 57
http://blog.zhuohua.store/attachment.php?aid=20830&k=d83dc3c173a8be092d72fb6dce9b11e1&t=1714385317&sid=88i4P3



图片附件: 图片17.png (2022-9-10 15:43, 74.69 KB) / 下载次数 64
http://blog.zhuohua.store/attachment.php?aid=20831&k=a83323740d185d98ff39aa453f2ee19a&t=1714385317&sid=88i4P3



图片附件: 图片18.png (2022-9-10 15:44, 21.26 KB) / 下载次数 53
http://blog.zhuohua.store/attachment.php?aid=20832&k=8e4103be2b7904fb726f417c9dd0bb1a&t=1714385317&sid=88i4P3



图片附件: 图片19.png (2022-9-10 15:44, 64.71 KB) / 下载次数 52
http://blog.zhuohua.store/attachment.php?aid=20833&k=4950a6e226d4ca535aa3688835afc119&t=1714385317&sid=88i4P3



图片附件: 图片20.png (2022-9-10 15:44, 45.82 KB) / 下载次数 55
http://blog.zhuohua.store/attachment.php?aid=20834&k=e0c10a5496deb17afbe77f0df1262dfc&t=1714385317&sid=88i4P3



图片附件: 图片21.png (2022-9-10 15:45, 41.52 KB) / 下载次数 54
http://blog.zhuohua.store/attachment.php?aid=20835&k=a9343969f846e06cb6afefbd7fda02e1&t=1714385317&sid=88i4P3



图片附件: 图片22.png (2022-9-10 15:47, 27.84 KB) / 下载次数 10
http://blog.zhuohua.store/attachment.php?aid=20836&k=22b3c2bf39fd81c1e9ad23274a7a4259&t=1714385317&sid=88i4P3



图片附件: 图片23.png (2022-9-10 15:47, 56.1 KB) / 下载次数 13
http://blog.zhuohua.store/attachment.php?aid=20837&k=023ae18d871cd17745c29b884b02cf2b&t=1714385317&sid=88i4P3



图片附件: 图片24.png (2022-9-10 15:48, 17.1 KB) / 下载次数 22
http://blog.zhuohua.store/attachment.php?aid=20838&k=6a7730913d5a5b8d581d8d9802dc8748&t=1714385317&sid=88i4P3



图片附件: 图片25.png (2022-9-10 15:48, 5.14 KB) / 下载次数 22
http://blog.zhuohua.store/attachment.php?aid=20839&k=830cbee7c97c367a14a4f81b603fd0a5&t=1714385317&sid=88i4P3



图片附件: 图片26.png (2022-9-10 15:48, 78.87 KB) / 下载次数 27
http://blog.zhuohua.store/attachment.php?aid=20840&k=5d591817e4c24270ec7f129ada0df3a6&t=1714385317&sid=88i4P3



图片附件: 图片27.png (2022-9-10 15:48, 12.94 KB) / 下载次数 14
http://blog.zhuohua.store/attachment.php?aid=20841&k=909bc05b76f1d14462464f7df27c1adf&t=1714385317&sid=88i4P3



图片附件: 图片28.png (2022-9-10 15:49, 58.14 KB) / 下载次数 19
http://blog.zhuohua.store/attachment.php?aid=20842&k=052428f5c0415fbdce460be7e946585c&t=1714385317&sid=88i4P3



图片附件: 图片29.png (2022-9-10 15:49, 12.66 KB) / 下载次数 22
http://blog.zhuohua.store/attachment.php?aid=20843&k=cec8c9afe190d3435e89a3d976f0b33a&t=1714385317&sid=88i4P3



图片附件: 图片30.png (2022-9-10 15:50, 124.89 KB) / 下载次数 24
http://blog.zhuohua.store/attachment.php?aid=20844&k=3e7710cff5176b8c3e01a26a403e2508&t=1714385317&sid=88i4P3






欢迎光临 blog.zhuohua.store (http://blog.zhuohua.store/) Powered by Discuz! 7.2