千家信息网

使用Anemometer基于pt-query-digest将MySQL慢查询可视化

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,If you're just completely itching to start using this tool, here's what you need:1、a MySQL database
千家信息网最后更新 2026年11月03日使用Anemometer基于pt-query-digest将MySQL慢查询可视化

If you're just completely itching to start using this tool, here's what you need:

1、a MySQL database to store query analysis data in.

2、pt-query-digest.You may as well just get the whole Percona Toolkit while you're at it :)

3、a slow query log from a MySQL server (see The Slow Query Log for info on getting one)

4、a webserver with PHP

The first first

[root@xiaoya anemometer]# wget percona.com/get/percona-toolkit.rpm[root@xiaoya ~]# yum install -y percona-toolkit.rpm

Then,Pt-query-digest reference configuration is given

[code collapse="false"]pt-query-digest --user=数据库用户名 --password=数据库密码 --review h=数据库IP和域名,D=slow_query_log,t=global_query_review --history h=数据库IP和域名,D=slow_query_log,t=global_query_review_history --no-report --limit=0% --filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME\"" 数据库日志文件地址[/code]

next,Grammar and important options

pt-query-digest [OPTIONS] [FILES] [DSN]
--create-review-table 当使用--review参数把分析结果输出到表中时,如果没有表就自动创建。
--create-history-table 当使用--history参数把分析结果输出到表中时,如果没有表就自动创建。
--filter 对输入的慢查询按指定的字符串进行匹配过滤后再进行分析
--limit限制输出结果百分比或数量,默认值是20,即将最慢的20条语句输出,如果是50%则按总响应时间占比从大到小排序,输出到总和达到50%位置截止。
--host MySQL服务器地址
--user mysql用户名
--password mysql用户密码
--history 将分析结果保存到表中,分析结果比较详细,下次再使用--history时,如果存在相同的语句,且查询所在的时间区间和历史表中的不同,则会记录到数据表中,可以通过查询同一CHECKSUM来比较某类型查询的历史变化。
--review 将分析结果保存到表中,这个分析只是对查询条件进行参数化,一个类型的查询一条记录,比较简单。当下次使用--review时,如果存在相同的语句分析,就不会记录到数据表中。
--output 分析结果输出类型,值可以是report(标准分析报告)、slowlog(Mysql slow log)、json、json-anon,一般使用report,以便于阅读。
--since 从什么时间开始分析,值为字符串,可以是指定的某个"yyyy-mm-dd [hh:mm:ss]"格式的时间点,也可以是简单的一个时间值:s(秒)、h(小时)、m(分钟)、d(天),如12h就表示从12小时前开始统计。
--until 截止时间,配合-since可以分析一段时间内的慢查询。

Install anemometer

First up, grab the anemometer code from github. Navigate to the document root of your web server and snag a copy of the Box Anemometer code.

[root@xiaoya ~]# git clone git://github.com/box/Anemometer.git anemometer

or ,if you have 9418 port closed:

[root@xiaoya ~]# git clone

then change your current working directory to the anemometer directory:

[root@xiaoya ~]# cd anemometer

Next, you should connect to the MySQL database you're looking to store the analysis data in and issue the following command:

[root@xiaoya anemometer]# mysql -uroot -p123456 < install.sql [root@xiaoya anemometer]# mysql -uroot -p123456 -e "grant ALL ON slow_query_log.* to  BY '123456';"

Next, grab that slow query log file you have (mine's called "slow.log"!), and run pt-query-digest on it: NOTE: I'm using a BASH 3.0 shell here on my MySQL database server! This is so the "$HOSTNAME" variable properly replaces with "db.example.com")

[root@xiaoya ~]# rpm -qa|grep percona-toolkit percona-toolkit-2.2.16-1.noarch

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

[root@xiaoya ~]# pt-query-digest --user=anemometer --password=123456 --review D=slow_query_log,t=global_query_review --history D=slow_query_log,t=global_query_review_history --no-report --limit=0% --filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME\"" /usr/local/mysql/var/slow.log

You may see an error like above, that's okay! TODO: explain what the options above are doing.

Pipeline process 11 (aggregate fingerprint) caused an error: Argument "57A" isn't numeric in numeric gt (>) at (eval 40) line 6, <> line 27.Pipeline process 11 (aggregate fingerprint) caused an error: Argument "57B" isn't numeric in numeric gt (>) at (eval 40) line 6, <> line 28.Pipeline process 11 (aggregate fingerprint) caused an error: Argument "57C" isn't numeric in numeric gt (>) at (eval 40) line 6, <> line 29.
View the data!

Now, navigate to the document root of your web server and copy the sample config so you can edit it:

[root@xiaoya conf]# cd /home/wwwroot/anemometer/conf[root@xiaoya conf]# cp sample.config.inc.php config.inc.php

The sample config explains every setting you may want to change in it. At the very least, make sure you set the Datasource to the MySQL database you're storing the analyzed digest information in:

$conf['datasources']['localhost'] = array(    'host'  => 'db.example.com',    'port'  => 3306,    'db'    => 'slow_query_log',    'user'  => 'anemometer',    'password' => 'superSecurePass',    'tables' => array(        'global_query_review' => 'fact',        'global_query_review_history' => 'dimension'    ));

In addition, the "explain" plugin is enabled by default in the current release and you'll need to setup the username and password it uses to an account that has privileges to explain queries on a given schema on a host. For example, if you're digesting slow logs that primarily contain queries from the "world" database on db.example.com, you'll need to ensure that the user account you put into the following section of the config has the necessary privileges on the "world" database on db.example.com. To do this, scroll down in the sample config to the section containing the plugins configuration and change the 'user' and 'password' parameters to an appropriate account:

$conf['plugins'] = array(        ...    'explain'       =>      function ($sample) {        $conn['user'] = 'anemometer';        $conn['password'] = 'superSecurePass';        return $conn;    },);

Finally,you can look through

http://10.0.0.5/anemometer/

分析 查询 数据 时间 结果 输出 数据库 参数 用户 类型 语句 相同 历史 地址 域名 字符 字符串 密码 小时 数据表 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 北京路客互联网科技有限公司 科技互联网政务服务 疫情对互联网科技公司影响 科技互联网技术 网络科技有限互联网 关于新基建和互联网科技 科技与互联网发展 猪兼强互联网科技 紫鲸互联网科技 互联网科技的英文 互联网科技股午盘股票涨跌 华中科技有哪些互联网大佬 云创客互联网科技公司 深圳市优智互联网科技有限公司 中国互联网公司排名锤子科技 工业互联网等科技实现智能化赋能 黑科技 体验场景 互联网大会 广西科技产业互联网是什么 广州三三互联网科技有限公司 东风日产互联网科技公司叫什么 科技互联网公司装修 未来的互联网科技 腾讯科技 互联网女皇 联恩商钥互联网科技有限公司 四个字互联网科技公司取名 荆州市昕露互联网络科技有限公司 速维有品互联网信息科技(苏州)有限公司 洛阳共同富裕互联网科技有限公司 上海钢联属于互联网科技股吗 数字科技和互联网金融哪个好
0