我注意到有些人在神交匹配谓语用第三部分,像grok match模式的最后一部分是什么?
%{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
}
如果你rem奥雅纳:float
然后变为
{
"message" => "12345",
"@version" => "1",
"@timestamp" => "2014-10-08T01:09:46.055Z",
"host" => "logstash",
"a_number" => "12345"
}
这是真实的,至少logstash 5.0上
你能提供你在哪里看到人们在grok中使用3部分?到目前为止,我从来没有看到任何人在logstash grok中使用3部分。 – 2014-10-08 00:12:34
@BenLim例如这里https://gist.githubusercontent.com/poolski/9911628/raw/postfix.grok(只是一个随机的结果,而不是我使用的)。它确实影响结果:默认情况下,匹配结果的类型是一个字符串,并使用给定的修饰符更改为整数。 – zerkms 2014-10-08 00:14:10
grok中的3个部分在logstash中无效。你可以参考这里:https://github.com/elasticsearch/logstash/blob/v1.4.2/patterns/grok-patterns。所以,我认为logstash不能使用3部分grok。 – 2014-10-08 01:04:47