java - 使用 Prometheus 监控 Java 网络应用程序

标签 java monitoring prometheus

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

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

最佳答案

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

关于java - 使用 Prometheus 监控 Java 网络应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46823855/

相关文章:

java - 平移动画会导致 View 的填充位置发生变化,但不会导致布局发生变化

Java内部类和嵌套静态类

java - 通过 ResourceBundle 访问属性文件时出错

node.js - 如何使用 Node.js 从 Prometheus DB 获取数据

java - Micrometer - Prometheus Gauge 显示 NaN

Azure Kubernetes 服务扩展和 HPA

java - 从Keystore获取私钥

linux - 使用 sh 监视输出时无法解决此错误

linux - 监视在我的 linux 机器上运行的所有进程的 STDERR

laravel - 如何查看 Laravel 中的内存使用情况?