收集mysql慢查询日志进elk

1,首先mysql开启慢查询日志

vim /etc/mysql/mysql.conf.d/mysqld.cnf
#添加配置,这块目录可以自定义
slow_query_log = ON
slow_query_log_file = /var/lib/mysql/slow_query.log
long_query_time = 2

#然后重启mysql服务
service mysqld restart

2,然后配置filebeat

vim /etc/filebeat/filebeat.yml
#在filebeat.prospectors:下添加如下配置
- input_type: log
  paths:
    #我mysql是docker部署,容器内的/var/lib/mysql/slow_query.log路径对应宿主机的/data/vip/mysql/mysqldb/slow_query.log目录
    - /data/vip/mysql/mysqldb/slow_query.log
  document_type: slowQuery
  #多行合并配置
  multiline.pattern: ^(# Time)
  multiline.negate: true
  multiline.match: after
  #合并超时时间
  multiline.timeout: 5s
  fields:
    log_type: slow_query_log
  fields_under_root: true

elk配置可以参考我之前博文https://blog.csdn.net/u011870280/article/details/84579164

这里只重点介绍mysql慢查询配置

3.logstash配置

vim /etc/logstash/conf.d/11-nginx.conf
#添加
if [log_type] == "slow_query_log" {
    grok {
      match => [ "message", "(?m)^#\s+User@Host:\s+%{USER:user}\[[^\]]+\]\s+@\s+%{WORD}?\s+\[%{IP:ip}\]\s+Id:\s+%{NUMBER:id}\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}\nSET\s+timestamp=%{NUMBER:timestamp};\n%{GREEDYDATA:sql}" ]
    }
    date {
      match => [ "unixtime", "UNIX" ]
      target => "@timestamp"
      remove_field => "unixtime"
    }
}

4,完成

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山间明月江上清风_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值