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