本文转载于个人博客:https://docs.wziqi.vip/
前言:
1. zabbix默认监控模板中有监控Mysql的一些监控项,但是感觉不是太符合自己的情况使用,所以想着做一套自定义监控项来监控Mysql的各项数据。
2. 安装zabbix跟Mysql的步骤就略过了,可以看前面几篇帖子自行安装。
3. 这边我先监控了Mysql的以下一些数据,后边会根据需要在不断补充:
当前连接数 历史连接数 配置连接数 Mysql状态 线程正在运行 每秒创建的线程数 线程连接 缓存线程 Mysql CPU,内存利用率
第一步 创建自定义监控项
这边在我之前测试的agent2主机上已经使用Docker安装了Mysql8.0
在Mysql创建一个监控用户
# 在Mysql中创建一个zabbix监控用户
CREATE USER 'zabbix'@'%'IDENTIFIED BY 'zabbix';
GRANT USAGE,REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zabbix'@'%';
flush privileges;
# 修改一下mysql的配置文件,把用户添加进去,要不收集信息的时候mysql会警告命令行中输入密码是不安全的行为
vim /etc/mysql/my.cnf # 打开Mysql的配置文件底部添加以下几行
[client]
user=zabbix
password=zabbix
[mysqladmin]
host=localhost
user=zabbix
password=zabbix
docker restart mysql8.0 # 重启一下服务重载配置文件
创建自定义监控项配置文件
因为我的Mysql是用Docker搭建的,所以每个命令前面我都加了一个docker exec -it mysql8.0,如果自己有想法可以更改,不是必须的,只要能获取到想要的值就行
因为第一步已经把监控用户放到配置文件中了,所以这边就不需要mysql -u -p 的这两个参数了
自定义监控项参数为:
UserParameter= # 固定格式
mysql.Cpu # 键值,添加监控项就是用它等于标识符
,docker stats.... # 逗号以后的就是收集指标的命令了
创建一个自定义监控项的配置文件
vim /etc/zabbix/zabbix_agent2.d/mysql.conf
# Mysql CPU 内存利用率
UserParameter=mysql.Cpu,docker stats --no-stream | grep mysql8.0 | awk '{print $3}' | sed s'/%//'
UserParameter=mysql.Mem,docker stats --no-stream | grep mysql8.0 | awk '{print $4}' | sed s'/MiB//'
# 当前连接数 历史连接数 配置连接数
UserParameter=mysqld.Threads_connected,docker exec mysql8.0 bash -c "mysql -e \"SHOW GLOBAL STATUS LIKE 'Threads_connected';\"" | awk 'NR==2{print $2}'
UserParameter=mysql.Max_used_connections,docker exec mysql8.0 bash -c "mysql -e \"SHOW GLOBAL STATUS LIKE 'Max_used_connections';\"" | awk 'NR==2{print $2}'