Mysql 慢日志分析系统搭建 —— Box Anemometer
Mysql 慢日志分析系统搭建 —— Box Anemometer
水露露 发表于5个月前
Mysql 慢日志分析系统搭建 —— Box Anemometer
  • 发表于 5个月前
  • 阅读 50
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

背景:

​慢日志是分析定位问题的利器,但是在日常实际应用中,mysql自动生成的慢日志是杂乱无章的,不便于我们的使用。 这里介绍利用开源项目 Box Anemometer来搭建一个图形可视化的慢日志分析系统。

github项目地址:  https://github.com/box/Anemometer 

步骤过程:​

一. 安装 percona-toolkit,因为其实box还是借助percona的pt-query-digest工具将慢日志的分析结果写入数据库,然后展示。

1. 获取最新的安装包 :wget percona.com/get/percona-toolkit.tar.gz​  

2. 解压并安装 : 

tar xzvf​  percona-toolkit-2.2.16.tar.gz   

cd percona-toolkit-2.2.16

perl Makefile.PL

make

make test

make install

​二. 搭建LAMP环境并且安装Box Anemometer :

1.  git clone https://github.com/box/Anemometer.git anemometer

2.  将clone的anemometer放在httpd.conf对应的DocumentRoot​目录路径下。

3.  修改配置文件:

cd   /anemometer/conf  

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

配置项说明:

$conf['datasources']['localhost'] = array(

        'host'  => '127.0.0.1',         //anemometer系统用来存放数据集结果的数据库服务器的host

        'port'  => 3307,                  //对应的端口

        'db'    => 'slow_query_log',          //对应的数据库

        'user'  => 'root',                              //用户名

        'password' => '123456',                //密码

        'tables' => array(

                'global_query_review' => 'fact',

                'global_query_review_history' => 'dimension'

        ),

        'source_type' => 'slow_query_log'

);

三. 在anemometer的结果集数据库中手工倒入sql文件创建数据库以及表:

mysql -uroot  -p  -S /tmp/mysql3306.sock < Anemometer/install.sql 

四. 配置具体的收集环境:​

注: 当你要收集多个数据库服务器上的慢日志时,你有以下方式可以实现:

1、手工导入的install.sql里面的global_query_review_history表包含了hostname_max和db_max,通过hostname_max区分把多个数据源存放到一个表里.

2、每台mysql把处理后的slow log数据放到当前服务器,然后anemometer连接对应的服务器获取数据.

3、所有的mysql把处理后的slow log数据统一存放到anemometer所在的数据库上,然后通过表名或者数据库名字区分.

如果选择第二种或者第三种方案,需要定义多个数据源​。我们这里以第2中方式为例:

假如我们的Box系统放在A主机上,我们要收集B与C主机的slow log来分析统计(三台主机上都有mysql实例):​

第一步,首先,我们在A数据中心数据库(即存放B和C的结果集)上创建B和C对应的库和表:修改install.sql文件中的库名和表名即可:

​​我们将B的数据存放在A的slow_query_log_master库中,将C的数据存放在A的slow_query_log_slave数据库中。

第二步,然后修改配置文件中的数据源配置:

 

​上面的B和C指的是界面的数据源选择,其他的都是A数据库的配置,db即B和C的数据结果集存放数据库。

第三步,在B和C上配置日志收集装置:

将/anemometer/scripts​/anemometer_collect.sh放在B和C上,然后根据自己的需求进行修改,因为不同的需求要进行不同的修改,这里就不具体说明了,只是强调几点应该注意的:

1.  此程序是默认登陆机器,将mysql的slow_query_log​关掉,然后mv到另外一个文件夹,然后用pt-query-digest进行分析,并将结果写入A的数据库。然后再打开slow_query_log开关,中间涉及慢日志时长long_query_time的修改,需要根据自己的需求更改。

2. 此程序默认删掉了mv过去的文件,如果你有需要需保存。​

​3. 为anemometer_collect.sh生成配置文件,​分别为连接本地数据库的配置文件localhost.cnf(用于设置slow_query_log参数)以及远程数据库A的连接配置server.cnf 用于将pt-query-digest的结果写入A。

4. 以cron的形式每天定时执行:

30 21 * * *  sh -x   anemometer_collect.sh  --defaults-file localhost.cnf  --history-defaults-file  server.cnf >>/data2/box-slow.log​

第四步:​这时候,应该就可以打开服务器对应的网站进行访问了.

如果发现访问不了,可以curl -v以及查看log的方式定位错误。​

致此,基本上就搭建完毕,后续遇到的问题会持续更新。。。​

共有 人打赏支持
粉丝 4
博文 79
码字总数 24633
×
水露露
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: