【问题标题】:Custom counter using prometheus not visible on /actuator/prometheus使用 prometheus 的自定义计数器在 /actuator/prometheus 上不可见
【发布时间】:2020-02-08 19:19:14
【问题描述】:

我正在尝试在我的 spring-boot 应用程序中添加自定义指标。我查看了许多示例,但仍然无法添加自定义计数器。

application.properties

management.endpoint.metrics.enabled=true
management.endpoints.web.exposure.include=*
management.endpoint.prometheus.enabled=true
management.metrics.export.prometheus.enabled=true

代码

static final Counter requests = 
Counter.build().namespace("java").name("requests_total").help("Total requests.")
.register();

@CrossOrigin
@GetMapping("/test")
public int processRequest() {
    requests.inc();
    return (int) requests.get();
}

当我访问 API 时,我可以看到计数器值在增加。问题是我在 http://localhost:8080/actuator/prometheus 和 prometheus :9090 页面上找不到我新创建的指标。所以我认为计数器没有注册(??)。我在这里错过了什么?

【问题讨论】:

    标签: java spring-boot prometheus metrics spring-boot-actuator


    【解决方案1】:

    看起来您正在直接使用 Prometheus Java API。您创建的 Counter 已在 Prometheus Java API 的默认 CollectorRegistry 中注册,但未在 Micrometer 中注册,因为它正在实例化自己的 CollectorRegistry,因此您的 Counter 未显示在那里。

    您应该使用 Micrometer Counter API,而不是直接使用 Prometheus Java API。这还有一个额外的好处,即您可以在完全不更改检测代码的情况下更换监控后端。

    此外,您似乎想测量 HTTP 请求。这些通常是自动计时的。在您的 /actuator/prometheus 端点中查找名为 http_server_requests_seconds_[count,sum,max] 的度量标准系列。

    【讨论】:

      【解决方案2】:

      你可以做这样的事情。 Spring 会自动找到收集器注册表并连接它。

      @Component
      public class CustomeCounter {
      
      Counter mycounter;
      
      public CustomCounter(CollectorRegistry registry) {
       mycounter = Counter.build().name("test").help("test").register(registry);
      }
      
      public void incrementCounter() {
       mycounter.inc();
      }
      }
      
      
      @Component
      public class Test{
      
      @Resource
      private CustomCounter customCounter;
      
      public void testInc() {
      customCounter.incrementCounter();
      }
      }
      

      【讨论】:

        猜你喜欢
        • 2018-10-28
        • 2021-04-23
        • 2018-08-11
        • 1970-01-01
        • 1970-01-01
        • 2021-03-29
        • 2019-03-28
        • 2019-08-11
        • 1970-01-01
        相关资源
        最近更新 更多