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

我为将Spring Boot 1和Prometheus的标签转换为Micrometer中的概念而感到困惑。例如(与普罗米修斯一起):

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的标签有所不同:必须预先声明所有值,而不仅是键。

能否将Prometheus的标签与弹簧(引导)和千分尺一起使用?

最佳答案

进一步的挖掘表明,只有千分尺标记的才必须预先声明-但是构造函数实际上需要成对的键/值。值无关紧要。并且在使用度量标准时必须指定键。

这有效:

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();

08-26 02:02