我的日志文件包含几行不同的结构,我不能理解它,我不知道我们是否可以按行或属性进行测试,我还是初学者。 如果你不了解我,我可以给你一些例子:
输入:
id=firewall action=bloc type=web
id=firewall fw="ER" type=filter
id=firewall fw="Az" tz="loo" action=bloc
模式:
id=%{WORD:id} ...
我想在()之间添加一些模式? 但我不知道该怎么做。 您可以使用此网站对其进行测试http://grokdebug.herokuapp.com/
请帮忙吗?我该怎么办:(
答案 0 :(得分:1)
Logstash支持键值,请查看http://logstash.net/docs/1.4.2/filters/kv。
或者您可以使用多个匹配值:
grok {
patterns_dir => "./patterns"
match => [
"message", "%{BASE_PATTERN} %{EXTRA_PATTERN}",
"message", "%{BASE_PATTERN}",
"message", "%{SOME_OTHER_PATTERN}"
]
}
答案 1 :(得分:0)
不确定我是否理解你的问题,但我会尽力回答。我认为您要做的第一件事就是从您的输入中解析不同的字段。解析第一行输入的模式示例:
PATTERN %{NOTSPACE} %{NOTSPACE} %{NOTSPACE}
(在$ LOGSTASH_HOME / pattern / extra中)
然后在您的logstash配置文件中:
filter {
grok {
patterns_dir => "$LOGSTASH_HOME/pattern"
match => [ "message" => "%{PATTERN}" ]
}
}
这会将您的第一行与3个字段("id=firewall" "action=bloc" "type=web"
)匹配(如果您有超过3个字段,则必须对其进行调整)。
你似乎要寻找的最后一件事是分割字段(在键值方案中),如id=firewall
将成为id => "firewall"
。这可以使用kv插件完成。我从未使用它,但我建议你使用logstash docs here
如果我不理解你的问题,请更清楚。