处理Logstash插件优雅地过滤错误

时间:2016-03-03 20:26:10

标签: exception logstash elastic-stack

所以,我正在为logstash构建一个插件,我似乎找不到任何关于如何处理抛出和/或获救的异常的文档。到目前为止,和grok类似,我们正在添加一个var op = new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary); op = op.WithAssemblyIdentityComparer(DesktopAssemblyIdentityComparer.Default); CSharpCompilation compilation = CSharpCompilation.Create( assemblyName, syntaxTrees: new[] { syntaxTree }, references: references, options: op); ,但是关于像堆栈跟踪,错误类型等元数据......应该在哪里生存,还是应该省略?

1 个答案:

答案 0 :(得分:0)

这是一个逐案的问题,所以很难回答。但我会分享我们最终如何做到这一点,这可能对某人有帮助。

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