【发布时间】:2014-10-07 20:23:14
【问题描述】:
我注意到有些人在 grok 匹配谓词中使用第三部分,例如
%{NUMBER:response_status:int}
^--- ??
前 2 的含义很明显,我可以猜测第三部分是结果的显式类型,但我找不到关于第三部分是什么的全面解释。
我在Logstash documentation 和Grok's one 中都进行了检查,但看不到任何综合语法描述的痕迹。
有参考吗?
UPD:
这里有一个例子,它可以工作并且语法正确:
对于配置文件:
input { stdin { } }
filter {
grok {
match => [
"message", "%{NUMBER:a_number:float}"
]
}
}
output { stdout { codec => rubydebug } }
12345 的输出是:
{
"message" => "12345",
"@version" => "1",
"@timestamp" => "2014-10-08T01:08:49.087Z",
"host" => "logstash",
"a_number" => 12345.0
}
如果您删除 :float,则它会更改为
{
"message" => "12345",
"@version" => "1",
"@timestamp" => "2014-10-08T01:09:46.055Z",
"host" => "logstash",
"a_number" => "12345"
}
这至少适用于 logstash v1.4.2
【问题讨论】:
-
你能提供你在哪里看到人们在 grok 中使用 3 部分吗?到目前为止,我从未见过有人在 logstash grok 中使用 3 部分。
-
@BenLim 例如这里gist.githubusercontent.com/poolski/9911628/raw/postfix.grok (只是一个随机结果,不是我使用的那个)。而且它确实会影响结果:匹配结果的类型默认为字符串,并使用给定修饰符更改为整数。
-
grok中的3部分在logstash中无效。您可以参考这里:github.com/elasticsearch/logstash/blob/v1.4.2/patterns/…。所以,我认为logstash不能使用3部分grok。
-
@BenLim:“grok 中的 3 个部分在 logstas 中无效”——这不是真的。查看问题的更新
-
很抱歉。感谢您的提及。
标签: parsing logstash grok logstash-grok