使用Prometheus监控Java Web应用程序

时间:2017-10-19 06:25:16

标签: java monitoring prometheus

我在Tomcat上运行了一个简单的java Web应用程序,我希望使用Prometheus进行监控。 我使用the official client在我的java应用程序中添加了一些计数器和仪表,我在另一台服务器上安装了Prometheus而不想使用Prometheus从我的Java应用程序中提取指标。

普罗米修斯得到tons of exporters,但我不清楚哪一个适合我的用例。 我考虑使用Prometheus push gateway,但根据documentation,Pushgateway唯一有效的用例是捕获服务级批处理作业的结果,这不是我的情况。 我应该怎么做才能从我的Java应用程序中提取指标?

2 个答案:

答案 0 :(得分:3)

您应该让您的应用程序通过HTTP公开指标。您可能希望将servlet挂钩到现有的网络服务器中。

答案 1 :(得分:2)

为了注册MetricsServlet:

如果您使用spring-boot注册一个bean来表示终点:

@Bean
ServletRegistrationBean registerPrometheusExporterServlet(CollectorRegistry metricRegistry) {
    ServletRegistrationBean srb = new ServletRegistrationBean();
    srb.setServlet(new MetricsServlet(metricRegistry));
    srb.setUrlMappings(Arrays.asList("/prometheus"));
    return srb;
}

如果是非spring应用程序,请在web.xml中添加servlet:

<servlet>
        <servlet-name>metrics</servlet-name>
        <servlet-class>io.prometheus.client.exporter.MetricsServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>metrics</servlet-name>
        <url-pattern>/metrics/</url-pattern>
    </servlet-mapping>
</servlet>