zabbix服务器ip地址:192.168.8.134
mysql服务器ip地址:192.168.8.100
前两天在公司解决一个zabbix监控mysql数据的问题,搞了半天发现需要在my.cnf指定client字段。到家后自己搭建了一个测试环境重新来一遍。
一:安装zabbix-agent
直接在Index of /zabbix/zabbix/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
下载好对应版本的rpm包
看内核版本的这个字样表示rhel9版本的rpm包
安装上面的rhel7版本的包会报错,下面的rhel9的包安装成功
2:修改agent配置
vim /etc/zabbix/zabbix_agentd.conf
ServerActive=192.168.8.134 #主动检查,agent主动向zabbix服务器发送数据
Server=192.168.8.134 #指向zabbix ip
Hostname=mysql #主机名字
修改完之后wq保存退出
将mysql模板监控项拷贝到/etc/zabbix/zabbix_agent.d/
cp /usr/share/doc/zabbix-agent/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.d/
cat /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
红框中那些注释行翻译过来就是:
--------------------------------------------------
#template_db_mysql.conf 由 Zabbix 为 "Template DB MySQL" 创建,适用于 Zabbix 4.2 #对于操作系统 Linux:你需要在 zabbix-agent 家目录(默认为 /var/lib/zabbix)中创建 .my.cnf 文件 #对于操作系统 Windows:你需要将路径添加到 mysql 和 mysqladmin,并在 %WINDIR%\my.cnf,C:\my.cnf,BASEDIR\my.cnf 中创建 my.cnf 文件 MySQL :: MySQL 5.7 Reference Manual :: 4.2.2.2 Using Option Files #该文件必须包含三行字符串: #[client] #user=zbx_monitor #password=<密码>
---------------------------------------------------
所以说我们要创建/var/lib/zabbix目录并且生成一个文件.my.cnf
mkdir /var/lib/zabbix/
chown -R zabbix:zabbix /var/lib/zabbix/ #修改属主
vim /var/lib/zabbix/.my.cnf
文件内容:
这里面写的user和password之后在mysql里面配置
3:启动zabbix_agent,添加zabbix监控
/usr/sbin/zabbix_agentd #启动zabbix
ss -anpt|grep 10050 #查看是否成功启动
zabbix web界面:
配置>主机>创建主机
模板选择:
添加之后现在的mysql监控项还是没有数据的,并且状态是down
是因为还没有配置mysql,现在配置mysql
4:配置mysql
4.1创建之前在/var/lib/zabbix/.my.cnf中写的user
create user 'zbxmonitor'@'%' identified BY 'Zbx@123456';
# %代表远程和本地都能登录
4.2设置权限
grant replication client,process,show databases,show view on *.* to 'zaxmonitor'@'%';
- replication client:允许用户运行复制相关的命令,如
SHOW MASTER STATUS
、SHOW SLAVE STATUS
等。 -
process
:允许用户查看其他用户的进程,即能看到SHOW PROCESSLIST
的结果。 show databases
: 允许用户运行SHOW DATABASES
命令,列出所有数据库。show view
: 允许用户查看数据库中存储的视图。
4.3flush刷新权限
在192.168.8.134上面测试一下权限
可以看到确实没有创建的权限,有showdatabases的权限。
5:修改mysql配置文件
vim /etc/my.cnf
添加红框中的三行,添加完之后不需要重启MySQL,他会自动加载客户端参数。
在 Zabbix 中,为了能够监控 MySQL 数据库,Zabbix Agent 需要使用 MySQL 客户端工具(如 mysql
或 mysqladmin
)来执行命令并获取数据库的状态信息。
这些命令需要认证信息(用户名和密码)来连接到 MySQL 服务器,所以说client中定义的实际上是为 Zabbix Agent 提供了连接到 MySQL 服务器所需的用户密码,这样的话Zabbix Agent 就可以使用这些client中的定义的user password来执行必要的命令,从而收集 MySQL 的监控数据
测试一下:
可以看到不需要用户密码就可以用zbxmonitor这个用户登录进来
6:看zabbix web界面是否已经有了数据
监测 > 最新数据 > 选择刚才创建的主机 > 应用集选择mysql
对MySQL数据库进行压力测试:
mysqlslap -u=root -p=Sjl@123456 --concurrency=50 #注意要用root用户进行测试
这条命令表示对mysql产生50个并发连接
可以看到数据是一路飙升
-------------------------------------------------
最后大家也可以试一下在mysql服务器上面把/etc/my.cnf 中的client字段那三行注释掉之后zabbix还会不会正常监控MySQL