use*_*386 5 logstash logstash-grok
我正在尝试为我的日志文件编写grok模式,该日志文件有三种不同类型的日志,我想在类型名称(TYPE1,TYPE2,TYPE3)上放置一个过滤器,然后为这一个日志文件写入三种不同的grok模式.此外,我的日志文件是一个csv分隔文件.
日志文件:
TYPE1,word,word,word,num
TYPE2,word,word,word,word
TYPE3,num,word,num,word
这是我到目前为止所尝试的:
filter {
if [message] =~ /TYPE1/ {
grok {
match => [ "message", "%{WORD:type},%{WORD:a1"},%{WORD:a2"},%{WORD:a3"},%{POSINT:a4"}]
}
}
}
Run Code Online (Sandbox Code Playgroud)
这不起作用.另外,在这个配置文件中,我为其他文件(运行良好)编写了grok模式,如:
filter {
if [type] == "sometype1" or [type] == "sometype2" {
grok {
match => [ "message", "%{POSINT:moduleid}%{SPACE}%{NUMBER:date}"]
}
}
}
Run Code Online (Sandbox Code Playgroud)
并且给我问题的日志文件有type = sometype3,我没有在任何地方提到过.
谢谢
我认为你不需要条件来做到这一点。如果您有静态TYPE值("TYPE1"、"TYPE2"或"TYPE3"),那么为什么不为每个TYPE指定一个 grok 模式:
filter {
grok {
match => { "message" => [
"TYPE1,%{WORD:a1},%{WORD:a2},%{WORD:a3},%{POSINT:a4}",
"TYPE2,%{WORD:b1},%{WORD:b2},%{WORD:b3},%{WORD:b4}",
"TYPE3,%{POSINT:c1},%{WORD:c2},%{POSINT:c3},%{WORD:c4}" ]
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试过了,它适用于您给定的格式:
TYPE1,word,word,word,num
TYPE2,word,word,word,word
TYPE3,num,word,num,word
Run Code Online (Sandbox Code Playgroud)
日志文件如下所示:
TYPE1,a,b,c,4
TYPE2,a,b,c,d
TYPE3,1,b,3,d
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19722 次 |
| 最近记录: |