天天看点

Zabbix5.0 监控MySQL一、开始之前二、获取数据三、Zabbix前端页面链接模板四、其它

一、开始之前

本文内容是使用Zabbix 5.0自带的MySQL Template进行的监控和图形展示。监控之后,绘制出的MySQL运行时状态的图形如下:

Zabbix5.0 监控MySQL一、开始之前二、获取数据三、Zabbix前端页面链接模板四、其它

注意事项:

  • 使用Zabbix自带模板监控MySQL时,Zabbix Server编译时需要使用“

    --with-libxml2

    ”加入“libxml2”库。如果没有,需要重新编译Zabbix Server并重启。在CentOS中,可以通过“

    yum -y install libxml2 libxml2-devel

    ”安装“libxml2”库。

    通过Zabbix源码目录中的“config.log”文件查看编译选项:

二、获取数据

为了让Zabbix从MySQL中获取数据,需要创建一个供Zabbix使用的MySQL用户,创建用户SQL语句如下:

mysql> CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY 'zabbix';
mysql> GRANT USAGE,REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
           

在Zabbix Agent主目录(默认为/var/lib/zabbix)下编写“.my.cnf”文件:

# cat /usr/local/zabbix-agent/.my.cnf 
[client]
user=zbx_monitor
password=zabbix
# chown zabbix:zabbix /usr/local/zabbix-agent/.my.cnf
           

定义相关的Key:

# cat /usr/local/zabbix-agent/etc/zabbix_agentd.conf.d/userparameter_mysql.conf 
UserParameter=mysql.ping[*], HOME=/usr/local/zabbix-agent/ mysqladmin -h"$1" -P"$2" ping
UserParameter=mysql.get_status_variables[*], HOME=/usr/local/zabbix-agent/ mysql -h"$1" -P"$2" -sNX -e "show global status"
UserParameter=mysql.version[*], HOME=/usr/local/zabbix-agent/ mysqladmin -s -h"$1" -P"$2" version
UserParameter=mysql.db.discovery[*], HOME=/usr/local/zabbix-agent/ mysql -h"$1" -P"$2" -sN -e "show databases"
UserParameter=mysql.dbsize[*], HOME=/usr/local/zabbix-agent/ mysql -h"$1" -P"$2" -sN -e "SELECT SUM(DATA_LENGTH + INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
UserParameter=mysql.replication.discovery[*], HOME=/usr/local/zabbix-agent/ mysql -h"$1" -P"$2" -sNX -e "show slave status"
UserParameter=mysql.slave_status[*], HOME=/usr/local/zabbix-agent/ mysql -h"$1" -P"$2" -sNX -e "show slave status"
           

以上操作完成,需要重启Zabbix Agent服务。

注意事项:

  • “.my.cnf”文件中必须包含上文中提到的三行内容。该文件需要存放在Zabbix Agent主目录中。通过源码编译安装的,需要将其存放在编译时指定的目录中;
  • 确认在Zabbix Agent主配置文件中,已经通过“Include”指定了子配置文件路径“Include=/usr/local/zabbix-agent/etc/zabbix_agentd.conf.d/*.conf”;
  • 当“.my.cnf”文件没有放在默认的“/var/lib/zabbix”目录下时,需要在“userparameter_mysql.conf”文件中使用“HOME=…”显示地声明该文件所在目录;
  • mysql

    mysqladmin

    命令必须已经包含在全局环境变量中,否则Zabbix将无法执行相关命令;
  • 确认在Zabbix Agent配置文件,将“UnsafeUserParameters”的值置为1。

三、Zabbix前端页面链接模板

在Zabbix前端页面,点击“Configuration” -> “Templates”,可以找到名称为“Template DB MySQL by Zabbix agent”的模板。

在该模板中,定义了两个重要的变量:

“{$MYSQL.HOST}”

默认值是“localhost” 和

“{$MYSQL.PORT}”

默认值是“3306”。所以使用该模板时,默认会使用“localhost”地址连接MySQL。如果需要使用其它地址,或者item报错无法连接MySQL时,点击模板名称,选择“Macros”,按需修改变量的值,如下图:

Zabbix5.0 监控MySQL一、开始之前二、获取数据三、Zabbix前端页面链接模板四、其它

将该模板链接到MySQL服务器,等待数据采集即可。

四、其它

4.1、MySQL主从复制状态监控

“Template DB MySQL by Zabbix agent”模板的“Discovery rules”中定义了对MySQL主从复制状态的监控。该规则中包括了对主从复制延时、从库IO线程状态、从库SQL线程状态的监控,如下图:

Zabbix5.0 监控MySQL一、开始之前二、获取数据三、Zabbix前端页面链接模板四、其它

4.2、数据库各个库的大小监控

“Template DB MySQL by Zabbix agent”模板的“Discovery rules”中同样定义了对MySQL数据库各个库的大小的监控。正如在“userparameter_mysql.conf”文件中定义,通过SELECT语句从“information_schema”库的“tables”表中统计指定表名的“DATA_LENGTH”和“INDEX_LENGTH”。

Items如下图:

Zabbix5.0 监控MySQL一、开始之前二、获取数据三、Zabbix前端页面链接模板四、其它

参考链接:https://www.zabbix.com/documentation/5.0/zh/manual/config/templates_out_of_the_box/zabbix_agent