介绍

在生产环境下,logstash 经常会遇到处理多种格式的日志,不同的日志格式,解析方法不同。下面来说说logstash处理多行日志的例子,对MySQL慢查询日志进行分析,这个经常遇到过,网络上疑问也很多。
MySQL慢查询日志格式如下:

 User@Host: ttlsa[ttlsa] @  [10.4.10.12]  Id: 69641319
# Query_time: 0.000148  Lock_time: 0.000023 Rows_sent: 0  Rows_examined: 202
SET timestamp=1456717595;
select  `Id`, `Url` from `File` where `Id` in ('201319', '201300');
# Time: 160229 11:46:37

1、filebeat配置‍:

我这里是使用filebeat 1.1.1版本的,之前版本没有multiline配置项,具体方法看后面那种。

filebeat:prospectors:-paths:- /www.ttlsa.com/logs/mysql/slow.logdocument_type: mysqlslowloginput_type: logmultiline:negate: truematch: afterregistry_file: /var/lib/filebeat/registry
output:logstash:hosts: ["10.6.66.14:5046"]
shipper:
logging:files:
logstash配置

2、logstash配置

input段配置

# vi /etc/logstash/conf.d/01-beats-input.conf
input {beats {port => 5046host => "10.6.66.14"}
}

filter 段配置

# vi /etc/logstash/conf.d/16-mysqlslowlog.log filter {  if [type] == "mysqlslowlog" {  grok {    match => { "message" => "(?m)^#\s+User@Host:\s+%{USER:user}\[[^\]]+\]\s+@\s+(?:(?<clienthost>\S*) )?\[(?:%{IPV4:clientip})?\]\s+Id:\s+%{NUMBER:row_id:int}\n#\s+Query_time:\s+%{NUMBER:query_time:float}\s+Lock_time:\s+%{NUMBER:lock_time:float}\s+Rows_sent:\s+%{NUMBER:rows_sent:int}\s+Rows_examined:\s+%{NUMBER:rows_examined:int}\n\s*(?:use %{DATA:database};\s*\n)?SET\s+timestamp=%{NUMBER:timestamp};\n\s*(?<sql>(?<action>\w+)\b.*;)\s*(?:\n#\s+Time)?.*$" }  }    date {      match => [ "timestamp", "UNIX", "YYYY-MM-dd HH:mm:ss"]      remove_field => [ "timestamp" ]    }  }}

关键之重是grok正则的配置。

output段配置

# vi /etc/logstash/conf.d/30-beats-output.conf
output {if "_grokparsefailure" in [tags] {file { path => "/var/log/logstash/grokparsefailure-%{[type]}-%{+YYYY.MM.dd}.log" }}if [@metadata][type] in [ "mysqlslowlog" ] {elasticsearch {hosts => ["10.6.66.14:9200"]sniffing => truemanage_template => falsetemplate_overwrite => trueindex => "%{[@metadata][beat]}-%{[type]}-%{+YYYY.MM.dd}"document_type => "%{[@metadata][type]}"}}
}

标准输出结果截图

elasticsearch结果截图


如果是使用filebeat1.1.1之前的版本,配置如下:
1. filebeat配置

filebeat:prospectors:-paths:- /www.ttlsa.com/logs/mysql/slow.logdocument_type: mysqlslowloginput_type: logregistry_file: /var/lib/filebeat/registry
output:logstash:hosts: ["10.6.66.14:5046"]
shipper:
logging:files:

2. logstash input段配

input {beats {port => 5046host => "10.6.66.14"codec => multiline {pattern => "^# User@Host:"negate => truewhat => previous}}
}

其它配置不变。

来源:http://www.ttlsa.com/elk/elk-logstash-process-mysql-slowlog/

参考连接 :

ELK logstash 处理MySQL慢查询日志 : https://mp.weixin.qq.com/s/ii1mu18WazEHezRMQImfwA

