Skip to content Skip to footer

Zabbix 随笔:监控 mysql 数据库(基础篇)

本文带来带来如何监控 MySQL 的教程。MySQL 相比于 PG 和 MS SQL 监控难度最小,因为比较成熟,而且使用广泛,自然监控手段就没那么复杂,当然因为是基础篇,所以才说难度较低,监控的指标依照官方模板,对于初学者来说足够使用了。如果有深入的监控需求,那就需要和业务方沟通,根据监控的范围来制作自定义指标了。

正文本文环境Zabbix 6.0 LTSMysql 8.0 / Mariadb 10.6RockyLinux 8.5Zabbix agent 6.0.1Zabbix 前端配置由于是基础篇,本文以 Zabbix Server 自身的后端数据库为例(如果环境为 mariadb 10.6 的朋友脚本请参考附录)

调用数据库模板进入配置选项里的主机选项,点击 Zabbix Server

由于 6.0 相比于 5.0 的前端操作逻辑有点区别,所以这里点击模板块的 select

监控 mysql 的模板在Templates/Databases下的Template DB MYSQL(如果是 Zabbix 5,则为 Template DB MySql by Zabbix agent)

添加完成如下

此时等了一会发现无法获取 mysql 的相关数据,点击主机的监控项查看发现显示都为 Unsupported item key,其次通过查看 Zabbix Server 的日志也可以发现也是这问题。

前端报错显示日志报错显示创建监控用户及授权代码语言:javascript代码运行次数:0运行复制CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY 'xiaoyu123';

GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';创建数据库免密登录文件(.my.cnf)由于普通的 Zabbix agent 是不具备数据库登录环境的,所以需要调用数据库客户端登录数据库,此时需要创建免密登录文件来实现,而 Zabbix agent 的家目录在 /var/lib/zabbix 下(如果没有就创建),本文演示没有。

代码语言:javascript代码运行次数:0运行复制mkdir -m u=rwx,g=rwx,o= -p /var/lib/zabbix

chown zabbix:zabbix /var/lib/zabbix

touch /var/lib/zabbix/.my.cnf将下面内容填入到 .my.cnf 即可

代码语言:javascript代码运行次数:0运行复制[client]

user='zbx_monitor'

password='xiaoyu123'创建自定义监控项代码语言:javascript代码运行次数:0运行复制vim /etc/zabbix/zabbix_agentd.d/mysql.conf代码语言:javascript代码运行次数:0运行复制UserParameter=mysql.ping[*], mysqladmin -h"$1" -P"$2" ping

UserParameter=mysql.get_status_variables[*], mysql -h"$1" -P"$2" -sNX -e "show global status"

UserParameter=mysql.version[*], mysqladmin -s -h"$1" -P"$2" version

UserParameter=mysql.db.discovery[*], mysql -h"$1" -P"$2" -sN -e "show databases"

UserParameter=mysql.dbsize[*], mysql -h"$1" -P"$2" -sN -e "SELECT COALESCE(SUM(DATA_LENGTH + INDEX_LENGTH),0) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"

UserParameter=mysql.replication.discovery[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"

UserParameter=mysql.slave_status[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"重启 agent代码语言:javascript代码运行次数:0运行复制systemctl restart zabbix-agent效果通过后台日志可以发现,原来不支持的监控项已经变成支持了,且数据也恢复正常了

日志显示正常前端 dashboard 显示效果最新数据附录有部分朋友有可能后端采用的为 Mariadb ,10.6 版本做了比较大的调整,所以自定脚本需要调整,调整如下

代码语言:javascript代码运行次数:0运行复制UserParameter=mysql.ping[*], mysqladmin -h"$1" ping

UserParameter=mysql.get_status_variables[*], mysql -h"$1" -sNX -e "show global status"

UserParameter=mysql.version[*], mysqladmin -s -h"$1" version

UserParameter=mysql.db.discovery[*], mysql -h"$1" -sN -e "show databases"

UserParameter=mysql.dbsize[*], mysql -h"$1" -sN -e "SELECT COALESCE(SUM(DATA_LENGTH + INDEX_LENGTH),0) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"

UserParameter=mysql.replication.discovery[*], mysql -h"$1" -sNX -e "show slave status"

UserParameter=mysql.slave_status[*], mysql -h"$1" -sNX -e "show slave status"

写在最后整个过程不太难,当然要理解其中模板的调用关系还是稍微有点复杂,只有了解了 Zabbix 自定义监控脚本才能更深层次监控 MySQL 数据库,当然这个是后话了,先要从 0 到 1,才能更好的进步,毕竟千里之行,始于足下嘛,最后大家如果在使用中遇到什么问题或者有什么疑问,欢迎留言和私信我哦。

Copyright © 2088 世界杯射手榜_2014世界杯16强对阵表 - panlongs.com All Rights Reserved.
友情链接