anemometer mysql 500_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的错)

vim /etc/php.ini

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密码 

备注:为了简单直接使用了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

c3e8dd64fd3ffb14e7a69fd338a58d94.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值