Anemometer 慢查詢日誌監控平臺


環境介紹:

yum用的是163的源: CentOS6-Base-163.repo  

操作新系統:Red Hat Enterprise Linux Server release 6.4

數據庫版本:5.6.27

PHP版本:5.3.3 #要求php版本大於5.3

percona-toolkit:2.2.17


10.10.203.102【web服務器】

10.10.203.93 【被監控端】

需要在兩臺機器上都做的操作,步驟上有備註。


操作步驟:

1. percona-toolkit工具的安裝

10.10.203.93和10.10.203.102 都安裝

pt-query-digest是percona-toolkit裏面一個工具,其作用就是分析慢查詢日誌,將MySQL慢查詢日誌進行統計並友好的顯示出來。

# wget https://www.percona.com/downloads/percona-toolkit/2.2.17/RPM/percona-toolkit-2.2.17-1.noarch.rpm

# rpm -ivh percona-toolkit-2.2.17-1.noarch.rpm

# which pt-query-digest

/usr/bin/pt-query-digest

至此,pt-query-digest安裝完畢

 

2. php web環境的搭建

10.10.203.102 上操作

yum install httpd httpd-devel 

yum install php php-mysql php-common php-gd php-mbstring php-mcrypt php-devel php-xml php-bcmath


修改時區:

yum安裝的php,配置文件默認在/etc/php.ini.

wKiom1hbxUqiijRHAAAssAmTcmg479.png

#對pgm用戶授權【10.10.203.102和10.10.206.93】

mysql> grant all on *.* to 'pgm'@'10.10.%' identifiedby 'pgmfetion';

mysql> flush privileges;


3. 安裝Anemometer並配置

下載地址: https://github.com/box/Anemometer

下載完後名爲:Anemometer-master.zip

unzip Anemometer-master.zip

mv Anemometer-master /var/www/html/anemometer

 

#導入初始化庫表 【10.10.203.102和10.10.206.93】

cd /var/www/html/anemometer

mysql -S /tmp/mysql3307.sock -uroot -psecret <install.sql

mysql -S /tmp/mysql3307.sock -uroot -psecret <mysql56-install.sql

 

#修改配置文件

cd /var/www/html/anemometer/conf

cp sample.config.inc.php config.inc.php

vim config.inc.php 

wKioL1hbyquwzCcUAAB1-aU6_AQ544.png

wKiom1hbyqzRvI8DAAA6cZNhh5o017.png



啓動http服務

/etc/init.d/httpd start

訪問地址:

http://10.10.203.102/anemometer/

頁面能打開,但是不會有數據。


4. 導入慢查詢日誌

查看慢查詢的時間,爲了測試,我改的很小。慢查詢日誌的位置slow.log沒有指定,默認會在data目錄下。

wKioL1hbxq7yJjj1AAAywJHi9Vo673.png

wKioL1hbxq6j0diMAAAs34OrNBE109.png

請參照readme 執行相應命令:
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.2,所以執行下邊的命令。

10.10.203.102【web服務器】機器:

pt-query-digest --user=pgm --password=pgmfetion --port=3307 \
                      --review h=10.10.203.102,D=slow_query_log,t=global_query_review \
                      --history h=10.10.203.102,D=slow_query_log,t=global_query_review_history \
                      --no-report --limit=0% \
                      --filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME\"" /data/mysql/mysql3307/data/slow.log


10.10.203.93【被監控端】機器:

pt-query-digest --user=pgm --password=pgmfetion --port=7777 \
                      --review h=10.10.203.93,D=slow_query_log,t=global_query_review \
                      --history h=10.10.203.93,D=slow_query_log,t=global_query_review_history \
                      --no-report --limit=0% \
                      --filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME\""  /data/mysql/mysql7777/data/slow.log



重新訪問: http://10.10.203.102/anemometer/

兩個DB實例,選擇你要查看的DB.


wKiom1hby43CxyYuAACgKSK331c129.png

wKiom1hbzQ-SdDcgAAFqfvEv_TQ672.png

wKioL1hbzRHiTaWMAAKdqf3hAb8661.png

wKiom1hbzRGCr_ALAAH7d16c9qE610.png

wKioL1hbzROiWPbcAAIn-ETxcCI278.png


5. 日誌切割:

可以用日誌切割工具logrotate來自動切割慢日誌,並在切割後自動執行分析命令,mysql.slow.conf 配置文件如下:

/data/mysql/mysql3307/data/slow.log
{
create 660 mysql mysql
su root mysql
dateext
daily
missingok
rotate 360
notifempty
copytruncate

postrotate

pt-query-digest --user=pgm --password=pgmfetion --port=3307 \
                      --review h=10.10.203.102,D=slow_query_log,t=global_query_review \
                      --history h=10.10.203.102,D=slow_query_log,t=global_query_review_history \
                      --no-report --limit=0% \
                      --filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME\"" /data/mysql/mysql3307/data/slow.log-$(date +%Y%m%d)
endscript
}

通過定時任務來執行logrotate -f mysql.slow.conf,也可以將配置文件放到/etc/logrotate.d目錄下。


10.10.206.93 操作同上。


備註:

(1)日誌切換,也可以自己寫個腳本,方法不限。

(2)目前不支持5.7的數據庫,導入默認初始化表結構會報異常,默認時間戳在5.7中發生了變化。

https://github.com/box/Anemometer/issues/175

The install sql file does not create the tables properly during first setup. It appears to be due to a change in the default timestamp format in 5.7.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章