Zabbix Agent2 自带对 MySQL 的参数配置,但其配置方式与一代 Agent (zabbix-agent) 存在差异,主要通过模板和宏实现,无需手动编写 UserParameter 或配置文件。以下是具体分析:
1. 核心区别:Agent vs Agent2 的配置方式
-
Zabbix Agent (一代):
- 需手动复制
template_db_mysql.conf
到配置目录(如/etc/zabbix/zabbix_agentd.d/
),并定义UserParameter
(如mysql.ping
,mysql.version
等)[1][5]。 - 需要创建
.my.cnf
文件(含监控用户的用户名、密码)并放置在 Agent 的家目录中[1][5]。
- 需手动复制
-
Zabbix Agent2:
- 无需手动定义 UserParameter,其功能已集成在官方模板 “MySQL by Zabbix agent 2” 中[2][3][4]。
- 通过 宏(Macros) 配置监控用户的认证信息和数据库连接参数,无需单独编写配置文件[2][4]。
2. Agent2 对 MySQL 的内置配置流程
(1) 前置条件
- 创建 MySQL 监控用户:
[1][2][3][4]。CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '<password>'; GRANT REPLICATION CLIENT, PROCESS, SHOW DATABASES, SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
(2) 配置步骤
-
安装并启动 Agent2:
- 安装
zabbix-agent2
和相关插件(如zabbix-agent2-plugin-mysql
)[2][4]。 - 配置
zabbix_agent2.conf
中的Server
(被动模式)或ServerActive
(主动模式)[4]。
- 安装
-
关联模板与宏配置:
- 在 Zabbix 前端为主机添加 “MySQL by Zabbix agent 2” 模板[2][3]。
- 修改模板中的宏:
{$MYSQL.USER}
:设置为监控用户(如zbx_monitor
)[2][4]。{$MYSQL.PASSWORD}
:设置监控用户的密码[2][4]。{$MYSQL.DSN}
:设置数据库连接地址(如tcp://localhost:3306
)[4]。
-
自动拉取数据:
- Agent2 通过模板中的预定义参数(如
mysql.ping
,mysql.version
)自动采集 MySQL 状态,无需手动定义UserParameter
[2][3]。
- Agent2 通过模板中的预定义参数(如
3. 关键优势
- 零手动参数定义:Agent2 的 MySQL 监控项已封装在模板中,开箱即用[3]。
- 集中化宏管理:敏感信息(用户名、密码)通过宏统一管理,避免散落配置文件[2][4]。
- 兼容性更强:支持主动/被动模式,且适配容器化、云平台等复杂场景[4]。
4. 注意事项
- 模板选择:必须使用 “MySQL by Zabbix agent 2” 模板,而非一代 Agent 的模板[2][3]。
- 权限要求:确保 MySQL 用户拥有
REPLICATION CLIENT
、PROCESS
等权限[1][5]。 - 防火墙放行:Agent2 默认使用端口
10050
,需确保防火墙开放[2]。
总结
Zabbix Agent2 自带对 MySQL 的监控能力,但其配置通过 模板 + 宏 完成,无需手动编写 UserParameter
或配置文件。用户只需:
- 安装 Agent2 并关联官方模板;
- 配置宏(用户名、密码、DSN);
- 重启 Agent2 服务。
这种设计简化了部署流程,同时提升了安全性和可维护性[2][3][4]。