推荐一款可视化神器!Anemometer将Mysql慢查询日志可视化

工作原理
Anemometer: 实现慢查询sql可视化
pt-query-digest :抽取慢查询日志
/etc/my.cnf 开启慢查询

#slow_query 
log_queries_not_using_indexes=1
long_query_time=1
slow_query_log=1


部署架构(单机部署)
httpd 服务 (相当于是tomcat 的用途,去为Anemometer提供服务)
pt-query-digest 慢查询日志抓取导入

(从慢查询日志里面提取慢sql 写入到Anemometer 自身的数据库中,后面会将它写入定时任务中)
Anemometer 可视化展示 (安装目录:/var/www/htm)


搭建Anemometer框架
前置工作:
1.关闭selinux

setenforce 0
sed -i 's/enforcing/disabled/g' /etc/sysconfig/selinux


2.打开防火墙的443,13306,80端口

iptables -I INPUT -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 13306 -j ACCEPT
service iptables save


3.确保时间准确(非必须)

yum install -y ntp ntpdate
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #修改时区为东8区
cp: overwrite `/etc/localtime'? y
service ntpdate start
[root@Master01 ~]# date -R
Tue, 30 Jan 2018 14:45:34 +0800#+0800是东8区
chkconfig ntpdate on



部署工作
1.安装核心组件pt_query_digest(2.2.14版本)

yum install perl-DBI perl-DBD perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL perl-TermReadKey -y
wget --no-check-certificate https://www.percona.com/downloads/percona-toolkit/2.2.14/RPM/percona-toolkit-2.2.14-1.noarch.rpm
yum install -y percona-toolkit-2.2.14-1.noarch.rpm


2.安装php
注意php必须是5.33以上的版本,否则报错;
安装环境的OS是CentOS6.8,所以直接yum安装的php就是5.33版本

yum install -y php php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt libmcrypt-devel php-fpm php-dba


3.安装httpd

yum install -y httpd


4.修改配置,启动php(不修改时区的话,启动httpd时会报500的错)

date.timezone = Asia/Shanghai
service php-fpm start


5.初步配置anemometer:
cp -r anemometer /var/www/html/ #anemometer项目程序自行下载
vim /etc/httpd/conf/httpd.conf
添加ServerName 192.168.214.140:80(anemometer的IP,如果不采用80端口,需要在这里配上其他端口号


6.执行建库脚本:
cd /var/www/html/anemometer
mysql -uroot -p密码 < install.sql #当前主机安装了Anemometer需要使用的mysql 数据库
备注:为了简单直接使用了root 账号进行授权


7.进一步配置anemometer:
cd /var/www/html/anemometer/conf/
修改第一处:

cp sample.config.inc.php config.inc.php
vim /var/www/html/anemometer/conf/config.inc.php  
【$conf['datasources']['mysql56'],$conf['datasources']['localhost_history'],$conf['plugins'] 三处的内容】


$conn['user'] = 'anemometer';
$conn['password'] = '密码';
修改第二处:
vim /var/www/html/anemometer/conf/datasource_localhost.inc.php

$conf['datasources']['localhost'] = array(
'host' => '192.168.214.140', #根据实际情况进行修改
'port' => 3306,
'db' => 'slow_query_log',
'user' => 'backend',
'password' => 'backend',
'tables' => array(
'global_query_review' => 'fact',
'global_query_review_history' => 'dimension'
),
'source_type' => 'slow_query_log'
);


8.启动apache:
service httpd start
打开刚才发布的网页http://192.168.214.140/anemometer

9.添加定时任务:
定时任务脚本如下:
[root@localhost test]# more fetch-slowlog.sh

#!/bin/sh
# turn on debug
set -x
current_host=`/usr/sbin/ip add show eth0 | grep inet | grep -v "inet6" | awk '{print $2}' | cut -d / -f 1`
mysql_cmd=" mysql -uroot -proot -NB "

project=azure-qa-qyd # 项目名称
hostip=${current_host} #target db IP
#db_name=$3 #数据库名称, this can be ignored
#慢查询文件的绝对路径
slowfile=`$mysql_cmd -e "show variables like 'slow_query_log_file'" 2>/dev/null | cut -f2`
# the db host where review and history of slow log store
db_host=192.168.214.140
db_port=3306
pt-query-digest --user=root --password=root \
--review h=${db_host},P=${db_port},D=slow_query_log,t=global_query_review \
--history h=${db_host},P=${db_port},D=slow_query_log,t=global_query_review_history \
--charset=utf8 \
--no-report --limit=0\% \
--filter="\$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"${project}\" and \$event->{hostip}=\"${hostip}\" " \
"${slowfile}"
#clear slow log
echo > $slowfile
$mysql_cmd -e "flush slow logs"
echo "slow log processed!"


[root@localhost test]# crontab -l
*/5 * * * * /opt/test/fetch-slowlog.sh > /tmp/fetch-slowlog.log 2>&1 #每五分钟运行一次

10. 登录后即可看到慢查询对应的数据库的慢sql

推荐一款可视化神器!Anemometer将Mysql慢查询日志可视化

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章