一、背景介绍
随着公司业务的变迁,公司的开发数据库以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层
主库和从库都包括的监控项:
re