Logstash 无法正确处理 MySQL 日志

Logstash 无法正确处理 MySQL 日志

可以看到,该消息不仅仅是消息,还包含日期和时间戳。

有效的 XHTML有效的 XHTML

这是 MySQL 日志:/var/log/mysql/error.log

150630  9:01:29 [Warning] Access denied for user 'test1'@'localhost' (using password: YES)
150630  9:03:39 [Warning] Access denied for user 'test3'@'localhost' (using password: YES)
150630  9:07:48 [Warning] Access denied for user 'test5'@'localhost' (using password: YES)
150630  9:10:00 [Warning] Access denied for user 'test7'@'localhost' (using password: YES)
150630  9:12:21 [Warning] Access denied for user 'test9'@'localhost' (using password: YES)

这是 Logstash-shipper 配置:/etc/logstash/shipper/conf.d/20-filter.conf

else if [type] == "mysql" {
  grok {
    patterns_dir => "/etc/logstash/patterns"
    match => [ "message", "%{MYSQLLOG}" ]
    overwrite => [ "message" ]
  }
}

模式如下:

MYSQLLOG %{NUMBER:date} %{TIME:time} \[%{LOGLEVEL:loglevel}\] %{GREEDYDATA:message}

我已经尝试修复这个问题好几个星期了,实际上我曾经让它工作过,但如果我没有干预,它又停止工作了。有什么关于调试的技巧吗?

答案1

看起来您的日志条目在datetime字段之间有一个多余的空格,所以您的 grok 不匹配,_grokparsefailure标签的存在证明了这一点。

尝试一下这个模式:

%{NUMBER:date}  %{TIME:time} \[%{LOGLEVEL:loglevel}] %{GREEDYDATA:message}

我已经在Grok 构造函数并且它与您提供的所有行相匹配。

相关内容