4 使用 Zabbix agent 2 监控MySQL
介绍
本页将指导您完成启用MySQL服务器基本监控所需的步骤。
要监控MySQL服务器,有几种方法:Zabbix agent、Zabbix agent 2或开放数据库连接(ODBC)标准。 本指南的主要重点是使用 Zabbix agent 2 监控 MySQL 服务器,这是 推荐 的方法,因为它可以在各种设置中无缝配置。 但是,此页面也提供了其他方法的说明, 因此请随意选择最适合您要求的方法。
本指南适用于谁
本指南专为Zabbix新用户设计,包含启用MySQL服务器基本监控所需的最少步骤集。 如果您正在寻找深度自定义选项或需要更高级的配置,请参阅Zabbix手册的 配置 部分。
先决条件
在继续本指南之前,您需要根据适用于您的操作系统的说明,下载并安装 Zabbix 服务器、Zabbix 前端和 Zabbix agent 2。
根据您的环境,本指南中的某些步骤可能会略有不同。
本指南基于运行 Ubuntu 的环境。
创建MySQL用户
要监控MySQL服务器,Zabbix需要访问它及其进程。 您的MySQL安装已经具有一个所需访问级别的用户(安装Zabbix时创建的用户 "zabbix" ), 但是,该用户拥有的权限高于简单监控所需的权限 (删除数据库的权限,删除表中条目等)。 因此,需要创建一个 仅 用于监控MySQL服务器的MySQL用户。
1. 连接到MySQL客户端,创建一个 "zbx_monitor" 用户 (将 "zbx_monitor" 的 <password> 替换为您定义的密码), 并向该用户 GRANT 授予必要的权限:
mysql -u root -p
# Enter password:
mysql> CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '<password>';
mysql> GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
mysql> quit;
创建用户后,可以继续执行下一步。
配置 Zabbix 前端
1. 登录 Zabbix 前端。
2. 在 Zabbix Web 界面中创建主机:
- 在 Host name 字段中,输入主机名称(例如,“MySQL server”)。
- 在 Templates 字段中,输入或选择将要链接到主机的模板“MySQL by Zabbix agent 2”。
- 在 Host groups 字段中,输入或选择一个主机组(例如,“Databases”)。
- 在 Interfaces 字段中,添加一个类型为“Agent”的接口,并指定你的 MySQL 服务器 IP 地址。 本指南使用“127.0.0.1”(localhost)来监控安装在与 Zabbix 服务器和 Zabbix agent 2 相同机器上的 MySQL 服务器。

- 在 Macros 选项卡中,切换到 Inherited and host macros,查找以下宏,并点击宏值旁边的 Change 进行更新:
- {$MYSQL.DSN} - 设置 MySQL 服务器的数据源(来自 MySQL Zabbix agent 2 插件配置文件中命名会话的连接字符串)。 本指南使用默认数据源“tcp://localhost:3306”来监控安装在与 Zabbix 服务器和 Zabbix agent 2 相同机器上的 MySQL 服务器。
- {$MYSQL.PASSWORD} - 设置之前创建的 MySQL 用户“zbx_monitor”的密码。
- {$MYSQL.USER} - 设置之前创建的 MySQL 用户“zbx_monitor”的名称。

3. 点击 Add 添加主机。此主机将代表你的 MySQL 服务器。
查看已收集的监控指标
恭喜!此时,Zabbix 已经在监控你的 MySQL 服务器了。
要查看已收集的监控指标,请导航到 监控 → 主机 菜单部分,并点击主机旁边的 仪表板。

此操作将带你进入主机仪表板(在模板级别配置),其中包含从 MySQL 服务器收集到的最重要监控指标。

另外,你也可以在 监控 → 主机 菜单部分点击 最新数据,以列表形式查看所有最新收集的监控指标。 请注意,监控项 MySQL: Calculated value of innodb_log_file_size 预期不会有数据,因为该值将根据最近一小时的数据计算得出。

设置问题告警
Zabbix 可以通过多种方式就基础架构中的问题向您发送通知。 本指南提供发送电子邮件告警的基本配置步骤。
1. 导航到 用户设置 → 个人资料,切换到 介质 选项卡并添加您的电子邮件。

2. 按照接收问题通知指南进行操作。
下次当 Zabbix 检测到问题时,您应该会通过电子邮件收到告警。
测试你的配置
要测试你的配置,我们可以通过在 Zabbix 前端中更新主机配置来模拟一个真实问题。
1. 打开 Zabbix 中你的 MySQL 服务器主机配置。
2. 切换到 Macros 选项卡,并选择 Inherited and host macros。
3. 点击 Change,例如在 之前配置的} 宏值旁边,将其设置为不同的 MySQL 用户名。
4. 点击 Update 以更新主机配置。
5. 过一会儿,Zabbix 将检测到 “MySQL: Service is down” 这个问题,因为它将无法连接到 MySQL 服务器。 该问题将显示在 Monitoring → Problems。

如果已 配置 告警,你还会收到问题通知。
6. 将宏值改回之前的值,以解决该问题并继续监控 MySQL 服务器。
监控 MySQL 的其他方法
除了使用Zabbix agent 2监控MySQL服务器外,还可以使用Zabbix agent或Open Database Connectivity(ODBC)标准。 虽然建议使用 Zabbix agent 2,但可能有一些设置不支持 Zabbix agent 2 或需要自定义方法。
Zabbix agent 和 ODBC 的主要区别在于数据收集方法 - Zabbix agent 直接安装在MySQL服务器上,并使用其内置功能收集数据, 而 ODBC 依靠 ODBC 驱动程序与 MySQL 服务器建立连接并使用 SQL 检索数据。
尽管许多配置步骤类似于使用 Zabbix agent 2 监控 MySQL 服务器,但存在一些显着差异 - 需要配置Zabbix agent或ODBC才能监控MySQL服务器。以下说明将引导您了解这些 差异 。
使用 Zabbix agent 监控 MySQL
要使用 Zabbix agent 监控 MySQL,您需要根据对应您操作系统的说明 下载并安装 Zabbix server, Zabbix 前端和 Zabbix agent。
根据您的设置,本指南中的某些步骤可能略有不同。本指南基于以下环境进行配置:
- Zabbix 版本: Zabbix 7.0 PRE-RELEASE (从软件包安装)
- 操作系统发行版: Ubuntu
- 操作系统版本: 22.04 (Jammy)
- Zabbix 组件: Server, 前端, Agent 2
- 数据库: MySQL
- Web 服务器: Apache
成功安装所需的Zabbix组件后,您需要按照 创建MySQL用户 部分所述创建MySQL用户。
创建MySQL用户后,您需要配置Zabbix agent,以便能够与MySQL服务器建立连接并对其进行监控。 这包括配置多个 用户参数 以执行自定义agent检查,以及为Zabbix agent提供必要的凭据, 以便以 先前创建的 "zbx_monitor" 用户身份连接到MySQL服务器。
配置 Zabbix agent
1. 导航到 Zabbix agent 的附加配置目录。
cd /usr/local/etc/zabbix/zabbix_agentd.d
Zabbix agent 的附加配置目录应与您的 Zabbix agent 配置文件(zabbix_agentd.conf)位于同一目录中。
根据您的操作系统和 Zabbix 安装方式,此目录的位置可能与本指南中指定的位置不同。
如需默认位置,请查看 Zabbix agent 配置文件中的 Include 参数。
与其在 Zabbix agent 配置文件中定义所有用于监控 MySQL 服务器所需的用户参数, 不如将这些参数定义在附加配置目录中的单独文件里。
2. 在 Zabbix agent 的附加配置目录中创建一个 template_db_mysql.conf 文件。
vi template_db_mysql.conf
3. 将 template_db_mysql.conf 文件中的内容(位于 Zabbix 仓库中)复制到您创建的 template_db_mysql.conf 文件中,并保存。
4. 重启 Zabbix agent 以更新其配置。
systemctl restart zabbix-agent
配置好 Zabbix agent 用户参数后,您就可以继续配置允许 Zabbix agent 访问 MySQL 服务器的凭据。
5. 导航到Zabbix agent主目录(如果系统上不存在,则需要创建它;默认值: /var/lib/zabbix)。
cd /var/lib/zabbix
6. 在Zabbix agent主目录中创建一个 .my.cnf 文件。
vi .my.cnf
7. 将以下内容复制到 .my.cnf 文件 (<password> 替换为 "zbx_monitor" 用户的密码)。
[client]
user='zbx_monitor'
password='<password>'
配置 Zabbix 前端并测试您的配置
要配置 Zabbix 前端,请按照 配置 Zabbix 前端 部分中的说明进行操作,并做以下调整:
- 在 Templates 字段中,输入或选择模板 "MySQL by Zabbix agent",该模板将被链接到主机。
- 无需配置 Macros。
完成 Zabbix 前端配置后,您可以查看收集到的指标并设置问题告警。
要测试您的配置,请按照 测试您的配置 部分中的说明进行操作,并做以下调整:
- 在 MySQL 服务器主机配置的 Inherited and host macros 部分,点击 {$MYSQL.PORT} 宏值旁边的 Change,并设置一个不同的端口(例如,“6033”)。

