美文网首页
Mysql慢日志采集

Mysql慢日志采集

作者: 龙果学院 | 来源:发表于2017-02-20 16:47 被阅读85次

Mysql的慢日志也是日常我们比较关注的一点,用logstash 可以很好的帮助我们完成这一项任务:1、 下面是我从线上简单复制出来的一段代码:# User@Host: mall[mall] @ [192.168.10.9]# Query_time: 1536.572069 Lock_time: 0.000203 Rows_sent: 0 Rows_examined: 0SET timestamp=1467686975;SELECT `shs_user`.`uid`, `shs_user`.`uname`, `shs_user_stat`.`rebate_money`, `shs_user_stat`.`order_num`FROM (`shs_user_stat`)JOIN `shs_user` ON `shs_user`.`uid`=`shs_user_stat`.`uid`WHERE `shs_user`.`is_lock` = 0ORDER BY `shs_user_stat`.`rebate_money` DESC, `shs_user_stat`.`order_num` DESCLIMIT 6;# User@Host: mall[mall] @ [192.168.10.6]# Query_time: 937.995136 Lock_time: 0.000147 Rows_sent: 0 Rows_examined: 0SET timestamp=1467686975;SELECT `shs_user`.`uid`, `shs_user`.`uname`, `shs_user_stat`.`rebate_money`, `shs_user_stat`.`order_num`FROM (`shs_user_stat`)JOIN `shs_user` ON `shs_user`.`uid`=`shs_user_stat`.`uid`WHERE `shs_user`.`is_lock` = 0ORDER BY `shs_user_stat`.`rebate_money` DESC, `shs_user_stat`.`order_num` DESCLIMIT 6;Mysql 慢日志说明:第一行:# User@Host: mall[mall] @ [192.168.10.6]#表示登录的用户和登录主机第二行:查询时间、锁的时间、查询返回的行数、查询匹配的行数、查询语句。2、 可以匹配如下格式:在使用codec/multiline搭配使用的时候,需要注意,grok和普通正则一样默认是不支持匹配回车换行的。就像你需要=~//m一样也需要单独指定,具体写法是在表达式开始位置加(?m)标记看一下匹配文件:[root@monitor logstash-5.0.0]# cat etc/logstash_mysql.slowinput{stdin{codec => multiline {pattern => "^# User@Host:"negate => truewhat => "previous"}}}filter{grok {match => { "message" => "(?m)^#\s+User@Host:\s+%{USER:user}\[^\]+\]\s+@ (?:(?\S*) )?\[(?:%{IPV4:clientip})?\]\s.*# Query_time: %{NUMBER:query_time:float}\s+Lock_time: %{NUMBER:lock_time:float}\s+Rows_sent: %{NUMBER:rows_sent:int}\s+Rows_examined: %{NUMBER:rows_examined:int}\s*(?:use %{DATA:database};\s*)?SET timestamp=%{NUMBER:timestamp};\s*(?(?\w+)\s+.*).*$" }}date {match => [ "timestamp", "UNIX", "YYYY-MM-dd HH:mm:ss"]remove_field => [ "timestamp" ]}}output{stdout{codec=>rubydebug}elasticsearch {action => "index"hosts => "192.168.10.100:9200"index => "mysql-slow-%{+yyyy.MM.dd}"}}测试返回结果:{"rows_examined" => 0,"query" => "SELECT `shs_user`.`uid`, `shs_user`.`uname`, `shs_user_stat`.`rebate_money`, `shs_user_stat`.`order_num`\nFROM (`shs_user_stat`)\nJOIN `shs_user` ON `shs_user`.`uid`=`shs_user_stat`.`uid`\nWHERE `shs_user`.`is_lock` = 0\nORDER BY `shs_user_stat`.`rebate_money` DESC, `shs_user_stat`.`order_num` DESC\nLIMIT 6;","message" => "# User@Host: mall[mall] @ [192.168.10.9]\n# Query_time: 1536.572069 Lock_time: 0.000203 Rows_sent: 0 Rows_examined: 0\nSET timestamp=1467686975;\nSELECT `shs_user`.`uid`, `shs_user`.`uname`, `shs_user_stat`.`rebate_money`, `shs_user_stat`.`order_num`\nFROM (`shs_user_stat`)\nJOIN `shs_user` ON `shs_user`.`uid`=`shs_user_stat`.`uid`\nWHERE `shs_user`.`is_lock` = 0\nORDER BY `shs_user_stat`.`rebate_money` DESC, `shs_user_stat`.`order_num` DESC\nLIMIT 6;","tags" => [[0] "multiline"],"lock_time" => 0.000203,"rows_sent" => 0,"@timestamp" => 2016-07-05T02:49:35.000Z,"clientip" => "192.168.10.9","@version" => "1","host" => "localhost","action" => "SELECT","user" => "mall","query_time" => 1536.572069}测试:# User@Host: mall[mall] @ [192.168.10.9]\n# Query_time: 1536.572069 Lock_time: 0.000203 Rows_sent: 0 Rows_examined: 0\nSET timestamp=1467686975;\nSELECT `shs_user`.`uid`, `shs_user`.`uname`, `shs_user_stat`.`rebate_money`, `shs_user_stat`.`order_num`\nFROM (`shs_user_stat`)\nJOIN `shs_user` ON `shs_user`.`uid`=`shs_user_stat`.`uid`\nWHERE `shs_user`.`is_lock` = 0\nORDER BY `shs_user_stat`.`rebate_money` DESC, `shs_user_stat`.`order_num` DESC\nLIMIT 6;匹配数据:^#\s+User@Host:\s+(?\w+)\[^\]+\]\s+@\s+\[(?\d+.\d+.\d+.\d+)\].*#\sQuery_time:\s(?\d+.\d+)\s+Lock_time:\s+(?\d+.\d+)\s

{

"user": [

[

"mall"

]

],

"ip": [

[

"192.168.10.9"

]

],

"Query_time": [

[

"1536.572069"

]

],

"lock_time": [

[

"0.000203"

]

]

}

日志分析资源整理:http://www.roncoo.com/course/view/3c0710458fe347c2a0b31135bbbcb57b

相关文章

  • Mysql慢日志采集

    Mysql的慢日志也是日常我们比较关注的一点,用logstash 可以很好的帮助我们完成这一项任务:1、 下面是我...

  • Mysql 慢查询日志

    Mysql 慢查询日志 慢查询日志 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中...

  • MySQL慢查询日志总结

    MySQL慢查询日志总结 慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MyS...

  • MySQL慢查询日志如何开启以及分析

    1、MySQL慢查询日志是什么 (1)MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录MySQL中...

  • 慢查询日志

    1、慢查询日志介绍 慢查询日志是什么? 1.MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在My...

  • mysql-慢查询日志

    1、什么是慢查询日志 mysql慢查询日志是mysql提供的一种日志记录,它用来记录在MySQL中响应时间超过...

  • mysql 开启慢查询及其用mysqldumpslow做日志分析

    mysql 开启慢查询 mysql慢查询日志是mysql提供的一种日志记录,它是用来记录在mysql中相应时间超过...

  • Elastic Stack处理TiDB慢日志

    1 - 我们是怎么处理MySQL慢日志的 我们将MySQL慢日志拆分为两类功能: 每日报表; 实时慢日志流水; 每...

  • mysql调优及常用命令

    mysql常用命令 慢查询日志 mysqlddumpslow(查看慢查询日志) mysql5.7(虚拟列) mys...

  • mysql慢查询

    慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的...

网友评论

      本文标题:Mysql慢日志采集

      本文链接:https://www.haomeiwen.com/subject/hvsewttx.html