使用 Zabbix agent监控MySQL
根据Zabbix官方文档,Zabbix服务器要监控MySQL服务器,有几种方法:Zabbix agent、Zabbix agent 2或(ODBC)方式。
之前测试了Zabbix agent 2和(ODBC)两种方式,本文记录如何通过部署 Zabbix agent监控 MySQL 服务器。
官方文档并不推荐采用Zabbix agent方式监控MySQL 服务器,只是在某些设置可能不支持 Zabbix agent 2 或需要自定义方法的情况下,可以作为一种备用方式。 实测agent方式配置比较麻烦,配置失败率在三种方式中最高。
一、测试环境
1、Zabbix服务器配置:
Zabbix 版本: Zabbix 7.0.3 LTS
操作系统: Ubuntu 24.04 (Noble)
数据库: MySQL 8
Web 服务器: Apache
IP:192.168.1.242
2、监控目标主机配置
操作系统: Ubuntu 24.04 (Noble)(官方文档中案例就是Ubuntu,一开始尝试用Rocky、CENTOS,反复多次无法获取到数据,有成功的小伙伴可以分享下)
数据库: MySQL 8
IP:192.168.1.194
二、配置过程
1、在目标机上创建MySQL用户
要监控MySQL服务器,Zabbix需要访问其进程。因此,需要创建一个仅用于监控MySQL服务器的MySQL用户"zbx_monitor" ,并向该用户授予必要的权限:
#mysql -u root -p
mysql> CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '<password>';
mysql> GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
mysql> quit;
2、在目标机上安装配置Zabbix agent
导入Zabbix库
# dnf clean all
安装Zabbix agent
# dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
配置Zabbix Agent:
编辑 /etc/zabbix/zabbix_agent.conf 文件,设置Server参数为本地Zabbix Server地址。
Server=<ZABBIX_SERVER_IP>
启动Zabbix Agent服务并设置开机自启:
# systemctl start zabbix-agent
# systemctl enable zabbix-agent
检查Zabbix Agent服务状态:
# systemctl status zabbix-agent2
确保防火墙允许Zabbix Agent端口(默认为10050)的流量:
# firewall-cmd --add-port=10050/tcp --permanent
# firewall-cmd –reload
切换到 Zabbix agent 附加配置目录。
# cd /etc/zabbix/zabbix_agentd.d
在Zabbix agent附加配置目录中创建一个 template_db_mysql.conf 文件。
# vi template_db_mysql.conf
将 以下内容复制到创建的 template_db_mysql.conf 文件中,然后保存。(这个文件可以在zabbix官方存储库中找到,地址:https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_agent/template_db_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"
重启Zabbix agent以更新其配置。
# systemctl restart zabbix-agent
导航到Zabbix agent主目录(如果系统上不存在,则需要创建它;默认值: /var/lib/zabbix)。
本机上无此目录
# Mkdir /var/lib/zabbix
# cd /var/lib/zabbix
在Zabbix agent主目录中创建一个 .my.cnf 文件。
# vi .my.cnf
将以下内容复制到 .my.cnf 文件 (<password> 替换为 "zbx_monitor" 用户的密码)。
[client]
user='zbx_monitor'
password='<password>'
3、配置 Zabbix 前端
登录Zabbix服务器前端,在Zabbix web界面中创建主机
在主机名字段中,输入主机名。
在模板字段中,选择 "MySQL by Zabbix agent " 模板, 链接 到主机。
在接口字段中, 添加一个 "Agent" 类型的接口,填写MySQL 服务器 IP 地址,此处为192.168.1.194。
与Zabbix agent2配置不同,不需要配置 宏 。
等待几分钟后,打开监测->主机 菜单,如果能看到收集到的指标数据,证明配置已成功。