使用Zabbix + Python对Mysql监控
一、背景介绍
随着公司业务的变迁,公司的开发数据库以mysql为主了。mysql服务器层面的监控,例如CPU、内存、硬盘空间等就用zabbix自带的linux模板即可。数据库层面zabbix也自带了一个模板,但是它需要将mysql的密码写到my.cnf文件中,这样不安全,因此决定自己写一个。原先我写过一个用python去监控oracle的博客使用zabbix监控oracle数据库,对于mysql的监控大同小异,只需要简单改改监控项即可。
二、监控方式
Zabbix服务端的环境为:CentOS 6.10, Zabbix 3.4.15, Python 3.6.8。被监控的mysql 版本为8.0.x。监控采用外部检查(External Check)的方式,即从zabbix服务端执行python脚本,去查询被监控的mysql信息。这种方式的好处是监控脚本放在zabbix服务端,后面想修改模板和脚本只需要在zabbix服务端修改一次即可,被监控端不用做任何操作,省心。
三、监控项规划
确定好了监控方式,接下来就开始对监控项进行规划。
1. os层
port:mysql端口是否正常监听,检测不到监听端口,报警
proc:mysqld进程是否存在,检测不到mysqld进程,报警
以上两个监控项通过zabbix agent采集信息(需要在被监控机安装zabbix-agent)
2. db层
主库和从库都包括的监控项:
readonly:是否只读,状态发生改变时报警
uptime:运行时间,uptime减少表示数据库发生了重启,报警
queries:检查qps
select: 查询的sql次数
update: 更新的sql次数
delete: 删除的sql次数
insert: 插入的sql次数
slow_queries: 慢查询次数
threads_running: 正在运行的线程数,设定100,超过该值报警,根据自己需求适当调整
threads_limit: 线程限制,设定90%,超过该值报警,根据自己需求适当调整
只在从库有的监控项:
从库采用自动发现的方式,即执行“show slave status”有结果就表明这个是从库
slave_io_running:从库的io线程,如果不为YES,报警
slave_sql_running: 从库的sql线程,如果不为YES,报警
seconds_behind_master:从库落后主库的时间,设定10分钟,超过该值报警,根据自己需求适当调整
四、实践
我假设你已经有了zabbix服务端,因此这里略过如何搭建zabbix。
在zabbix服务端安装python3(略),并安装argparse, inspect, pymysql包。
将附件中的mysqlmon.py放入/usr/lib/zabbix/externalscripts下,同时赋权限chmod 755 mysqlmon.py,注意修改mysqlmon.py的第一行#!/usr/local/python3/bin/python3,这里要改成你自己的python执行路径。
将附件的mysql_template.xml导入到zabbix中(我是基于zabbix 3.4.15写的模板,其它zabbix版本可能会出现模板导不进去的情况)。

添加服务器,链接到模板Template-Db-Mysql-ExternalCheck-Customize。

在被监控的mysql中创建监控用户,用户只需要有show view, replication client权限即可。
grant show view, replication client on . to xxx;修改主机中的宏(address,username,password填写被监控mysql的信息)

后面就能看到相关图形和报警了


如果想自己添加一个监控项,则只需要在mysqlmon.py添加一个方法,方法名与key的参数名一致即可(下面是一个示例,我用红框圈出来的地方)


