所以,我正在为 logstash 构建一个插件,我似乎找不到任何关于我应该如何处理抛出和/或拯救的异常的文档。到目前为止,与 grok 类似,我们正在添加一个 event["tag"] = ["_filter_error"]
,但关于堆栈跟踪、错误类型等元数据......这些应该住在哪里,还是应该省略?
这是一个逐案处理的问题,所以诚然很难回答。但我会分享我们最终是如何做到的,这样它可能会帮助某人。
- 拯救所有异常(否则 LogStash 将挂起)
- 向事件
event["tags"] = ["_filter_error"]
添加标记,以便以后可以查询这些标记 - 忽略堆栈跟踪和错误消息(我们的决定 - 基本上使用标签代替)
- 使用单个字段作为我们添加到事件中的代码的元数据。例如,如果我们的过滤器完全爆炸了,请蜜獾它并继续前进。如果我们的过滤器通过过滤失败了 1/2,请向事件添加尽可能多的数据,在步骤 2 中添加标签,然后创建一个元数据字段(即
event["unknown_tags"] = [1,6,7]
我们的过滤器在标签 1,6,7 处爆炸但通过了其他所有内容)