2014-10-07 20 views
0

我注意到有些人在神交匹配谓语用第三部分,像grok match模式的最后一部分是什么?

%{NUMBER:response_status:int} 
          ^--- ?? 

很明显什么第一2的意思,我可以猜测,第三一个是一个明确的结果的类型,但我无法找到第三部分内容的全面解释。

我检查了Logstash documentationGrok'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上

+0

你能提供你在哪里看到人们在grok中使用3部分?到目前为止,我从来没有看到任何人在logstash grok中使用3部分。 – 2014-10-08 00:12:34

+0

@BenLim例如这里https://gist.githubusercontent.com/poolski/9911628/raw/postfix.grok(只是一个随机的结果,而不是我使用的)。它确实影响结果:默认情况下,匹配结果的类型是一个字符串,并使用给定的修饰符更改为整数。 – zerkms 2014-10-08 00:14:10

+0

grok中的3个部分在logstash中无效。你可以参考这里:https://github.com/elasticsearch/logstash/blob/v1.4.2/patterns/grok-patterns。所以,我认为logstash不能使用3部分grok。 – 2014-10-08 01:04:47

回答

0

我不够细心,答案是http://logstash.net/docs/1.4.2/filters/grok页:

您也可以选择将数据类型转换添加到您的Grok模式。默认情况下,所有的语义都保存为字符串。如果您希望转换语义的数据类型,例如将字符串更改为整数,则将其后缀为目标数据类型。例如%{NUMBER:num:int}将'num'语义从一个字符串转换为一个整数。目前唯一支持的转换是int和float。

相关问题