【发布时间】:2018-02-17 23:12:02
【问题描述】:
我需要为bind9 DNS 日志编写一个 grok 过滤器。示例日志如下所示:
17-Feb-2018 23:06:56.326 queries: info: client @0x563d72c3ea20 172.26.0.1#34564 (test.example.com): query: test.example.com IN A +E(0)K (172.26.0.3)
我在grokconstructor 上验证了以下模式,它成功匹配了上面的日志:
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:logdate} queries: info: client @0x.{16} %{IP:source_ip}#(?<source_port>[0-9]+) \(%{HOSTNAME:query}\): query: .*$" }
}
date {
match => ["logdate", "dd-MMM-yyyy HH:mm:ss.SSS"]
}
}
但是在 Kibana 上,我的日志被标记为 _grokparsefailure 并且未被解析。
【问题讨论】:
-
我不明白你的模式是如何被验证的。
TIMESTAMP_ISO8601无法匹配17-Feb-2018,因为它使用的是%{MONTHNUM},这与二月不匹配。有关完整模式,请参阅 github.com/logstash-plugins/logstash-patterns-core/blob/master/…。我认为您必须创建一个自定义模式。
标签: logstash logstash-grok bind9