我应该总是尽量避免 grok 解析错误吗?

should i always try to avoid grok parse errors?

我的日志中有一个字段,我将其匹配为 IP 地址,如下所示:

grok {
  match => [ "field1", "(?:(?<field2>%{IP})|(%{IP}),\+)"]
}

有时这个 field1 是空白的,所以 field2 永远不会在文档中创建。

这很好,因为我不希望添加此字段,除非它是有效的 IP 地址。

但是当发生这种情况时,文档会被标记为 _grokparsefailure。这很糟糕吗?这是否意味着我做错了什么,我应该避免 _grokparsefailures。

全部 _grokparsefailure 是维护者的面包屑,表示某些 grok 规则可能需要更新。就性能而言,它对于像那个一样短的规则没有任何意义。如果你真的不关心 grok 语句中的未命中,你可以告诉它以其他方式标记它 (tag_on_failure => ["something"])。