关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍


Posted in PHP onJuly 13, 2020

介绍:Anemometer 是一个图形化显示MySQL慢日志的工具。结合pt-query-digest,Anemometer可以很轻松的帮你去分析慢查询日志,让你很容易就能找到哪些SQL需要优化

This is the Box Anemometer, the MySQL Slow Query Monitor. This tool is used to analyze slow query logs collected from MySQL instances to identify problematic queries

官方网站:https://github.com/box/Anemometer

环境概况

以写此文章时 percona-toolkit最新的版本3.0.10为例
mysql数据库对应版本为5.7.21,二进制安装
http和php均是系统CentOS Linux release 7.4.1708 (Core)自带版本

需要安装的步骤如下:

1.percona-toolkit工具的安装

2.php web环境的搭建安装

3.Anemometer并配置

4.导入慢查询日志

5.访问界面,查看慢查询

6.其他相关和问题解决

0. 整体的架构

关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍

1. percona-toolkit工具的安装

安装目的:pt-query-digest是percona-toolkit里面一个工具,其作用就是分析慢查询日志,将MySQL慢查询日志进行统计并友好的显示出来

下载地址:https://www.percona.com/downloads/percona-toolkit/

安装方式(rpm):

1、下载包,wget https://www.percona.com/downloads/percona-toolkit/3.0.10/binary/redhat/7/x86_64/percona-toolkit-3.0.10-1.el7.x86_64.rpm

2、安装依赖,yum install perl-DBI perl-DBD-MySQL perl-IO-Socket-SSL perl-Digest-MD5 -y

3、正式安装,rpm -ivh percona-toolkit-3.0.10-1.el7.x86_64.rpm

4、安装完毕验证,pt-query-digest --version pt-query-digest 3.0.10

安装方式(tar二进制)

1、下载包,wget https://www.percona.com/downloads/percona-toolkit/3.0.10/binary/tarball/percona-toolkit-3.0.10_x86_64.tar.gz

2、安装依赖,yum install perl-DBI perl-DBD-MySQL perl-IO-Socket-SSL perl-Digest-MD5 -y

3、解压包,tar xf percona-toolkit-3.0.10_x86_64.tar.gz

4、直接使用工具, ./percona-toolkit-3.0.10/bin/pt-query-digest --version
pt-query-digest 3.0.10

2. php web环境的搭建

安装目的:Anemometer需要依赖
LAMP环境LAMP环境的安装:
1、安装apache,yum install httpd httpd-devel -y
2、安装php,yum install php php-mysql php-common php-bcmath php-dba php-cli php-gd php-mbstring php-mcrypt php-devel php-xml php-pdo -y
3、修改时区,vim /etc/php.ini,修改为 date.timezone = PRC

LAMP环境的启动:
1、启动,systemctl start httpd
2、关闭,systemctl stop httpd
3、重启,systemctl restart httpd
4、查看,systemctl status httpd

3. 安装Anemometer并配置

1、下载安装:
安装目的:安装Anemometer应用
下载地址:https://github.com/box/Anemometer
下载包:git clone https://github.com/box/Anemometer.git
移动到对应路径:mv Anemometer /var/www/html/anemometer
2、目标慢查询数据库上需要授予Anemometer主机对应的权限
1、目的,用于分析目标慢查询数据库explain执行计划
2、授权,grant select on *.* to 'anemometer'@'$ip' identified by '123456';flush privileges;($ip为Anemometer主机对应ip地址)
3、修改配置文件增加explain读取用户密码信息 cp conf/sample.config.inc.php conf/config.inc.php vim conf/config.inc.php\\

关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍

4、修改配置文件指向数据源文件,vim conf/datasource_localhost.inc.php,当然也可以直接vim conf/config.inc.php

关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍

5、初始化数据源的数据库表的配置,mysql -uroot -p123456 -h127.0.0.1 -P5700 < install.sql,每个datasource源头可以对应不同的数据库database(修改install.sql的内容)

