ELK分析MySQL慢查询日志并生成图像

一、背景

1.MySQL慢查询日志格式:

# Time: 181109 15:04:08
# [email protected]: tvpayrcdev[tvpayrcdev] @  [172.16.14.51]  Id: 8960747
# Query_time: 35.918265  Lock_time: 0.000141 Rows_sent: 1  Rows_examined: 11699162
SET timestamp=1541747048;
select count(*) from trade_risk_control_record

2.MySQL慢查询日志已通过rsyslog实时传输到logstash作为Indexer的节点。

二、logstash配置文件

input部分

input {
  file {
    type => "logstash-rc-mysql-slow"
        path => "/opt/data/logs/localhost-172.16.14.35/db1-slow.log"
        codec => multiline {
          pattern => "^# Time:"
          negate => true
          what => "previous"
        }
        stat_interval => 1
                discover_interval => 1
                start_position=>"end"
                sincedb_path => "/dev/null"
  }
}

filter部分

if [type] == "logstash-rc-mysql-slow" {
  grok {
    patterns_dir => ["/usr/local/logstash/etc/conf.d/patterns/mysql"]
    match => { "message" => "%{LONGQUERYLOG}" }
  }
  date {
    match => ["timestamp","UNIX"]
  }
  mutate {
    convert => [ "query_time", "float" ]
    convert => [ " lock_time", "float" ]
    remove_field => "message"
    remove_field => "timestamp"
       }
  } 

output部分

if [type] == "logstash-rc-mysql-slow" {
             elasticsearch {
                            hosts => ["172.16.1.25","172.16.1.26","172.16.1.27"]
                            index => ‘logstash-mysql_slow_log-%{+YYYY-MM-dd}‘
                            codec=>plain{charset=>"UTF-8"}
                          }
        }

三、kibana展示

1.创建索引

2.发现数据

包括字段:

3.绘制visualize
例1:统计数量排名前10的sql语句及对应的查询时间

原文地址:http://blog.51cto.com/fengjicheng/2315179

时间: 2024-10-06 12:19:26

ELK分析MySQL慢查询日志并生成图像的相关文章

mysqlsla 分析mysql慢查询日志

发现有一个工具mysqlsla,分析查询日志比 mysqldumpslow分析的会更清晰明了! 安装mysqlsla: 下载mysqlsla-2.03.tar.gz [[email protected] export]# tar -xvf mysqlsla-2.03.tar.gz [[email protected] export]# yum install *DBI* [[email protected] mysqlsla-2.03]# perl Makefile.PLCan't locate

shell脚本分析mysql慢查询日志(slow log)

使用percona公司的pt-query-digest分析慢查询日志,分析.统计的结果的比较清晰 #!/bin/sh slowlog_path=/root/slow_query_log everyslow=/tmp/everydayslow ##需要下载pt-query-digest pt_digest=/root/pt-query-digest start_string=$(grep `date --date="0 days ago" +%y%m%d` ${slowlog_path}

Logstash分析MySQL慢查询日志

最近在使用ELKStack对系统日志进行分析,在网上也有看到有使用logstash的案例,但是发现不能正常解析出来,于是重新花时间去进行正则计算,主要代码如下: input {   file {     type => "mysql-slow"     path => "/var/lib/mysql/slow.log"         start_position => beginning                 sincedb_write

mysql慢查询日志分析工具 mysqlsla(转)

mysql数据库的慢查询日志是非常重要的一项调优辅助日志,但是mysql默认记录的日志格式阅读时不够友好,这是由mysql日志记录规则所决定的,捕获一条就记录一条,虽说记录的信息足够详尽,但如果将浏览慢查询日志做为一项日常工作,直接阅读mysql生成的慢查询日志就有可能比较低效了. 除了操作系统命令直接查看slowlog外,mysql自己也提供了一个阅读slowlog的命令行工具:mysqldumpslow,该命令行提供了一定的分析汇总功能,可以将多个类似的SQL语句抽象显示成一个,不过功能还是

mysql慢查询日志分析工具mysqlsla

一.介绍    mysqlsla是一个分析mysql慢日志的工具,可以分析出慢查询的原因,包括执行某条sql出现的次数及在slow log数据的百分比.执行时间.等待销的时间等. 公司的数据库有很多慢查询日志,导致的系统的负载很高,而mysql慢查询日志文件内容格式不太好看,经推荐使用mysqlsla:使用方便,操作简单. 二.安装mysqlsla 系统环境 CentOS release 6.6 (Final) 2.6.32-504.el6.x86_64 官网已经不能下载,所需要的文件已在百度云

ELK logstash 处理MySQL慢查询日志(初步)

写在前面:在做ELK logstash 处理MySQL慢查询日志的时候出现的问题: 1.测试数据库没有慢日志,所以没有日志信息,导致 IP:9200/_plugin/head/界面异常(忽然出现日志数据,删除索引后就消失了) 2.处理日志脚本问题 3.目前单节点 配置脚本文件/usr/local/logstash-2.3.0/config/slowlog.conf[详细脚本文件见最后] output { elasticsearch { hosts => "115.28.3.150:9200

mysql慢查询日志切割,日志分析

#!/usr/bin/env python #coding:utf8 import os,sys import datetime,shutil,subprocess from config.config import slow_config class cut_mysql(object): mysql_user,mysql_pass,date_day,slow_log_name,slow_log_path,mysqlsla_log_name,mysqldumpslow_log_name,new_

记一次mysql慢查询日志分析

MySQL慢查询日志分析 分析工具mysqlsla的安装以及使用,mysqlsla是hackmysql.com推出的一款MySQL的日志分析工具,功能非常强大. 数据报表,非常有利于分析慢查询的原因, 包括执行频率, 数据量, 查询消耗等. 在CentOS下安装mysqlsla yum install perl-DBI perl-DBD-MySQL perl-devel -y #安装依赖包 wget ftp://ftp.tw.freebsd.org/pub/distfiles/mysqlsla-

Linux定时修改MySQL慢查询日志文件名

一:背景介绍 二:编辑修改慢查询日志脚本 三:加入定时任务 1.如果所有慢查询日志都放到一个文件中,那么时间长了,查看慢查询日志将是一件非常痛苦的事情,所以,需要按时间把慢查询日志进行拆分. 2.修改MySQL服务器变量slow_query_log_file的脚本内容 #!/bin/sh #修改MySQL慢查询日志文件名,使每天生成一个慢查询日志文件 #避免所有慢查询日志都放到一个文件中,导致分析查看不方便 USERNAME=root PASSWORD=redhat CURRDATE=`date