使用 Zabbix agent 2 监控 MySQL

简介

本页将引导您完成开始对 MySQL 服务器进行基本监控所需的步骤。

要监控 MySQL 服务器,有几种方法:Zabbix agent、Zabbix agent 2 或开放数据库连接(Open Database Connectivity,ODBC)标准。 本指南主要介绍使用 Zabbix agent 2 监控 MySQL 服务器,这也是推荐的方法,因为它在各种部署环境中都能实现无缝配置。 不过,本页也提供了其他监控 MySQL 的方法的说明,因此您可以根据自身需求选择最适合的一种。

本指南适用对象

本指南面向新的 Zabbix 用户,包含启用 MySQL 服务器基本监控所需的最少步骤。 如果您正在寻找更深入的自定义选项,或需要更高级的配置,请参阅 Zabbix 手册中的 Configuration 部分。

前提条件

在继续阅读本指南之前,您需要根据您的操作系统说明下载并安装 Zabbix 服务器、Zabbix 前端和 Zabbix agent 2。

根据您的环境,本指南中的某些步骤可能会略有不同。 本指南基于运行 Ubuntu 的环境。

创建 MySQL 用户

要监控 MySQL 服务器,Zabbix 需要能够访问它及其进程。 您的 MySQL 安装中已经有一个具有所需访问级别的用户(在安装 Zabbix 时创建的用户 "zabbix"), 不过,对于简单监控来说,这个用户拥有的权限比必要的更多(例如 DROP 数据库、从表中 DELETE 条目等权限)。 因此,需要创建一个仅用于监控 MySQL 服务器的 MySQL 用户。

1. 连接到 MySQL 客户端,创建一个 "zbx_monitor" 用户(将 <password> 替换为您为 "zbx_monitor" 用户选择的密码), 并为该用户授予必要的权限: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 服务器。

要查看已收集的监控指标,请转到 Monitoring → Hosts 菜单部分,并点击主机旁边的 Dashboards

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

另外,你也可以在 Monitoring → Hosts 菜单部分中点击 Latest data,以列表形式查看所有最新收集的监控指标。 请注意,监控项 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 服务器、Zabbix 前端和 Zabbix agent。

在成功安装所需的 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 服务器和 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.iniodbc.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 服务器主机配置的 继承和主机宏 部分中,{$MYSQL.DSN} 宏值应设置为 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 模板的更多信息。