在springboot的管理端口使用prometheus metrics servlet

时间:2016-01-17 10:29:05

标签: java spring-boot prometheus

我正在使用prometheus metric servlet来公开我的指标,使用java客户端api prometheus供应。

我注册servlet的方式与注册任何servelt相同,见下文:

 @Bean
public ServletRegistrationBean registerPrometheusExporterServlet(CollectorRegistry metricRegistry) {
    return new ServletRegistrationBean(new MetricsServlet(metricRegistry), "/metrics");
}

但是,我想将此servlet添加到管理端口,或者prometheus版本是否可能替换springboot的默认/ metrics服务。 可以这样做吗?怎么样?

谢谢, 丹妮拉

1 个答案:

答案 0 :(得分:5)

我不知道您是否能够将Spring Boot与Prometheus集成,但现在Prometheus client-java官方项目中有一个专用连接器。

项目的Github页面如下:simpleclient_spring_boot

您可以使用它向您添加以下依赖关系pom.xml

<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>simpleclient_spring_boot</artifactId>
    <version>0.0.17</version>
</dependency>

要使用它,请将Spring Boot配置添加到项目中,如下所示。

@Configuration
public class MetricsConfiguration {

    @Bean
    public ServletRegistrationBean servletRegistrationBean() {
        DefaultExports.initialize();
        return new ServletRegistrationBean(new MetricsServlet(), "/prometheus");
    }

    @Bean
    public SpringBootMetricsCollector springBootMetricsCollector(Collection<PublicMetrics> publicMetrics) {
        SpringBootMetricsCollector springBootMetricsCollector = new SpringBootMetricsCollector(
            publicMetrics);
        springBootMetricsCollector.register();
        return springBootMetricsCollector;
    }
}

现在,Spring Boot Actuator公开的指标将作为Prometheus计数器和仪表提供。

信息发布到应用程序的路径/prometheus。然后,您必须使用如下配置指示Prometheus使用此信息。

# my global config
global:
  scrape_interval:     15s # By default, scrape targets every 15 seconds.
  evaluation_interval: 15s # By default, scrape targets every 15 seconds.

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
- job_name: 'your-application-name'

  scrape_interval: 5s

  metrics_path: '/prometheus'

  static_configs:
    - targets: ['localhost:8080']

如果您将浏览器指向/metrics,您将继续看到Spring Boot格式的信息。但是,将浏览器指向http://localhost:9090/graph,您将直接在Prometheus查询浏览器中查询此类信息。

还要看一下this Github pull-request。

<强>更新
simpleclient_spring_boot的下一个版本0.0.18中,将注释@EnablePrometheusEndpoint添加到Spring Boot的配置类到自动配置Prometheus适配器就足够了(看看这个test)!

希望它有所帮助。