我有一个在Tomcat上运行的简单java Web应用程序,我想用Prometheus监控它。我使用the official client在我的java应用程序中添加了一些计数器和仪表,我在另一台服务器上安装了Prometheus而不想使用Prometheus从我的Java应用程序中提取指标。
普罗米修斯得到了tons of exporters,但我不清楚哪一个适合我的用例。我考虑使用Prometheus push gateway,但根据documentation,Pushgateway唯一有效的用例是捕获服务级批处理作业的结果,这不是我的情况。我应该怎么做才能从我的Java应用程序中提取指标?
您应该让您的应用程序通过HTTP公开指标。您可能希望将servlet挂钩到现有的Web服务器中。
要注册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>