本文带来带来如何监控 MySQL 的教程。MySQL 相比于 PG 和 MS SQL 监控难度最小,因为比较成熟,而且使用广泛,自然监控手段就没那么复杂,当然因为是基础篇,所以才说难度较低,监控的指标依照官方模板,对于初学者来说足够使用了。如果有深入的监控需求,那就需要和业务方沟通,根据监控的范围来制作自定义指标了。
由于是基础篇,本文以 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 的日志也可以发现也是这问题。
CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY 'xiaoyu123';
GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
由于普通的 Zabbix agent 是不具备数据库登录环境的,所以需要调用数据库客户端登录数据库,此时需要创建免密登录文件来实现,而 Zabbix agent 的家目录在 /var/lib/zabbix
下(如果没有就创建),本文演示没有。
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
即可
[client]
user='zbx_monitor'
password='xiaoyu123'
vim /etc/zabbix/zabbix_agentd.d/mysql.conf
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"
systemctl restart zabbix-agent
通过后台日志可以发现,原来不支持的监控项已经变成支持了,且数据也恢复正常了
有部分朋友有可能后端采用的为 Mariadb ,10.6 版本做了比较大的调整,所以自定脚本需要调整,调整如下
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,才能更好的进步,毕竟千里之行,始于足下嘛,最后大家如果在使用中遇到什么问题或者有什么疑问,欢迎留言和私信我哦。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。