仅显示 Java 成功/失败指标的失败计数

Posted

技术标签:

【中文标题】仅显示 Java 成功/失败指标的失败计数【英文标题】:Display only a count of failures for Java success/fail metrics 【发布时间】:2021-09-15 15:36:41 【问题描述】:

关于如何在 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_totalFAIL="FAIL", 7.0
myCounter_totalGOOD="GOOD", 3.0

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

myCounter_total_ws_="workspace",_ns_="namespace",_source_="source

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

我试过了

myCounter_totalFAIL="FAIL",_ws_="workspace",_ns_="namespace",_source_="source

FAIL

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

【问题讨论】:

【参考方案1】:

只为这种情况创建一个计数器,并给它一个名为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_totalstatus="FAIL" 7.0
myCounter_totalstatus="GOOD" 3.0

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

查询:myCounter_total

图例:status

【讨论】:

感谢您的回答!我目前正在使用来自io.micrometer.core.instrument.CounterCounter 来自micrometer-core-1.7.1.jar。它与您的样本略有不同。没有使用.labelNames("status").labels("GOOD")

以上是关于仅显示 Java 成功/失败指标的失败计数的主要内容,如果未能解决你的问题,请参考以下文章

使用 shell 脚本从文件中测试其余 web 服务时如何获取成功计数、失败计数和失败原因

从文件中解析普罗米修斯指标并更新计数器

GCP MQL:根据 3 个指标计算比率

根据某字段分组,获取当前数据成功或失败各自的统计数

在 Woocommerce 订单管理列表中显示用户失败并取消订单计数

当事件计数为 0 时,Firebase 受众中没有用户