首页 > 解决方案 > 仅显示 Java 成功/失败指标的失败计数

问题描述

关于如何在 Grafana 中的 Java 计数器的特定条件下构建视觉效果的快速问题。

目前,我有一小段java代码,很简单。

  private String question(MeterRegistry meterRegistry) {
        if (someCondition()) {
            Counter.builder("theCounter").tags("GOOD", "GOOD").register(meterRegistry).increment();
            return "good";
        } else {
            LOGGER.warn("it is failing, we should increment failure");
            Counter.builder("theCounter").tags("FAIL", "FAIL").register(meterRegistry).increment();
            return "fail";
        }
    }

如您所见,它非常简单,只是一个“如果满足条件,则递增 GOOD 计数器,如果不满足,则递增 FAIL 计数器”

我有兴趣仅为失败构建仪表板。

当我查询我的/prometheus端点时,我成功地看到:

myCounter_total{FAIL="FAIL",} 7.0
myCounter_total{GOOD="GOOD",} 3.0

因此,我开始使用这个查询。

myCounter_total{_ws_="workspace",_ns_="namespace",_source_="source}

不幸的是,这个查询让我看到了一切,好的和失败的。在我的示例中,我看到了所有 10 个计数器,而我只想看到 7 个失败。

我试着把

myCounter_total{FAIL="FAIL",_ws_="workspace",_ns_="namespace",_source_="source}

{{FAIL}}

但没有运气。请问我错过了什么吗?

标签: javaprometheusgrafanaspring-micrometerprometheus-java

解决方案


例如,只为这种情况创建一个计数器并为其指定一个名为status的标签。现在,根据是出现好还是失败条件,用字符串"GOOD""FAIL"作为状态标签的值来增加计数器,例如在这个伪代码中:

Counter myCounter =
    Counter.build().name("myCounter").help("This is my counter").labelNames("status").register();


if (someCondition()) {
    myCounter.labels("GOOD").increment();
} else {
    myCounter.labels("FAIL").increment();
}

现在您应该可以看到这样的查询输出:

myCounter_total{status="FAIL"} 7.0
myCounter_total{status="GOOD"} 3.0

出于可视化目的,如果您想查看两张图表,一张表示好的情况,一张表示坏的情况,您可以使用如下所示的内容。这个查询查询myCounter_total揭示了它的数据,而 Legend 负责分离具有不同状态标签值的值/图。

询问:myCounter_total

传奇:{{status}}


推荐阅读