使用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 ...
随机推荐
- 大数据学习——搭建第一台Hadoop主机
类型:学习笔记 参考:尚硅谷大数据系列教程 工具准备 1.VMware 2.CentOS 7 最小安装版 3.远程工具推荐使用 FinalShell 安装系统 1.打开VMware,根据自己的情况配置 ...
- php开发微信公众号(1)
最近找了个方向提升自己的技术站,发现微信是一个不错的选择 1.入门 申请公众号这些都不说了,另外你必须需要php.h5.MySQL等基本知识才能看懂此文章,还需要有一个服务器及域名,由于我遇见问题也会 ...
- 利用opencv进行简易的拍照并处理照片
今天用python写了一个调用摄像头拍照并对图片进行素描化或动漫化的小demo. 首先我的环境是:PyCharm+python3.8+opencv-python(4.4.0.42) 我们分析一下思路, ...
- ABC 210
A 按题意模拟. scanf("%lld%lld%lld%lld",&n,&a,&x,&y); std::cout<<n * x - ( ...
- Codeforces 506E - Mr. Kitayuta's Gift(神仙矩阵乘法)
Codeforces 题目传送门 & 洛谷题目传送门 神仙题 %%%%%%%%%%%%% u1s1 感觉这道题风格很省选( 下记 \(m=|s|\),首先探讨 \(n+m\) 为偶数的情形. ...
- P3722 [AH2017/HNOI2017]影魔(单调栈+扫描线+线段树)
题面传送门 首先我们把这两个贡献翻译成人话: 区间 \([l,r]\) 产生 \(p_1\) 的贡献当且仅当 \(a_l,a_r\) 分别为区间 \([l,r]\) 的最大值和次大值. 区间 \([l ...
- char *p、char p[]、字符串的几个题目
总结一下遇到的关于char *p.char p[]和字符串的题目: 例一:(指针的指针) 1 void getmemory(char **p) 2 { 3 p = (char *)malloc(100 ...
- C++ and OO Num. Comp. Sci. Eng. - Part 3.
2. Expressions and Statements 声明是将一个种类型的变量引入程序的语句. 作用域 作用域又一对花括号限定,在所有花括号之外的为全局作用域. 在作用域内声明的变量为局部变量. ...
- R shiny 小工具Windows本地打包部署
目录 服务器部署简介 windows打包部署 1. 部署基本框架 2.安装shiny脚本需要的依赖包 3.创建运行shiny的程序 [报错解决]无法定位程序输入点EXTPTE_PTR于动态链接库 将小 ...
- SQL-关联表查询(连表查询)
0.例如:select * from T1,T2 where T1.a=T2.a 1.连表查询 <=> join(inner join)内连接查询 数据源: Persion表: ...