使用Anemometer基于pt-query-digest将MySQL慢查询可视化
admin
2023-06-07 20:21:28
0

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/

相关内容

热门资讯

轰动性突破!美国终被伊朗逼怂 伊朗局势看来出现了真正的进展,在多方传出美伊谈判立场相互接近后,特朗普北京时间周日凌晨发帖表示,美国...
男子踩中蛇窝,至少被3条毒蛇咬... 5月22日,云南保山市人民医院血液科蛇伤救治中心病房外,26岁的阿杰(化名)在哥嫂的搀扶下,缓缓走出...
塞铁巴铁领导人同日抵京 5月24日,塞尔维亚总统武契奇抵达北京,开始对中国进行为期五天的国事访问。同日,巴基斯坦总理夏巴兹抵...
当前约有240艘船只等待伊朗批... △霍尔木兹海峡(资料图)据伊朗方面24日消息,目前约有240艘船只正在等待获得伊朗方面许可后进入霍尔...
时隔12年,中国再度举办这一重... ‍‍5月23日,中共中央政治局委员、国务院副总理何立峰在苏州出席亚太经合组织(APEC)贸易部长会议...
美伊协议未官宣共和党先内讧,克... 周六,得克萨斯州共和党参议员泰德·克鲁兹表示,他对美国与伊朗即将达成的协议条款“深感担忧”,随后在社...
非常时刻,任正非突然亮相《新闻... 作者 | 布语发现没有,任正非最近在《新闻联播》中公开亮相了,仅仅10秒的镜头,信号却很不寻常。5月...
投喂狮子时观光车车门突然打开!... 5月21日,北京八达岭野生动物园猛兽区发生观光游览车车门意外开启事件,引发社会高度关注。据新京报报道...
重庆电视机安装费 如果是小米或者是索尼的电视机,在安底座的时候是不会收费的,但是如果是安装架子或者是墙壁的费用是大概会...
空调安装费是多少钱 空调安装费用是由多个因素决定的,包括空调的类型、安装位置、管路长度、安装人员等等。因此,空调安装费用...