Anemometer将Mysql慢查询日志可视化

2022-07-04 15:14:20 浏览数 (1)

工作原理: 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密码 < 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  #每五分钟运行一次

0 人点赞