【问题标题】:Kibana + Logstash + Elastic group exceptions by stacktrace堆栈跟踪的 Kibana + Logstash + 弹性组异常
【发布时间】:2015-10-22 23:41:10
【问题描述】:

现在我已经安装了 logstashed,我可以在 Kibana 中看到所有 [ERROR] 消息和堆栈跟踪。

但是,我想通过堆栈跟踪对我的异常进行分组,以便仅查看唯一的异常。例如,我有 2 个从不同类/代码行抛出的不同 NullPointerException 和 1 个 IllegalArgumentException。这种异常在日志中重复多次,我可以在 Kibana 中看到所有发生的情况。

我想看的,类似这样的东西

  1. NullPointerException + 跟踪 - thwwn 78 次。
  2. 另一个 NullPointerException + 跟踪 - 抛出 112 次。
  3. IllegalArgumentException + 跟踪 - 抛出 991 次。

这就是 fabric.io 处理移动崩溃/问题的方式。有可能做类似的事情吗?

【问题讨论】:

  • 如果您有一个要聚合的字段(示例中的异常名称和跟踪),您可以使用“数据表”可视化来显示每个字段的计数。
  • 我不知道“未来”的堆栈跟踪或异常名称。我只想看看“独特”的例外。计数是可选的
  • 如果您可以将其解析为一个字段(例如使用 logstash 的 grok{}),您可以在上面提到的可视化中显示具有聚合的唯一字段。
  • @Anton 你找到解决方案了吗?如果是这样,请回答您自己的问题或接受以下问题,如果该问题有效。

标签: elasticsearch logstash kibana


【解决方案1】:

我们这样做的方法是在包含堆栈跟踪的字段上使用术语查询设置数据表可视化。但是请注意,汇总字段的 .raw 版本,否则您将看到堆栈跟踪的分析(例如拆分)版本,这不是您想要的。

我遇到的第二个问题是用于术语过滤器的文本的最大大小(不幸的是,我找不到相应的文档)。任何大于该值的内容都会从聚合中简单地省略。我通过创建一个包含堆栈跟踪的前 200 个字符的附加字段来解决这个问题,然后我用它来聚合。

    grok {
        match => [ "exceptionTxt","(?<exceptionTxtShort>^.{0,200})"]
    }

它并不完美,但它对我们有用。如果有人知道文档的链接和/或如何正确解决此限制,请发表评论。

【讨论】:

  • 您不会冒险遗漏重要的堆栈跟踪信息吗? 200 个字符对于堆栈跟踪来说并不算多。即使它们具有前 200 个字符,下一个字符也很容易不同,因此您的“计数”可能不会计算相同的异常。
  • @badaboomskey 你当然是对的。这只是一个 hack / 解决方法,因为我不知道如何正确设置术语过滤器的最大长度。
  • 很抱歉,我强烈不听从您的建议。我知道这是从 2015 年开始的(因此今天很容易批评..),但今天这不是这样做的方法。另外 - 我不知道 2015 年是否有可能(我没有使用 Grafana 很长时间) - 今天你只需使用 .keyword 来获取每个异常的概述并使用 fx exception.stacktrace 来获取跟踪显示(没有切断它)。如果它应该切断并且不显示堆栈跟踪长度超过 fx 200 个字符的 fx 异常,则配置/设置“ignore_above”参数。不要切断堆栈跟踪;)
猜你喜欢
  • 2011-01-05
  • 2017-08-06
  • 2010-09-13
  • 1970-01-01
  • 2018-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多