在 Spring Boot 和 Prometheus 中监控自定义指标

Monitor custom metrics in Spring Boot and Prometheus

我想发送一些指标,比如ResponseTime、RequestCount等到Prometheus,然后在Grafana上定义一个dashboard。我知道我必须在我们的 class 中自动装配 PrometheusMeterRegistry 并使用它,如下所示:

@Autowired
private PrometheusMeterRegistry registry;

public void addSuccess(){
    registry.counter("RequestCountMetric", "success").increment()
}

现在,我不知道如何在 Spring 启动应用程序中设置 Prometheus ip/port。

Prometheus 使用 pull/scrape 模型,这意味着 Spring 引导应用程序将指标发送到监控系统,例如通过 UDP 使用 statsD , Prometheus 将调用应用程序公开的端点来提取指标。

prometheus 添加到 application.properties 中暴露的执行器端点以打开端点 /actuator/prometheus:

management.endpoints.web.exposure.include=prometheus

因此,您实际上需要配置您的 Prometheus 实例,使其可以找到 Spring 启动应用程序。

这是指向本地 Spring 引导应用程序的 Prometheus 配置示例:

global:
  scrape_interval:     15s
  evaluation_interval: 15s

  - job_name: 'my-application to scrape'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:8080']

最后一步是将您的 Grafana 指向您的 Prometheus,这可以在 Grafana UI 中轻松完成并添加 Prometheus 数据源。