elasticsearch 基巴纳+;Logstash&x2B;stacktrace的弹性组异常,elasticsearch,logstash,kibana,elasticsearch,Logstash,Kibana" /> elasticsearch 基巴纳+;Logstash&x2B;stacktrace的弹性组异常,elasticsearch,logstash,kibana,elasticsearch,Logstash,Kibana" />

elasticsearch 基巴纳+;Logstash&x2B;stacktrace的弹性组异常

elasticsearch 基巴纳+;Logstash&x2B;stacktrace的弹性组异常,elasticsearch,logstash,kibana,elasticsearch,Logstash,Kibana,现在我已经安装了logstashed,我可以在Kibana中看到所有[ERROR]消息和stacktraces 但是,我希望通过stacktraces对异常进行分组,以仅查看唯一的异常。例如,我有两个不同的NullPointerException,它们来自不同的类/代码行,还有一个IllegalArgumentException。这个异常在日志中重复多次,我可以在Kibana中看到所有发生的情况 我想看到的是,类似的东西 NullPointerException+trace-thwwn 78次

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

但是,我希望通过stacktraces对异常进行分组,以仅查看唯一的异常。例如,我有两个不同的NullPointerException,它们来自不同的类/代码行,还有一个IllegalArgumentException。这个异常在日志中重复多次,我可以在Kibana中看到所有发生的情况

我想看到的是,类似的东西

  • NullPointerException+trace-thwwn 78次
  • 另一个NullPointerException+跟踪-抛出112次
  • IllegalArgumentException+跟踪-抛出991次

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

    我们这样做的方式是在包含stacktrace的字段上设置一个带有术语查询的数据表可视化。但是,请注意在字段的.raw版本上进行聚合,否则您将看到stacktraces的分析(例如拆分)版本,这不是您想要的

    我遇到的第二个问题是,用于术语过滤器的文本有一个最大大小(不幸的是,我找不到用于此的文档)。大于此值的任何值都将从聚合中忽略。我通过创建一个包含stacktrace的前200个字符的附加字段来解决这个问题,然后使用该字段进行聚合

        grok {
            match => [ "exceptionTxt","(?<exceptionTxtShort>^.{0,200})"]
        }
    
    grok{
    匹配=>[“ExceptionText”,“(?^.{0200})”]
    }
    

    这并不完美,但它确实为我们带来了好处。如果有人知道指向文档的链接和/或如何正确绕过此限制,请发表评论。

    如果您有一个要聚合的字段(示例中的异常名称和跟踪),您可以使用“数据表”可视化显示每个字段的计数。我不知道“未来”堆栈跟踪或异常名称。我只想看到“独特”的例外。计数是可选的。如果您可以将其解析为一个字段(如logstash的grok{}),您可以在上面提到的可视化中显示具有聚合的唯一字段。@Anton您找到解决方案了吗?如果是这样的话,请回答您自己的问题,或者接受下面的问题(如果该问题有效的话)。您是否有可能遗漏重要的堆栈跟踪信息?200个字符对于堆栈跟踪来说并不算多。。即使它们有前200个字符,下一个字符也很容易不同,因此您的“计数”可能不会计算相同的异常。@badaboomskey当然您是对的。这只是一个破解/解决方法,因为我不知道如何正确设置术语过滤器的最大长度。很抱歉,我强烈不同意您的建议。我知道这是从2015年开始的(因此,今天很容易批评…),但今天这不是做这件事的方式。另外-我不知道在2015年是否有这种可能性(我已经很久没有使用Grafana了)-今天,您只需使用.keyword来获得每个异常的概述,并使用fx exception.stacktrace来显示跟踪(而不是将其切断)。如果它应切断并不显示stacktraces长度超过fx 200个字符的fx异常,则应配置/设置“忽略以上”参数。不要切断堆栈跟踪;)