【发布时间】:2020-04-26 20:59:28
【问题描述】:
我正在尝试解析以下类型的日志消息:
111.22.333.444 - - [08/Jan/2020:11:50:15 +0100] [https://awdasfe.asfeaf.cas:111] "POST /VFQ3P/asfiheasfhe/v2/safiehjafe/check HTTP/1.1" 204 0 "-" "-" (rt=0.555 urt=0.555 uct=0.122 uht=0.11)
我的 logstash 配置文件:
beats {
port => 5044
}
}
filter {
grok { match => { "message" => "%{IPORHOST:clientip} %{HTTPDUSER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] \[%{NOTSPACE:referrer}\] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-)" } }
geoip { source => "clientip" }
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "my_index5"
}
}
我使用的模式几乎与 github 模式库中的 COMMONAPACHELOG 相同。当我将代码通过 Kibana 中的 grok 调试器放置时,它以我想要的方式工作,但是当我尝试在机器 logstash 上执行它时,我会抛出一个错误,即在 "(?:%{WORD:verb} 部分和当我在那里添加 \ 时仍然存在问题。
有人对解决问题有什么建议吗?
提前致谢!
【问题讨论】:
-
尝试双重转义,
\\[,不要转义]。 -
我尝试了以下方法:\\"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest })"\\ 并且它不起作用。我也尝试删除引号,但它将整个部分合并在一起。我真的不明白你的评论是什么意思
-
不要双转义引号,你需要双转义
[。 -
对不起,我不明白你的意思。你能把它应用到一些样本上吗...?
标签: pattern-matching logstash elastic-stack logstash-grok