没有模式文件的Grok logstash消息

时间:2014-07-15 15:27:11

标签: design-patterns logstash

我想知道是否可以在不使用外部模式文件的情况下使用logstash来记录消息,并直接在我的配置中编写我的模式:

例如,现在它的工作原理如下:

input { 
     stdin{     
    }   
}
filter {
    grok {
        patterns_dir => "./patterns"
        match => ["message","%{PATTERNFILE:test}"]
    }
}

output {
    stdout {codec => rubydebug}

}

我在一个模式文件夹中有一个文件,其中包含以下内容:

PATTERNFILE .*

但是我想直接在过滤器中写出我的模式:

filter {
    grok {
        patterns_dir => "./patterns"
        match => ["message","%{.*:test}"]
    }
}

但它不起作用。

3 个答案:

答案 0 :(得分:8)

要在配置文件中直接写入模式而不使用外部模式文件,解决方案是:

filter {grok{ match => ["message", "(?<test>.*)"]}}

该方法在http://logstash.net/docs/1.4.2/filters/grok部分&#34;自定义模式#34;

中描述

答案 1 :(得分:1)

要使用 patterns_dir ,您应使用完整路径 /etc/logstash/conf.d/patterns/dns_domain ,例如:

  grok {
    patterns_dir => "/etc/logstash/conf.d/patterns/dns_domain"
    match => { "Unparsed DNS Domain" => "%{BRACKETS:b1}%{META_INF:m1}" }
  }

dns_domain 文件包含自定义模式的位置。例如:

  BRACKETS \(\d+\)
  META_INF [0-9A-Za-z\s\-_]+
  ~                                                                                                                                                                                                    
  ~ 

答案 2 :(得分:0)

match =&gt; {“message”=&gt; “%{PATTERNFILE}”}