ELK logstash 处理MySQL慢查询日志相关推荐

  1. MySQL 慢查询日志导入 Elasticsearch 可视化查询分析

    当应用程序后台 SQL 查询慢的时候我们一般第一时间会查看数据库慢查询记录,但是慢查询记录是原始文本,直接查询搜索分析比较费时费力,虽然业界有针对 MySQL 慢查询分析的命令行工具(比如:pt-qu ...

  2. MySQL 慢查询日志分析及可视化结果

    MySQL 慢查询日志分析及可视化结果 MySQL 慢查询日志分析 pt-query-digest分析慢查询日志 pt-query-digest --report slow.log 报告最近半个小时的 ...

  3. mysql慢查询日志平时开启吗_MySQL开启慢查询日志功能的方法

    mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出当前程序里是否有很耗费资源的sql语句,这是一个有用的日志.它对于性能的影响不大(假设所有查询都很快),并且强调了那些最需要注意的查询(丢失 ...

  4. MySQL慢查询日志的配置与使用_MySQL 慢查询日志的开启与配置

    简介 MySQL 慢查询日志是排查问题 SQL 语句,以及检查当前 MySQL 性能的一个重要功能. 查看是否开启慢查询功能: mysql> show variables like 'slow_ ...

  5. 6、MySQL慢查询日志(Slow Query Log)

    慢查询日志用来记录在 MySQL 中执行时间超过指定时间的查询语句.通过慢查询日志,可以查找出哪些查询语句的执行效率低,以便进行优化. 通俗的说,MySQL 慢查询日志是排查问题的 SQL 语句,以及 ...

  6. mysql慢查询日志 Mysql慢查询

    mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出当前程序里有很耗费资源的sql语句,那如何打开mysql的慢查询日志记录呢?    其实打开mysql的慢查询日志很简单,只需要在mysql ...

  7. mysql 慢查询日志的作用_MySQL慢查询日志的作用和开启

    前言 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中.lon ...

  8. 开启MYSQL慢查询日志

    1.修改my.cnf或my.ini 1).linux----------------------------------- /etc/my.cnf 文件 [mysqld]long_query_time ...

  9. 读懂mysql慢查询日志

    我们来看一下如何去读懂这些慢查询日志. 在跟踪慢查询日志之前,首先你得保证最少发生过一次慢查询.如果你没有可以自己制造一个: root@server# mysql -e 'SELECT SLEEP(8 ...

最新文章

  1. mysql数据没有真正提交,转MySQL 批量提交优化
  2. python中的 怎么用_Python中如何调用Linux命令
  3. 分享ASP.NET+jQuery MiniUI后台购物管理
  4. [github]使用——上传工程到新建的repo
  5. mysql单列索引和多列索引_浅谈MySQL索引优化
  6. 节后的第一个周末,来领取一个Ipad吧!真香!
  7. AFN2.0到3.0的迁移
  8. kubernetes目录挂载
  9. sql server charindex函数和patindex函数详解(转)
  10. CentOS Linux解决Device eth0 does not seem to be present【转】
  11. 一个程序员的创业失败教训【转自CSDN】
  12. 数据结构基础知识(2)
  13. Android的快速开发框架 afinal
  14. 产品设计(1):开源产品设计工具pencil
  15. 电脑桌面打开计算机打开多个,如何在电脑桌面并排显示多个Excel工作表
  16. 浅谈css样式及选择器
  17. 瑞萨E1仿真器(R0E000010KCE00)支持的MCU系列--V850 Family
  18. Java堆内存Heap与非堆内存Non-Heap简介和设置
  19. 新松机器人通过c++离线编程接口库控制运动失败的100个注意事项
  20. Unity3d Gis 坐标转换

热门文章

  1. python机器学习:朴素贝叶斯分类算法
  2. 使用计算机解决问题的本质,(新教材)教科版高中信息技术必修一 2.1 计算机解决问题的过程 课件(共25张PPT)...
  3. c++语言怎么实现字符串拼接,C++ string类和字符串的访问和拼接操作
  4. linux自动分区shell,SHELL脚本实现分区
  5. delphi 字符串占用空间_字符串在Python内部是如何省内存的
  6. iOS申请发布证书-图文详解
  7. [CQOI2017]小Q的表格(数论+分块)
  8. PHP项目:如何用PHP高并发检索数据库?
  9. C# 文件读取(一)
  10. CentOS 6.5源码编译安装MySQL 5.6