1.测试环境
- centos7.9
- mysql5.7.29
- zabbix4.4
- zabbix server服务器:192.168.20.133
- zabbix agent 服务器:192.168.20.132
2.关闭防火墙
- getenforce 0
- service firewalld stop
- 开启zabbix-server以及zabbix-agent
- 测试server端是否能获取agent端数据
3.修改zabbix-agent.conf配置文件
-
修改配置文件 vim /etc/zabbix/zabbix_agentd.conf
-
添加字段 Include=/etc/zabbix/zabbix_agentd.d/*.conf
4.在zabbix-agent添加监控脚本
- 进入目录:/etc/zabbix/zabbix_agentd.d
- 在当前目录下添加监控脚本
- vim /etc/zabbix/zabbix_agentd.d/mysql_status.sh
#!/bin/bash
MYSQL_PWD='mysql密码'
case $1 in
Uptime)
/usr/local/mysql/bin/mysqladmin -uroot -p${MYSQL_PWD} status 2>/dev/null | awk '{print $2}'
;;
Threads)
/usr/local/mysql/bin/mysqladmin -uroot -p${MYSQL_PWD} status 2>/dev/null | awk '{print $4}'
;;
Questions)
/usr/local/mysql/bin/mysqladmin -uroot -p${MYSQL_PWD} status 2>/dev/null | awk '{print $6}'
;;
Opens)
/usr/local/mysql/bin/mysqladmin -uroot -p${MYSQL_PWD} status 2>/dev/null | awk '{print $11}'
;;
Flush_tables)
/usr/local/mysql/bin/mysqladmin -uroot -p${MYSQL_PWD} status 2>/dev/null | awk '{print $14}'
;;
Open_tables)
/usr/local/mysql/bin/mysqladmin -uroot -p${MYSQL_PWD} status 2>/dev/null | awk '{print $17}'
;;
esac
- 为脚本添加权限:chmod a+x /etc/zabbix/zabbix_agentd.d/mysql_status.sh
4.1mysqladmin status状态意义
字段 | 意义 |
---|---|
Uptime | MySQL服务运行的时间(秒) |
Threads | 客户线程数量 |
Questions | MySQL服务启动后的查询数量 |
Slow queries | 慢查询数量(通过long_query_time设置慢查询) |
Opens | 服务打开过的表的数量 |
Flush tables | 命令执行的数量 |
Open tables | 服务器当前被打开的表数量 |
5.修改配置文件
- vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
UserParameter=mysql.ping,/usr/local/mysql/bin/mysqladmin -uroot -p'Jiangzihan123#' ping 2>/dev/null| grep -c alive
UserParameter=mysql.version,mysql -V
UserParameter=mysql.status[*],/etc/zabbix/zabbix_agentd.d/mysql_status.sh $1
6.更改权限
- 执行脚本是zabbix-agent于服务器上执行,mysql目录的执行权限如下
- 若不更改权限,将获取不到数值
- 报错信息大致为无法获取/data/mysql/mysql.sock文件,故无法使用mysqladmin命令获取信息
- 更改权限 chmod 777 -R mysql
- 再次进行测试
7.在web界面添加监控项
- 配置–>主机–>监控项–>创建监控项
- 根据agent服务器信息填写监控项,因为键值是自己设定,这里不能选择,必须自己手打
- 依次添加后,最终图形如下