使用ODBC监控MySQL
要使用ODBC监控MySQL,您需要 下载并安装 Zabbix server 和 Zabbix 前端。
成功安装所需的Zabbix组件后,您需要按照 创建MySQL用户 部分所述创建一个MySQL用户。
创建MySQL用户后,需要设置ODBC。 这包括安装最常用的开源 ODBC API 实现之一 - unixODBC - 和unixODBC 驱动程序,以及编辑 ODBC 驱动程序配置文件。
配置 ODBC
1. 安装 unixODBC。推荐使用 Linux 操作系统默认的软件包仓库来安装 unixODBC。
apt install unixodbc
2. 安装 MariaDB 的 unixODBC 数据库驱动。即使您使用的是 MySQL 数据库,出于兼容性原因,也应使用 MariaDB 的 unixODBC 驱动。
apt install odbc-mariadb
3. 检查 ODBC 配置文件 odbcinst.ini 和 odbc.ini 的位置。
odbcinst -j
执行此命令后的结果应类似如下。
unixODBC 2.3.9
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
...
4. 要为监控 MySQL 数据库配置 ODBC 驱动,您需要驱动名称,该名称位于 odbcinst.ini 文件中。
在下面的 odbcinst.ini 文件示例中,驱动名称为 “MariaDB Unicode”。
[MariaDB Unicode]
Driver=libmaodbc.so
Description=MariaDB Connector/ODBC(Unicode)
Threading=0
UsageCount=1
5. 将以下内容复制到 odbc.ini 文件中(将 <password> 替换为 "zbx_monitor" 用户的密码)。
本指南使用 "127.0.0.1"(localhost)作为 MySQL 服务器地址,用于监控与 ODBC 驱动安装在同一台机器上的 MySQL 服务器。
请注意数据源名称(DSN)"test",在配置 Zabbix 前端时将会用到它。
[test]
Driver=MariaDB Unicode
Server=127.0.0.1
User=zbx_monitor
Password=<password>
Port=3306
Database=zabbix
配置Zabbix前端并测试配置
要配置Zabbix前端,请按照 配置Zabbix前端 部分中的说明进行以下调整:
- 在 模板 字段中,键入或选择 "MySQL by ODBC" 模板将其 链接 到主机。
- 不需要配置 接口 。
- {$MYSQL.DSN} 宏的值在Mysql服务器的 继承和主机宏 部分中,主机配置应设置为 odbc.ini 文件中的 DSN 名称。
配置Zabbix前端后,您可以 查看收集的指标, 设置问题告警 并 测试您的配置。
另请参阅
- 创建监控项 - 如何开始监控其他指标。
- 问题升级 - 如何创建多步骤警报场景(例如,首先向系统管理员发送消息,然后,如果问题在 45 分钟内未解决,则向数据中心经理发送消息)。
- ODBC 监测 - 如何在其他 Linux 发行版上设置 ODBC,以及如何开始使用 ODBC 监测其他与数据库相关的指标。
- 模板 MySQL by Zabbix agent - 有关 MySQL by Zabbix agent 模板的其他信息。
- 模板 MySQL by Zabbix agent 2 - 有关 MySQL by Zabbix agent 2 模板的其他信息。
- 模板 MySQL by ODBC - 有关 MySQL by ODBC 模板的其他信息。