关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍

4. 导入慢查询日志

1、慢查询主机推送格式

For pt-query-digest version < 2.2
$ pt-query-digest --user=anemometer --password=superSecurePass \
--review h=db.example.com,D=slow_query_log,t=global_query_review \
--review-history h=db.example.com,D=slow_query_log,t=global_query_review_history \
--no-report --limit=0% \ 
--filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME\"" \ 
/var/lib/mysql/db.example.com-slow.log

For pt-query-digest version >= 2.2
$ pt-query-digest --user=anemometer --password=superSecurePass \
--review h=db.example.com,D=slow_query_log,t=global_query_review \
--history h=db.example.com,D=slow_query_log,t=global_query_review_history \
--no-report --limit=0% \ 
--filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME\"" \ 
/var/lib/mysql/db.example.com-slow.log

2、慢查询主机推动脚本示例

#config anemometer server, the purpose is to push slow query to the remote anemometer server and store it.
anemometer_host="127.0.0.1"
anemometer_user="root"
anemometer_password="123456"
anemometer_port=5700
anemometer_db="slow_query_log"

#config mysql server, the purpose is to get the path of the slow query log.
mysql_client="/usr/local/mysql-5.7.21/bin/mysql"
mysql_user="root"
mysql_password="123456"
mysql_socket="/tmp/mysql_5700.sock"
mysql_port=5700

#config slowqury dir to cd, and then delete the expired slow query file.
slowquery_dir="/data/mysql_$mysql_port/"

#get the path of the slow query log.
slowquery_file=`$mysql_client -u$mysql_user -p$mysql_password -S $mysql_socket -e "show variables like 'slow_query_log_file'"|grep log|awk '{print $2}'`
pt_query_digest="/data/percona-toolkit-3.0.10/bin/pt-query-digest"

#collect mysql slowquery log into lepus database.
$pt_query_digest --user=$anemometer_user --password=$anemometer_password --port=$anemometer_port --review h=$anemometer_host,D=$anemometer_db,t=global_query_review --history h=$anemometer_host,D=$anemometer_db,t=global_query_review_history --no-report --limit=0% --filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME:$mysql_port\"" $slowquery_file

#generate a new slow query log, the below is generate a new slow file per hour.
tmp_log=`$mysql_client -u$mysql_user -p$mysql_password -S $mysql_socket -e "select concat('$slowquery_dir','slowquery_',date_format(now(),'%Y%m%d%H'),'.log');"|grep log|sed -n -e '2p'`

#use new slow file to config mysql slowquery
$mysql_client -u$mysql_user -p$mysql_password -S $mysql_socket -e "set global slow_query_log = 0;set global slow_query_log_file = '$tmp_log';"
$mysql_client -u$mysql_user -p$mysql_password -S $mysql_socket -e "set global slow_query_log = 1; "

#delete slow query file before 2 days
cd $slowquery_dir
/usr/bin/find ./ -name 'slowquery_*.log' -mtime +2|xargs rm -rf ;

####END####

5. 访问界面,查看慢查询

http://$ip/anemometer/ ($ip为Anemometer主机对应ip地址)

关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍

关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍

关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍

6、其他相关和问题解决

1、对于anemometer的主机上,需要进行慢查询主机hostname和ip的映射(修改/etc/hosts进行配置),目的在于慢查询explain执行计划的目标主机解析
#collect mysql slowquery log into lepus database步骤中,$HOSTNAME:$mysql_port
数据库存取的格式,hostname_max类似这种,cnwangdawei:5700
2、中文乱码的问题,在#collect mysql slowquery log into lepus database步骤中添加 --charset=utf8
3、慢查询主机数据库是5.7版本的数据库,可能出现界面ts_cnt不显示,替换percona toolkit为新版本,2.x.x -----> 3.x.x
4、表结构和状态字符集显示乱码,添加mysqli的字符集设定,vim /var/www/html/anemometer/lib/QueryExplain.php
新增(194行后增加),$this->mysqli->query("set names utf8");

