MySQL监控第03期:Zabbix 监控 MySQL


这是《MySQL 监控》系列文章的第 3 节,之前我们讲解了“Prometheus+Grafana 监控 MySQL”和“PMM 监控 MySQL”,这一节内容来聊聊 Zabbix 的部署以及配置 Zabbix 监控 MySQL。目前《MySQL 监控》系列文章在公众号“悦专栏”中持续更新,欢迎关注。

1 架构图

如上图,通过 Zabbix Agent 获取 MySQL 的监控数据(需要结合一些脚本和命令,在本节的后面会提到具体配置方法)。将获得的监控数据传到 Zabbix Server 中,最终通过 Zabbix Web 展示出来。

2 实验环境介绍

测试的环境如下:

作用IP 地址主机名操作系统版本
Zabbix Server192.168.1.5node1CentOS 7.8zabbix-server-mysql-4.0.27
Zabbix 数据库192.168.1.6node2CentOS 7.8MySQL 8.0.23
MySQL 机器(Zabbix Agent)192.168.1.7node3CentOS 7.8MySQL 8.0.23

3 安装 Zabbix Server

在 node1 机器上部署 Zabbix Server,具体步骤如下:

添加 Zabbix 存储库

rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
启用 rpm 存储库
yum-config-manager --enable rhel-7-server-optional-rpms
安装 Zabbix server
yum install -y zabbix-server-mysql
安装 Zabbix 前端
yum install -y zabbix-web-mysql

4 配置 Zabbix 的数据库

登陆 node2 机器上的 MySQL ,创建 zabbix 数据库和用户:

mysql> create database zabbix character set utf8 collate utf8_bin;Query OK, 1 row affected (0.00 sec)
mysql> create user 'zabbix_rw'@'%' IDENTIFIED WITH mysql_native_password BY 'Zabbix@123456' ;Query OK, 0 rows affected (0.07 sec)
mysql> grant all privileges on zabbix.* to zabbix_rw@'%';Query OK, 0 rows affected (0.00 sec)

登陆 node1 机器,导入 MySQL 初始化 SQL 语句:

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix_rw -p'Zabbix@123456'  zabbix -h192.168.1.6

5 编辑配置文件

在 node1 机器上,编辑 Zabbix Server 的配置文件 /etc/zabbix/zabbix_server.conf:

LogFile=/var/log/zabbix/zabbix_server.logLogFileSize=0PidFile=/var/run/zabbix/zabbix_server.pidSocketDir=/var/run/zabbixDBHost=192.168.1.6DBName=zabbixDBUser=zabbix_rwDBPassword=Zabbix@123456SNMPTrapperFile=/var/log/snmptrap/snmptrap.logTimeout=4AlertScriptsPath=/usr/lib/zabbix/alertscriptsExternalScripts=/usr/lib/zabbix/externalscriptsLogSlowQueries=3000

编辑 PHP 配置文件 /etc/php.ini:

在 ;date.timezone = 下一行添加:

date.timezone = Asia/Shanghai

6 启动 Zabbix Server

在 node1 机器上启动 Zabbix Server

设置 zabbix-server 开机启动

systemctl enable zabbix-server

启动 zabbix-server

systemctl start zabbix-server
设置 Apache 开启启动
systemctl enable httpd
启动 Apache 服务
systemctl start httpd

7 Zabbix WEB 界面初始化

登陆 http://192.168.1.5/zabbix

点击 “Next step”,可进入如下界面:

使用Zabbix 监控 MySQL, Zabbix 的部署,安装 Zabbix Server,在 Agent 创建 Zabbix 监控用户,查看MySQL监控数据

点击 “Next step”,可进入如下界面,修改 MySQL 的连接信息:

点击 “Next step”,可进入如下界面:

使用Zabbix 监控 MySQL, Zabbix 的部署,安装 Zabbix Server,在 Agent 创建 Zabbix 监控用户,查看MySQL监控数据

点击 “Next step”,可进入如下界面:

使用Zabbix 监控 MySQL, Zabbix 的部署,安装 Zabbix Server,在 Agent 创建 Zabbix 监控用户,查看MySQL监控数据

点击 “Next step”,可进入如下界面:

点击 “Finish”,可跳转到 zabbix 的登陆界面:

使用Zabbix 监控 MySQL, Zabbix 的部署,安装 Zabbix Server,在 Agent 创建 Zabbix 监控用户,查看MySQL监控数据

默认用户名为 Admin,密码为 zabbix。登陆后,可进入到 Zabbix 的主页面,如下图:

使用Zabbix 监控 MySQL, Zabbix 的部署,安装 Zabbix Server,在 Agent 创建 Zabbix 监控用户,查看MySQL监控数据

到这一步,表示 Zabbx Server 的安装已经完成。

8 安装 Zabbix Agent

在 node3 上安装 Zabbix Agent:

安装 Zabbix Agent 包

yum install zabbix-agent
将 zabbix-agent 加入开机启动
systemctl enable zabbix-agent
启动 Zabbix Agent
systemctl start zabbix-agent

9 安装 Percona 插件

在 node3 上安装 Percona 插件,登录 Percona Monitoring Plugins 下载界面:https://www.percona.com/downloads/percona-monitoring-plugins/。选择对应的版本,进行下载。

使用Zabbix 监控 MySQL, Zabbix 的部署,安装 Zabbix Server,在 Agent 创建 Zabbix 监控用户,查看MySQL监控数据

将下载后的 rpm 包传到 Agent 机器上,进行 percona zabbix 插件的安装:

yum install -y percona-zabbix-templates-1.1.8-1.noarch.rpm
cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
yum -y install php php-mysql

10 在 Agent 创建 Zabbix 监控用户

在 node3 上登陆 MySQL,创建监控用户:

create user 'zabbix'@'localhost' identified with mysql_native_password by 'Zabbix@123';
GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT ON *.* TO 'zabbix'@'localhost';

11 修改配置文件

在 node3 上,编辑 /etc/zabbix/zabbix_agentd.conf 文件,修改下面两行:

Server= 192.168.1.5
Hostname=192.168.1.7

其中:

Server 为 Zabbix Server 的 IP;

Hostname 为本机 IP。

重启 zabbix agent

systemctl restart zabbix-agent

编辑配置文件 /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf

<?php$mysql_user = 'zabbix';$mysql_pass = 'Zabbix@123';

编辑配置文件 ~zabbix/.my.cnf

[client]user = zabbixpassword = Zabbix@123

12 测试监控

在 node3 上执行:

/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg

在 node1 上执行:

yum install zabbix-get -yzabbix_get -s 192.168.1.7 -p10050 -k "agent.ping"zabbix_get -s 192.168.1.7 -p10050 -k "MySQL.Key-read-requests"

如果都有返回值,则表示客户端部署正常。

删除临时文件(该文件为临时存放监控数据的文件,测试时,该文件的属组为 root,如果不删除,会导致 zabbix 用户无权限取到监控数据):

rm /tmp/localhost-mysql_cacti_stats.txt -rf

13 导入 Percona 模板

在客户端机器:

cd /var/lib/zabbix/percona/templates

获取到 zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml 文件。

在 Zabbix 的 web 界面上,点击Configuration -> Templates -> Import 导入

使用Zabbix 监控 MySQL, Zabbix 的部署,安装 Zabbix Server,在 Agent 创建 Zabbix 监控用户,查看MySQL监控数据

进入以下界面,点击选择文件:

使用Zabbix 监控 MySQL, Zabbix 的部署,安装 Zabbix Server,在 Agent 创建 Zabbix 监控用户,查看MySQL监控数据

选择完文件后,点击“Import”:

使用Zabbix 监控 MySQL, Zabbix 的部署,安装 Zabbix Server,在 Agent 创建 Zabbix 监控用户,查看MySQL监控数据

如下图,如果出现“Imported successfully”,则说明导入成功。

Configuration–>Templates,输入关键字 “percona”,则可以看到新导入的模板 “Template Perconal MySQL Server”:

使用Zabbix 监控 MySQL, Zabbix 的部署,安装 Zabbix Server,在 Agent 创建 Zabbix 监控用户,查看MySQL监控数据

14 Zabbix web 增加主机配置

Configuration–>Hosts–>Create host,如下:

使用Zabbix 监控 MySQL, Zabbix 的部署,安装 Zabbix Server,在 Agent 创建 Zabbix 监控用户,查看MySQL监控数据

点击上图的“Create host”,进入下图,其中 Host name 填写被监控机器的可区分名字,Agent interfaces 中的 IP address 填被监控机器的 IP:

使用Zabbix 监控 MySQL, Zabbix 的部署,安装 Zabbix Server,在 Agent 创建 Zabbix 监控用户,查看MySQL监控数据

点击“Templates”,增加下图中对应的两个选项。

使用Zabbix 监控 MySQL, Zabbix 的部署,安装 Zabbix Server,在 Agent 创建 Zabbix 监控用户,查看MySQL监控数据

15 查看监控数据

Monitoring–>Graphs,Host 选择这次新增的主机名,Graph 选择一个监控项,看是否有数据:

使用Zabbix 监控 MySQL, Zabbix 的部署,安装 Zabbix Server,在 Agent 创建 Zabbix 监控用户,查看MySQL监控数据

到这里,使用 Zabbix 监控 MySQL 的内容就讲完了。