当前位置: 首页 > 知识库问答 >
问题:

千分尺相当于普罗米修斯的标签

邹玄裳
2023-03-14

我正在将Spring Boot应用程序从Spring Boot 1(使用Prometheus Simpleclient)转换为Spring Boot 2(使用微米)。

我很难将我们在《春靴1》和《普罗米修斯》中的标签转换为千分尺的概念。例如(普罗米修斯):

private static Counter requestCounter =
  Counter.build()
      .name("sent_requests_total")
      .labelNames("method", "path")
      .help("Total number of rest requests sent")
      .register();
...
requestCounter.labels(request.getMethod().name(), path).inc();

Micrometer的标签似乎与Prometheus的标签有些不同:所有的值都必须预先声明,不仅仅是键。

可以将普罗米修斯的标签与Spring(Boot)和千分尺一起使用吗?

共有2个答案

颜经艺
2023-03-14

我知道这个话题有点过时,但仍然。我想用Spring Boot Acuator解决这个问题,使用PrometheusMeterRegistry获取CollectorRegistry

@Service
public class SomethingService {

    private final PrometheusMeterRegistry prometheusMeterRegistry;
    private final Counter counter;

    public SomethingService(PrometheusMeterRegistry prometheusMeterRegistry) {
        this.prometheusMeterRegistry = prometheusMeterRegistry;
        counter = Counter.build()
                .name("counter_name")
                .help("counter help")
                .labelNames("your_labels")
                .register(prometheusMeterRegistry.getPrometheusRegistry());
    }

    @PostConstruct
    private void init() {
        inc("your_value");
    }

    private void inc(String value) {
       counter.labels(String.valueOf(value)).inc();
    }
}
商勇
2023-03-14

进一步的挖掘表明,只有测微计标签的键必须预先声明-但构造器实际上需要成对的键/值;价值观并不重要。并且在使用度量时必须指定密钥。

这是有效的:

private static final String COUNTER_BATCHMANAGER_SENT_REQUESTS = "batchmanager.sent.requests";
private static final String METHOD_TAG = "method";
private static final String PATH_TAG = "path";
private final Counter requestCounter;
...
requestCounter = Counter.builder(COUNTER_BATCHMANAGER_SENT_REQUESTS)
    .description("Total number of rest requests sent")
    .tags(METHOD_TAG, "", PATH_TAG, "")
    .register(meterRegistry);
...
 Metrics.counter(COUNTER_BATCHMANAGER_SENT_REQUESTS, METHOD_TAG, methodName, PATH_TAG, path)
    .increment();
 类似资料:
  • 我试图在Spring Boot 2.0.0 .版本中使用Micrometer.io生成普罗米修斯指标 当我试图将列表的大小公开为Gauge时,它一直显示NaN。在留档中,它说; 你有责任对你用量规测量的状态对象保持强烈的引用。 我已经尝试了一些不同的方法,但我不能解决这个问题。这是我的代码和一些试验。 有人能帮忙解决这个问题吗?任何帮助都将不胜感激。

  • 响应于“/acturet/prometheus”的DistributionSummary可用的度量仅是度量的Sum、Max和Count。 我想显示在选定的时间量内API调用所用的平均时间。用于EX:API在过去5分钟内所用的平均时间。

  • 我已经在一个千分尺计的方法中检测了我的代码,如下所示: 我还添加了一些其他指标。 其他指标显示在普罗米修斯endpoint上,但此指标指标不会。 我错过了什么?

  • 我可以在http://localhost:8080/hello/q/metrics看到这个指标。现在我想把这个度量标准推到普罗米修斯,但我还没有找到任何指南,说明如何在普罗米修斯注册/集成这些度量标准。理想情况下,我想把它们推到石墨上,但这不受支持。所以我想知道如何推动这些指标,这样我就可以在格拉法纳可视化它们。

  • 根据Micrometer的文档https://Micrometer.io/docs/concepts#_server_side,框架(Micrometer)应该处理将计时器度量从绝对量转换为速率 下面的代码模拟一个伪定时器: 然而,在Prometheus中,我只看到单调增加的度量和而不是将它们视为速率 也许我误解了或者忽略了文档中的某些内容?

  • 我要监控的应用程序为健康检查提供了一个apiendpoint,该endpoint使用json中的指标进行响应。例如: 我已经设置了Prometheus blackbox\u exporter,以监视此endpoint是否返回200 Ok,但理想情况下,我也希望获得这些指标。我知道instrumentation直接从应用程序导出这些数据。但是,由于应用程序已经在导出json对象中我想要的内容,我更希