[TOC]
## 一.客户端操作
1.创建mysql用户获取信息(不要用root)
`mysql -uroot -p`
mysql>`grant usage on *.* to zabbix@localhost identified by 'zabbix_password'`
2.创建监控脚本key
`vim /usr/local/zabbix/script/mysql_status.sh`
```python
#!/bin/bash
User='you_user'
Password='you_password'
Mysql='/usr/bin/mysql'
Mysqladmin='/usr/bin/mysqladmin'
command(){ #使用的sock登陆,如果没开启,那就删除socket这段
/usr/bin/mysql -u'zabbix' --socket=/ops/data/mysql/mysqld.sock -p'1qazxsw2!@' -e "show global status" 2>/dev/null | awk '$1 ~ /'"$1"'$/ {print $2}'
}
case $1 in
Com_select)
command $1 ;;
Com_insert)
command $1 ;;
Com_update)
command $1 ;;
Com_delete)
command $1 ;;
Com_begin)
command $1 ;;
Com_commit)
command $1 ;;
Com_rollback)
command $1 ;;
Questions)
command $1 ;;
Slow_queries)
command $1 ;;
Bytes_received)
command $1 ;;
Bytes_sent)
command $1 ;;
Uptime)
command $1 ;;
Version)
$Mysql -V | awk -F '[ ,]' '{print $6}' ;;
Ping)
$Mysqladmin -u'zabbix' --socket=/ops/data/mysql/mysqld.sock -p'1qazxsw2!@' ping 2>/dev/null |wc -l ;;
*)
echo "Usage: $0 { Com_select|Com_insert|Com_update|Com_delete|Com_begin|Com_commit|Com_rollback|Questions|Slow_queries|Bytes_received|Bytes_sent|Ping|Uptime|Version }" ;;
esac
```
3.测试脚本返回
`mysql_status.sh Uptime`
ping的返回1则是mysql在运行
`mysql_status.sh Ping`
4.修改配置文件
`vim /usr/local/zabbix/etc/zabbix_agentd.conf`
```python
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
UnsafeUserParameters=1 #开启允许自定义 Key
```
5.重启客户端
`/etc/init.d/zabbix_agentd restart`
6.编写对应配置文件
`vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/mysql_status.conf`
```python
# Mysql_status
UserParameter=mysql.status[*],/usr/local/zabbix/script/mysql_status.sh $1
UserParameter=mysql.ping,/usr/local/zabbix/script/mysql_status.sh Ping
UserParameter=mysql.version,/usr/local/zabbix/script/mysql_status.sh Version
```
7.测试,返回1正确
`/usr/local/zabbix/sbin/zabbix_agentd -t mysql.ping`
对于ubuntu机器,测试后出现没数据
`zabbix_agent -t mysql.ping`
`mysql.ping [m|ZBX_NOTSUPPORTED] [Unsupported item key.]`
那就直接跳过这一步,到服务端测试看是否可以获取到值。
## 二.服务端配置
1.测试连通,返回1则ok
`/usr/local/zabbix/bin/zabbix_get -s 192.168.1.10 -k mysql.ping`
2.效果
接下来把 Zabbix 自带的监控模板链接到主机即可
过上一小会,就能看到效果了,version可能比较时间长点,因为模板里设的时间范围是3600秒,ping会误报一次Mysql Down,因为之前是没有值的。监控模板自带2张图,也可以自定义画图。
## 三.使用模板注意问题
zabbix有一个mysql监控的默认模板,但是其默认mysql账号验证信息在/var/lib/zabbix中,不正确,如果套用的话需要设置mysql。
1.在zabbix-agent目录下/etc/zabbix/ 创建.my.cnf文件
`vim /etc/zabbix/.my.cnf`
```python
[client]
user=zabbix
password=zabbix
```
2.然后查看 userparameter_mysql.conf 文件,看到类似HOME=/var/lib/zabbix的路径设置,把路径全都替换为 /etc/zabbix/,使用下面的命令。
`sed -i 's|/var/lib/zabbix|/etc/zabbix|g' /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf`
3.修改完之后检查一下,然后重启agent
`systemctl restart zabbix-agent`
4.在zabbix-server命令行测试下
`zabbix_get -s 127.0.0.1 -p 10050 -k "mysql.status[Uptime]"`