如果大家在使用过程中碰到了问题以及想添加其它的监控项,欢迎大家在博客下面留言,我后续对这个模板进行改进。
五、附件
下面附件下载都为txt后缀,需要手工修改
mysqlmon.py下载地址
mysql_template.xml下载地址
使用Zabbix + Python对Mysql监控的更多相关文章
- 如何在Zabbix上安装MySQL监控插件PMP
PMP,全称是Percona Monitoring Plugins,是Percona公司为MySQL监控写的插件.支持Nagios,Cacti.从PMP 1.1开始,支持Zabbix. 下面,看看如何 ...
- 6.Zabbix 3.0 MySQL 监控
请查看我的有道云笔记: http://note.youdao.com/noteshare?id=94cd760a4848939d33892b7464cc0401&sub=8B6EDD27671 ...
- 【Linux】Zabbix + MPM + msmtp + mutt 监控MySQL + 邮件报警
Zabbix部署参考博文 http://blog.sina.com.cn/s/blog_5611597901017oe0.html MPM安装配置参考博文和MPM官网下载地址 http://blog ...
- 京东MySQL监控之Zabbix优化、自动化
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://wangwei007.blog.51cto.com/68019/1833332 随 ...
- 转 zabbix debug and zabbix使用percona插件监控mysql
########## https://www.cnblogs.com/keithtt/p/8542987.html zabbix使用percona插件监控mysql 1.添加percona仓库. ...
- zabbix系列 ~ 如何更好的利用mysql监控
一 简介:今天来聊聊一些关于mysql 监控需要关注的问题二 实现的原理 1 global status 2 variables 三 我们需要关注的zabbix性能图 1 事务类型 ...
- Zabbix学习之路(五)之MySQL监控
1.linux-node2节点安装数据库 [root@linux-node2 ~]# yum install -y mariadb-server [root@linux-node2 ~]# syste ...
- ZABBIX 3.0 配置监控MYSQL性能【OK】
Zabbix3.0自带了MySQL插件来监控mysql数据库的模板,只需要配置好agent客户端,然后在web端给主机增加模板就行了. 参考:http://www.cnblogs.com/keving ...
- zabbix通过percona插件监控mysql
percona zabbix mysql-plugin是percona发布的一个使用zabbix监控mysql数据库的工具,这款工具比zabbix自带的监控模板要强大的多,毕竟percona是Mysq ...
随机推荐
- Typora的基础操作
#一级标题 ##二级标题 ###三级标题 ####四级标题 加粗 倾斜 加粗又倾斜 ---下划线 插入图片 英文状态下 感叹号+中括号+小括号 //中括号内为图片名字 若想插入网络图片 在网络上找一个 ...
- [bzoj2789]Letters
考虑A中第i次出现的j字符,最终位置一定是在B中第i次出现的j字符的位置,然后即求逆序对数量,cdq/线段树即可 1 #include<bits/stdc++.h> 2 using nam ...
- CF1175G
叉姐牛逼. \(f_{k,i} = \min_{0\leq j <i}{f_{k - 1,j} + RMQ(j + 1,i) * (i - j)}\) 我们考虑在序列上分治一波. 按照\(m\) ...
- NOIP2020 自爆记
Day -4 - 2459184 本学期第 14 周终于到来了,NOIP 只剩 5 周了. djq 进国集了,先以膜为敬. 晚上上 hb,hb 让我们记了几点要求: 认真读题,要一字一句读题,包括输入 ...
- Codeforces 1383F - Special Edges(状态压缩+最大流)
Codeforces 题目传送门 & 洛谷题目传送门 首先暴力显然是不行的,如果你暴力最大流过了我请你吃糖 注意到本题的 \(k\) 很小,考虑以此为突破口解题.根据最大流等于最小割定理,点 ...
- python(3)跳过第一行(多行)读入数据
查了下资料,常见两种办法,一是设置行号,再者是利用python自带的itertools工具. 这里推荐一种新的方法,直接使用readline()函数就搞定. 示例: 创建一个文本文件,内容如下: 1 ...
- exit(0) exit(1) return() 3个的区别
exit(0):正常运行程序并退出程序: exit(1):非正常运行导致退出程序: return():返回函数,若在主函数中,则会退出函数并返回一值. 详细说: 1. return返回函数值,是关键字 ...
- 11-String to Integer (atoi)
字符串转整型,更新之后的leetcode题,需考虑各种情况, 测试过标准库的atoi函数,当字符串越界返回的值是错的, 而该题要求越界时的返回边界值,更加严谨. Implement atoi to c ...
- python 封装、绑定
目录 python 封装.绑定 1.数据.方法的封装 2.隐藏属性 3.开放接口 4.绑定方法 1.对象的绑定 2.类的绑定(classmethod) 3.非绑定方法(staticmethod) 4. ...
- Redis | 第10章 二进制数组、慢查询日志和监视器《Redis设计与实现》
目录 前言 1. 二进制位数组 1.1 位数组的表示 1.2 GETBIT 命令的实现 1.3 SETBIT 命令的实现 1.4 BITECOUNT 命令的实现 1.5 BITOP 命令的实现 2. ...