【问题标题】:Monitor Java web-app using Prometheus使用 Prometheus 监控 Java Web 应用程序
【发布时间】:2017-10-19 06:25:15
【问题描述】:

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

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

【问题讨论】:

    标签: java monitoring prometheus


    【解决方案1】:

    为了注册 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>
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • @forhas : servlet 是容器中立的
      猜你喜欢
      • 1970-01-01
      • 2020-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-25
      • 2020-07-03
      • 1970-01-01
      相关资源
      最近更新 更多