再会,
(使用 logstash 1.4.2)
我正在尝试做类似的事情:
filter {
if type == "feed" {
grok {
match => [ "message", "%{COMBINEDAPACHELOGS}" ]
add_tag => [ "grokked", "web" ]
tag_on_failure => [ "notweb" ]
}
}
if type == "feed" and "notweb" in [tags] {
grok {
patterns_dir => "/opt/logstash/patterns"
match => [ "message", "%{ERROPARSING}" ]
add_tag => [ "grokked", "%{[level]}" ] # %{level} named from ERRORPARSING
}
}
}
但是所有的 notweb 内容都以 _grokparsefailure 结束,就好像下一步没有经过测试/评估一样。
%{ERRORPARSING} 在 grokdebugger 中测试正确。
答案1
不确定这是否是原因,但无论如何有一个建议,如下:
if type == "feed" and "notweb" in [tags] {
可能不是完全必要的,除非你用 notweb 标记多个不同的东西,在这种情况下你可以更改标签:
if "notweb" in [tags] {
此外,某些东西在 grokdebugger 中可以工作,并不一定意味着它在 logstash 中也能工作,它们之间存在一些差异,如果我的第一个建议没有帮助,请粘贴您的模式