zabbix监控mysql

来源:互联网 发布:程序员技术移民日本 编辑:程序博客网 时间:2024/06/09 23:47

今天来看看zabbix如何监控mysql性能,这边使用mysql自带的模板,可以监控如下内容:OPS(增删改查)、mysql请求流量带宽,mysql响应流量带宽,如果没有则要去zabbix官方下载 url:https://zabbix.org/mw/images/d/d4/Template_App_MySQL-2.2.0.xml最后会附上相应的监控图!

准备工作

在iptables中添加10050和10051端口,并重启防火墙

-A INPUT -p tcp -m state --state NEW -m tcp --dport 10050 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10051 -j ACCEPT

如果是编译安装的mysql,在连接mysql的时候可能会跟mysql.sock的路径,因为mysql在启动的时候默认会在/var/lib/mysql/处寻找,所以我们要将mysql.sock文件连接到此处
ln -s /data/mysql_db/mysql.sock /var/lib/mysql/                          #/data/mysql_db/mysql.sock为我自定义的路径

在安装zabbix_agentd的时候,我们需要将zabbix_agentd.conf连接到/usr/local/etc/目录,这一步特别重要,这决定了你是否能获取mysql key
ln -s /usr/local/zabbix/conf/zabbix_agentd.conf /usr/local/etc/

1、编写check_mysql.sh脚本

用于获取mysql性能指标数据,你需要修改相应的数据库信息

mkdir /usr/local/zabbix/etc/

# vim /usr/local/zabbix/etc/chk_mysql.sh

#!/bin/bash# 用户名MYSQL_USER='zabbix'# 密码MYSQL_PWD='123456'# 主机地址/IPMYSQL_HOST='127.0.0.1'# 端口MYSQL_PORT='3306'# 数据连接MYSQL_CONN="/usr/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT}"# 参数是否正确if [ $# -ne "1" ];thenecho "arg error!"fi# 获取数据case $1 inUptime)result=`${MYSQL_CONN} status|cut -f2 -d":"|cut -f1 -d"T"`echo $result;;Com_update)result=`${MYSQL_CONN} extended-status |grep -w "Com_update"|cut -d"|" -f3`echo $result;;Slow_queries)result=`${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"`echo $result;;Com_select)result=`${MYSQL_CONN} extended-status |grep -w "Com_select"|cut -d"|" -f3`echo $result;;Com_rollback)result=`${MYSQL_CONN} extended-status |grep -w "Com_rollback"|cut -d"|" -f3`echo $result;;Questions)result=`${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"`echo $result;;Com_insert)result=`${MYSQL_CONN} extended-status |grep -w "Com_insert"|cut -d"|" -f3`echo $result;;Com_delete)result=`${MYSQL_CONN} extended-status |grep -w "Com_delete"|cut -d"|" -f3`echo $result;;Com_commit)result=`${MYSQL_CONN} extended-status |grep -w "Com_commit"|cut -d"|" -f3`echo $result;;Bytes_sent)result=`${MYSQL_CONN} extended-status |grep -w "Bytes_sent" |cut -d"|" -f3`echo $result;;Bytes_received)result=`${MYSQL_CONN} extended-status |grep -w "Bytes_received" |cut -d"|" -f3`echo $result;;Com_begin)result=`${MYSQL_CONN} extended-status |grep -w "Com_begin"|cut -d"|" -f3`echo $result;;*)echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)";;esac

赋予执行权限

chmod +x /usr/local/zabbix/etc/chk_mysql.sh


2、修改zabbix_agentd.conf

增加自定义key,在最后一行增加如下:
# 获取mysql版本
UserParameter=mysql.version,mysql -h"127.0.0.1" -uzabbix -p123456 -e "select version();"|awk 'END {print}'
# 获取mysql性能指标,这个是上面定义好的脚本
UserParameter=mysql.status[*],/usr/local/zabbix/etc/chk_mysql.sh $1
# 获取mysql运行状态
UserParameter=mysql.ping,mysqladmin -uzabbix -p123456 -P3306 -h127.0.0.1  ping | grep -c alive


备注:请注意修改你的数据库信息,以及zabbix路径信息
3、重启zabbix

# killall zabbix-agentd
# /usr/local/zabbix/sbin/zabbix_agentd
或者
# service zabbix_agentd restart


4、测试

在zabbix server中执行以下命令,看能否获取到值

cd /usr/local/zabbix/bin

./zabbix_get -s "zabbix_agentd IP" -p 10050 -k mysql.version
5.5.45-log

./zabbix_get -s "zabbix_agentd IP" -p 10050 -k mysql.ping
1

./zabbix_get -s "zabbix_agentd IP" -p 10050 -k mysql.status[Uptime]
169725

./zabbix_get -s "zabbix_agentd IP" -p 10050 -k mysql.status[Com_update]
994470


5、Link MySQL模板

模板是zabbix系统提供的,进入zabbix web后台,configuration-->hosts-->点击你的主机name-->选择template选项卡,选择模板“Template App MySQL”,最后点击update即可


6、数据查看

如果配置没有异常,那么可以在graph中查看到2张监控图,分别为请求流量带宽、响应流量带宽、ops,点击monitoring-->graphs-->选择你的主机,分别选择Graph“MySQL bandwidth”、“MySQL operations”,监控图分别如下:
mysql



7、常见错误解决思路

如果发现监控没有数据,请排查如下问题

1. zabbix客户端是否重启

2. 脚本是否有执行权限

3. 数据库是否有权限

4. 环境变量是否有问题

5. 请看zabbix item列,鼠标移至红色叉上,有错误提示。
0 0
原创粉丝点击