zabbix监控mysql数据库性能-阿里云开发者社区

开发者社区> 余二五> 正文

zabbix监控mysql数据库性能

简介:
+关注继续查看

     在之前的博文里面写过如何通过Zabbix监控mysql主从同步是否OK,mysql从库是否有延时(Seconds_Behind_Master)主库,当mysql主从有异常时通过Email或者SMS通知DBA和系统人员。除此之外,Zabbix还可以监控mysql slow queries,mysql version,uptime,alive等。下面通过Zabbix Graphs实时查看的SQL语句操作情况和mysql发送接收的字节数。
1.Zabbix官方提供的监控mysql的模板Template App MySQL,可以看到相关的Items和key。
wKioL1MphNaTYVdQAAS5uuZeSQg754.jpg

2.把该模板Template App MySQL Link到相关的主机上面,发现Item的Status是不可用的,因为key的值是通过Mysql用户查看"show global status"信息或者用mysqladmin命令查看status或extended-status的信息而取的值。

1
2
mysql> show global status;
mysql> show status;

3.结合官方提供的key编写Shell脚本,从数据库中取出Items的key的值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
[root@monitor scripts]# cat checkmysqlperformance.sh
#!/bin/sh
#Create by sfzhang 2014.02.20
MYSQL_SOCK="/data/mysql/3306/mysql.sock"
MYSQL_PWD=`cat /data/mysql/3306/.mysqlpassword`
ARGS=1
if [ $# -ne "$ARGS" ];then
    echo "Please input one arguement:"
fi
case $1 in
    Uptime)
        result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK status|cut -f2 -d":"|cut -f1 -d"T"`
            echo $result
            ;;
        Com_update)
            result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_update"|cut -d"|" -f3`
            echo $result
            ;;
        Slow_queries)
        result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK status |cut -f5 -d":"|cut -f1 -d"O"`
                echo $result
                ;;
    Com_select)
        result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_select"|cut -d"|" -f3`
                echo $result
                ;;
    Com_rollback)
        result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_rollback"|cut -d"|" -f3`
                echo $result
                ;;
    Questions)
        result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK status|cut -f4 -d":"|cut -f1 -d"S"`
                echo $result
                ;;
    Com_insert)
        result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_insert"|cut -d"|" -f3`
                echo $result
                ;;
    Com_delete)
        result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_delete"|cut -d"|" -f3`
                echo $result
                ;;
    Com_commit)
        result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_commit"|cut -d"|" -f3`
                echo $result
                ;;
    Bytes_sent)
        result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Bytes_sent" |cut -d"|" -f3`
                echo $result
                ;;
    Bytes_received)
        result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Bytes_received" |cut -d"|" -f3`
                echo $result
                ;;
    Com_begin)
        result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_begin"|cut -d"|" -f3`
                echo $result
                ;;
                              
        *)
        echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions)"
        ;;
esac

4.在Zabbix_agentd.conf里面添加UserParameter,格式如下,对于Zabbix来说,脚本其实就是一个插件。

1
2
3
UserParameter=mysql.version,mysql -V
UserParameter=mysql.ping,mysqladmin -uroot -p123456 -S /data/mysql/3306/mysql.sock ping grep -c alive
UserParameter=mysql.status[*],/etc/zabbix/scripts/checkmysqlperformance.sh $1

5.重启agentd服务器,然后在zabbix server用zabbix_get就可以取到key的值。

wKioL1MqRpGxzzs-AAG-6BleztI159.jpg

6.在zabbix前端可以实时查看SQL语句每秒钟的操作次数。

wKioL1MphhPR5bFZAAUaEiVnqWk146.jpg

7.在zabbix前端可以实时查看mysql发送接收的字节数。其中bytes received表示从所有客户端接收到的字节数,bytes sent表示发送给所有客户端的字节数。

wKiom1Mphnug3b9nAAPDKjy9BLM501.jpg

   总结:
   1)把该脚本放到要监控的服务器上面(Modify mysql user and password),修改UserParameter的参数并重启agentd,Link官方提供的Template App MySQL模板即可。
   2)我这里是测试环境用root账号,线上服务器安全期间可以给mysql用户授权readonly权限。

   3)根据实际的需求,除了监控上述监控项之外,还可以监控mysql processlist,Innodb等。










本文转自 sfzhang 51CTO博客,原文链接:http://blog.51cto.com/sfzhang88/1379859,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
冬季实战营第一期
冬季实战营第一期
7 0
学习报告
本次学习让我收获了很多,了解了ECS服务器。怎么创建ECS服务器,怎么通过公网ip去连接它。还有就是让我快速搭建了一遍LAMP的环境。我一步步安装apache、mysql以及php服务,收获很大。19日的时候我部署了MYSQL数据库服务在ECS服务器上,并通过阿里云的dms控制台去访问我的数据库。对我的帮助很大。1月20日通过直播学习了从0搭建springboot学到了很多。能在我学习的时候快速搭建出来环境。1月21日我动手做了实验,其中安装数据库出现了一些问题关于安装包key的问题。我通取消了gpg检查。成功安装了数据库。最后完成了PolarDB实验。
9 0
Java 简介(Java 发展概述)|学习笔记
快速学习 Java 简介(Java 发展概述)
5 0
快速搭建LAMP环境
CentOS 7.7的ECS实例(云服务器)。通过本教程的操作,您可以基于ECS实例快速搭建一套LAMP环境。
33 0
云起冬季实战营第一期学习报告
冬奥云小宝带你玩转五期实战营 覆盖五大技术方向 “0成本”实践学习 快速晋级为专业的“云上开发者”
6 0
阿里云冬季实战营(第一期学习记录)
阿里云冬季实战营(第一期学习记录)训练营日期:2022年1月17日 - 2022年1月23日
14 0
飞天加速计划·高校学生在家实践
我用阿里云服务器的一些心得
17 0
+关注
20382
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载