使用 Prometheus 监控 Java Web 应用程序

for*_*has 4 java monitoring prometheus

我在 Tomcat 上运行了一个简单的 java Web 应用程序,我想使用Prometheus对其进行监控。我使用官方客户端向我的 java 应用程序添加了一些计数器和仪表,我在另一台服务器上安装了 Prometheus,并且不想使用 Prometheus 从我的 java 应用程序中提取指标。

普罗米修斯有大量的出口商,但我不清楚哪一个适合我的用例。我考虑过使用Prometheus 推送网关,但根据文档,Pushgateway 的唯一有效用例是捕获服务级批处理作业的结果,这不是我的情况。我应该怎么做才能从我的 java 应用程序中提取指标?

for*_*has 6

为了注册 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;
}
Run Code Online (Sandbox Code Playgroud)

如果是非 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>
Run Code Online (Sandbox Code Playgroud)