关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍

以上就是关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍的详细内容,更多关于Anemometer图形化显示MySQL慢日志的工具搭建的资料请关注三水点靠木其它相关文章!

PHP 相关文章推荐
使用字符串函数输出整数化的PHP版本号
Oct 09 PHP
PHP中的日期处理方法集锦
Jan 02 PHP
最令PHP初学者们头痛的十四个问题
Jan 15 PHP
header中Content-Disposition的作用与使用方法
Jun 13 PHP
ThinkPHP CURD方法之field方法详解
Jun 18 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
Oct 30 PHP
PHP新建类问题分析及解决思路
Nov 19 PHP
Yii 2.0中场景的使用教程
Jun 02 PHP
Laravel框架中集成MongoDB和使用详解
Oct 17 PHP
PHP Swoole异步MySQL客户端实现方法示例
Oct 24 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
May 02 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
Dec 16 PHP
通过实例解析PHP数据类型转换方法
Jul 11 #PHP
PHP var关键字相关原理及使用实例解析
Jul 11 #PHP
PHP手机号码及邮箱正则表达式实例解析
Jul 11 #PHP
基于PHP实现短信验证码发送次数限制
Jul 11 #PHP
PHP连接MySQL数据库操作代码实例解析
Jul 11 #PHP
PHP如何使用cURL实现Get和Post请求
Jul 11 #PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
Jul 10 #PHP
You might like
通俗易懂的php防注入代码
2010/04/07 PHP
php class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
基于Zookeeper的使用详解
2013/05/02 PHP
使用迭代器 遍历文件信息的详解
2013/06/08 PHP
PHP计算一年多少个星期和每周的开始和结束日期
2014/07/01 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
Mootools 1.2教程 排序类和方法简介
2009/09/15 Javascript
JavaScript加强之自定义callback示例
2013/09/21 Javascript
JavaScript中双叹号(!!)作用示例介绍
2014/04/10 Javascript
jQuery ajax调用WCF服务实例
2014/07/16 Javascript
jQuery自定义添加&quot;$&quot;与解决&quot;$&quot;冲突的方法
2015/01/19 Javascript
JavaScript实现页面5秒后自动跳转的方法
2015/04/16 Javascript
jQuery焦点图轮播特效代码分享(3款)
2015/09/05 Javascript
Vue AST源码解析第一篇
2017/07/19 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
webpack打包非模块化js的方法
2018/10/24 Javascript
Emberjs 通过 axios 下载文件的方法
2019/09/03 Javascript
用vue 实现手机触屏滑动功能
2020/05/28 Javascript
[48:11]完美世界DOTA2联赛 Magma vs GXR 第二场 11.07
2020/11/10 DOTA
opencv python 傅里叶变换的使用
2018/07/21 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
使用Template格式化Python字符串的方法
2019/01/22 Python
python之mock模块基本使用方法详解
2019/06/27 Python
Django 反向生成url实例详解
2019/07/30 Python
python框架django项目部署相关知识详解
2019/11/04 Python
日本运动品牌美津浓官方购物网站:MIZUNO SHOP
2016/08/21 全球购物
Gap英国官网:Gap UK
2018/07/18 全球购物
jurlique茱莉蔻英国官网:澳洲天然护肤品
2018/08/03 全球购物
意大利辅助药品、药物和补品在线销售:FarmaEurope
2020/04/29 全球购物
公证委托书模板
2014/04/03 职场文书
高中国旗下的演讲稿
2014/08/28 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
2021/06/13 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
2021/11/01 Python
SQL试题 使用窗口函数选出连续3天登录的用户
2022/04/24 Oracle
Android在Sqlite3中的应用及多线程使用数据库的建议
2022/04/24 Java/Android