2017-10-19 81 views
0

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

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

回答

0

为了注册MetricsServlet:

如果使用弹簧启动注册一个bean来代表终点:

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

在非弹性的应用程序的情况下添加的servlet中web.xml:

<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> 
2

您应该让您的应用程序通过HTTP公开指标。您可能想要将servlet挂接到您现有的网络服务器上。

+0

这是Jetty的一个很好的例子,那么Tomcat呢? – forhas

+0

@forhas:servlet是容器中立的 – rkosegi