如何组合字符以在GROK中创建自定义模式

时间:2016-07-27 07:41:38

标签: logstash logstash-grok

我是logstash和grok的新手,对模式有疑问。

  

Jul 26 09:46:37

以上内容包含%{MONTH} %{MONTHDAY} %{TIME}和空格。

我需要知道如何组合所有这些并创建模式%{sample_timestamp}

谢谢!

2 个答案:

答案 0 :(得分:2)

来自Grok Custom Patterns Docs(RTFM)的引言:

  

首先,您可以使用Oniguruma语法进行命名捕获   让你匹配一段文字并将其保存为一个字段:

(?<field_name>the pattern here)
     

...

     

或者,您可以创建自定义模式文件。

     
      
  • 创建一个名为patterns的目录,其中包含一个名为extra的文件(文件名无关紧要,但为自己命名有意义)
  •   
  • 在该文件中,将您需要的模式写为模式名称,空格,然后是该模式的正则表达式。
  •   

因此,您可以创建包含以下行的模式文件:

CUST_DATE %{MONTH} %{MONTHDAY} %{TIME}
  

然后使用此插件中的patterns_dir设置来告诉logstash   自定义模式目录所在的位置。

 filter {
   grok {
     patterns_dir => ["./patterns"]
     match => { "message" => "%{CUST_DATE:datestamp}" }
   }
 }

会导致该字段:

 datestamp => "Jul 26 09:46:37"

答案 1 :(得分:0)

过滤器

使用 pattern_definitions 定义模式

filter {
  grok {
    pattern_definitions => { "MY_DATE" => "%{MONTH} %{MONTHDAY} %{TIME}" }
    match => { "message" => "%{MY_DATE:timestamp}" }
  }
}

结果

{
  "timestamp": "Jul 26 09:46:37"
}

使用Logstash 6.5测试