rxysg

一.客户端操作

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

#!/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

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

# 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

[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]"

分类:

技术点:

相关文章: