前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Zabbix 随笔:监控 mysql 数据库(基础篇)

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

原创
作者头像
IT小白Kasar
修改2022-03-04 10:26:51
7.1K0
修改2022-03-04 10:26:51
举报
文章被收录于专栏:个人技术随笔

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

正文

本文环境

  • Zabbix 6.0 LTS
  • Mysql 8.0 / Mariadb 10.6
  • RockyLinux 8.5
  • Zabbix agent 6.0.1

Zabbix 前端配置

由于是基础篇,本文以 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
复制
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
复制
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
复制
[client]
user='zbx_monitor'
password='xiaoyu123'
创建自定义监控项
代码语言:javascript
复制
vim /etc/zabbix/zabbix_agentd.d/mysql.conf
代码语言:javascript
复制
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
复制
systemctl restart zabbix-agent

效果

通过后台日志可以发现,原来不支持的监控项已经变成支持了,且数据也恢复正常了

日志显示正常
日志显示正常
前端 dashboard 显示效果
前端 dashboard 显示效果
最新数据
最新数据

附录

有部分朋友有可能后端采用的为 Mariadb ,10.6 版本做了比较大的调整,所以自定脚本需要调整,调整如下

代码语言:javascript
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正文
    • 本文环境
      • Zabbix 前端配置
        • 创建监控用户及授权
        • 效果
    • 附录
    • 写在最后
    相关产品与服务
    云数据库 MySQL
    腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档