优雅地处理日志存储插件过滤器错误



所以,我正在为 logstash 构建一个插件,我似乎找不到任何关于我应该如何处理抛出和/或拯救的异常的文档。到目前为止,与 grok 类似,我们正在添加一个 event["tag"] = ["_filter_error"] ,但关于堆栈跟踪、错误类型等元数据......这些应该住在哪里,还是应该省略?

这是一个逐案处理的问题,所以诚然很难回答。但我会分享我们最终是如何做到的,这样它可能会帮助某人。

  1. 拯救所有异常(否则 LogStash 将挂起)
  2. 向事件event["tags"] = ["_filter_error"]添加标记,以便以后可以查询这些标记
  3. 忽略堆栈跟踪和错误消息(我们的决定 - 基本上使用标签代替)
  4. 使用单个字段作为我们添加到事件中的代码的元数据。例如,如果我们的过滤器完全爆炸了,请蜜獾它并继续前进。如果我们的过滤器通过过滤失败了 1/2,请向事件添加尽可能多的数据,在步骤 2 中添加标签,然后创建一个元数据字段(即 event["unknown_tags"] = [1,6,7]我们的过滤器在标签 1,6,7 处爆炸但通过了其他所有内容)

最新更新