logstash收集mysql慢查询

查看mysql慢查询日志位置:

show variables like 'slow_query%'; show variables like 'long_query_time%';

 

mysql慢查询日志的记录格式:

# Time: 2020-08-19T11:24:19.810484Z

# User@Host: root[root] @ localhost [] Id: 2

# Query_time: 2.000562 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0

SET timestamp=1597836259;

select sleep(2);

 

第一行:语句的执行时间

第二行:用户名及IP

第三行:执行时间,锁表时间,总返回条目数,总的扫描结果

第四行:时间戳

第五行:执行的语句

 

收集日志流程:先使用多行合并插件multiline 将5行合并为一行,再使用过滤将需要的字段过滤出来,再将字段输入es。

 

对 multiline 插件来说,有三个设置比较重要:negate、pattern 和 what。

negate

  • 类型是 boolean
  • 默认为 false

否定正则表达式(如果没有匹配的话)。

pattern

  • 必须设置
  • 类型为 string
  • 没有默认值

要匹配的正则表达式。

what

  • 必须设置
  • 可以为 previous 或 next
  • 没有默认值

如果正则表达式匹配了,那么该事件是属于下一个或是前一个事件?

 

input{

file{

path => "/usr/local/mysql/data/mysql/elk-server-slow.log"

type => "mysql"

codec => multiline {

pattern => "^# Time" #说明:匹配以# Time开头的行,如果不是,那肯定是属于前一行的。

what => "previous"

negate => true

auto_flush_interval => 5

}

}

}

 

解析时,最后一行日志,不会解析。只有当再追加一条日志时,才会解析最后一条日志。

可以加一个auto_flush_interval参数,当过时间后最后一行就会被加进来。

 

运行logstash查看效果:

 

接下来就是分割字段:(写正则的时候可以使用kibana的开发工具中的Grok Debugger进行正则的调试,也可以使用一些在线正则网站)

 

 

filter {

grok {

match => {"message" => "%{NOTSPACE}\s+%{NOTSPACE}\s+%{TIMESTAMP_ISO8601:Date_time}.{1}%{NOTSPACE}\s+%{NOTSPACE}\s+%{NOTSPACE:User}\s+@\s+(?<Host>.*\])\s+%{NOTSPACE}\s+%{INT:ID}.{1}%{NOTSPACE}\s+%{NOTSPACE}\s+%{USERNAME:Query_time}\s+%{NOTSPACE}\s+%{USERNAME:Lock_time}\s+%{NOTSPACE}\s+%{USERNAME:Rows_sent}\s+%{NOTSPACE}\s+%{USERNAME:Rows_examined}.{1}%{NOTSPACE}\s+[a-z]+[=][0-9]+[;].{1}(?<command>.*)"}

}

mutate {

remove_field => ["@version"]

remove_field => ["@_id"]

remove_field => ["@_type"]

convert => ["Query_time", "integer"] #修改字段类型

convert => ["Lock_time", "integer"] #修改字段类型

convert => ["Rows_sent", "integer"] #修改字段类型

convert => ["Rows_examined", "integer"] #修改字段类型

}

}

 

utput{

if [type] == "mysql" {

stdout{codec => rubydebug}

elasticsearch {

hosts => ["192.168.1.135:9200"]

index => "mysql-slow-%{+YYYY.MM.dd}"

}

}

}

 

查看logstash日志:

 

 

 

 

打开kibana创建索引并查看:

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值