我想知道是否可以在不使用外部模式文件的情况下使用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}"]
}
}
但它不起作用。
答案 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}”}