參考文章:
10年的安福網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都營銷網(wǎng)站建設的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整安福建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)從事“安福網(wǎng)站設計”,“安福網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
http://ourMySQL.com/archives/1359?utm_source=tuicool&utm_medium=referral
官方:https://github.com/box/Anemometer
單節(jié)點Anemometer監(jiān)控
1 安裝anemometer
# cd /data/www/web3 # git clone https://github.com/box/Anemometer.gitanemometer && cd anemometer
2 創(chuàng)建表和用戶名
# mysql -uroot -proot
我們可以看下表結構如下
3 分析mysql慢日志
# pt版本高于2.2的執(zhí)行下面語句,將慢查詢?nèi)罩痉湃朊麨閟low_query_log數(shù)據(jù)庫中
# pt-query-digest --user=anemometer -h 127.0.0.1 --password=123456 \ --review h=localhost,D=slow_query_log,t=global_query_review\ --history h=localhost,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/mariadb/var/localhost-slow.log這時候,數(shù)據(jù)庫的slow_query_log 庫,里面的global_query_review_history和global_query_review這2張表已經(jīng)已經(jīng)有一些數(shù)據(jù)了。
4 修改anemometer配置文件及配置展示日志用的虛擬主機
# cd /data/www/web3/anemometer/conf # cp sample.config.inc.php config.inc.php # vim config.inc.php 主要修改的地方如下2個:配置nginx
# vim /usr/local/nginx/conf/vhost/anemometer.conf 內(nèi)容如下:
server { listen 80; server_name 192.168.0.88; access_log /home/wwwlogs/anemometer.log access; index index.php index.html; root /data/web3/anemometer; include enable-php.conf; }# /etc/init.d/nginx reload 重載nginx配置文件
在瀏覽器訪問http://192.168.0.88/ 即可如下圖所示(這幾張圖片是從別人博客摘錄的,他這個截圖做的特別詳細)
5 自動滾動日志
# vi /etc/logrotate.d/mysql
postrotate pt-query-digest --user=anemometer --password=123456 \ --review D=slow_query_log,t=global_query_review \ --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/mariadb/var/localhost-slow.log endscript至此,我們的anemometer算是跑通了。
但是生產(chǎn)環(huán)境的話,我們不可能就一個節(jié)點的啊,下面就是多節(jié)點部署的問題了。
多節(jié)點mySQL監(jiān)控慢查詢?nèi)罩?/strong>
node1:192.168.2.11 MariaDB10.0.17 還部署有nginx的anemometer web前端
node2:192.168.2.12 MariaDB10.0.17
各個節(jié)點的my.cnf里面開啟慢查詢,相關配置如下:
[mysqld] innodb_file_per_table = ON skip_name_resolve = ON slow_query_log=ON slow_query_log_file =localhost-slow.log long_query_time = 21. 安裝anemometer
node1上安裝到nginx的網(wǎng)站目錄下
# cd /home/wwwroot/ # git clonehttps://github.com/box/Anemometer.git anemometer # cd anemometer
node2上anemometer的安裝目錄沒什么要求
# cd /root # git clone https://github.com/box/Anemometer.gitanemometer # cd anemometer2. 創(chuàng)建表和用戶名
node1上執(zhí)行:
# mysql -uroot -proot
node2上執(zhí)行:
# mysql -uroot -proot3. 在兩個節(jié)點執(zhí)行pt命令分析慢查詢?nèi)罩?,并寫入到各自的?shù)據(jù)庫中
node1上執(zhí)行:
# pt-query-digest --user=anemometer --password=123456--host=192.168.2.11 \ --review h=192.168.2.11,D=slow_query_log,t=global_query_review\ --history h=192.168.2.11,D=slow_query_log,t=global_query_review_history\ --no-report --limit=0% --filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME\""localhost-slow.lognode2上執(zhí)行:
# pt-query-digest --user=anemometer --password=123456--host=192.168.2.12 \ --review h=192.168.2.12,D=slow_query_log,t=global_query_review \ --history h=192.168.2.12,D=slow_query_log,t=global_query_review_history \ --no-report --limit=0% --filter=" \$event->{Bytes} = length(\$event->{arg}) and\$event->{hostname}=\"$HOSTNAME\"" localhost-slow.log4. 在node1上配置前端
# cd /home/wwwroot/anemometer/conf # cp sample.config.inc.php config.inc.php # vim config.inc.php 主要修改的地方如下2個【conf項,plugins項】:$conf['datasources']['192.168.2.11'] = array( 'host' => '192.168.2.11', 'port' => 3306, 'db' => 'slow_query_log', 'user' => 'anemometer', 'password' => '123456', 'tables' => array( 'global_query_review' =>'fact', 'global_query_review_history'=> 'dimension' ), 'source_type' => 'slow_query_log' ); $conf['datasources']['192.168.2.12'] = array( 'host' => '192.168.2.12', 'port' => 3306, 'db' => 'slow_query_log', 'user' => 'anemometer', 'password' => '123456', 'tables' => array( 'global_query_review' =>'fact', 'global_query_review_history'=> 'dimension' ), 'source_type' => 'slow_query_log' ); $conf['plugins'] = array( ...省略代碼... $conn['user'] = 'anemometer'; $conn['password'] = '123456'; ...省略代碼...# /etc/init.d/nginx restart 重啟NginxChrome查看http://192.168.2.11/如下圖所示
5. 下面是我自己寫pt分析慢查詢?nèi)罩镜哪_本
(anemometer提供的那個個人感覺用不慣,自己照著寫了個更簡單的)
vim /home/scripts/pt-digest.sh內(nèi)容如下:
#!/bin/bash # 我這里直接把配置寫死了,覺得不太好的話大家可以參考其它文章將數(shù)據(jù)庫的連接配置獨立出來 # 慢查詢?nèi)罩敬娣诺哪夸?SQL_DATADIR="/usr/local/mariadb/var" # 慢查詢?nèi)罩镜奈募?basename) SLOW_LOG_FILE=$( mysql -uroot -proot -e " show global variables like'slow_query_log_file'" | tail-n1 | awk '{ print $2 }' ) # 獲取本機IP地址 IP_ADDR=$(/sbin/ifconfig | grep'inet addr' | egrep '172.|192.' | awk'{print $2}' | awk -F ":" '{print $2}') cp $SQL_DATADIR/$SLOW_LOG_FILE/tmp/ # 分析日志并存入slow_query_log這個數(shù)據(jù)庫 /usr/local/bin/pt-query-digest --user=anemometer --password=123456 --host=$IP_ADDR \ --review h=$IP_ADDR,D=slow_query_log,t=global_query_review\ --history h=$IP_ADDR,D=slow_query_log,t=global_query_review_history\ --no-report --limit=0% --filter="\$event->{Bytes} = length(\$event->{arg}) and\$event->{hostname}=\"$HOSTNAME\"" /tmp/$SLOW_LOG_FILE rm -f /tmp/$SLOW_LOG_FILE
調(diào)試通過以后,在crontab添加如下命令實現(xiàn)定期采集慢查詢?nèi)罩镜綌?shù)據(jù)庫存儲
59 23 * * * /bin/bash /home/scripts/pt-digest.sh> /dev/null
這樣每天就能自動分析采集慢查詢?nèi)罩玖恕?/p>
另外,慢查詢?nèi)罩窘ㄗh按天切分,這樣用pt-query-digest進行SQL慢查詢?nèi)罩窘y(tǒng)計的時候就避免重復分析了。慢查詢按天切分的腳本如下:
Tips下面是慢查詢?nèi)罩厩蟹帜_本:
下面是一個輪詢切割mySQL慢查詢和錯誤日志的腳本(/home/scripts/mysql_log_rotate):
"/usr/local/mariadb/var/localhost-slow.log""/usr/local/mariadb/var/localhost_err" { create 660 mariadb mariadb # 這個文件權限和屬主屬組需要根據(jù)自己的情況修改 dateext notifempty daily maxage 60 rotate 30 missingok olddir /usr/local/mariadb/var/oldlogs # 這個目錄不存在的話,要自己先新建好,并修改屬主為mariadb postrotate if /usr/local/mariadb/bin/mysqladminping -uroot -proot &>/dev/null; then /usr/local/mariadb/bin/mysqladminflush-logs -uroot -proot fi endscript }再配置個CRONTAB:
00 00 * * * (/usr/sbin/logrotate-f /home/scripts/mysql_log_rotate >/dev/null 2>&1)
這樣的話,每天慢查詢?nèi)罩?、錯誤日志就自動存儲到/usr/local/mariadb/var/oldlogs/這個目錄下了。
本文標題:Anemometer基于pt-query-digest將MySQL慢查詢可視化
轉載注明:http://weahome.cn/article/ieghdg.html