Spring MVC 3项目中配置监控Micrometer/Prometheus/Grafana

问题描述 投票:0回答:1

我想配置监控。我在互联网上查找,发现了很多 Spring Bout + Micrometer + Prometheus + Grafana 的实现示例。

但我的问题是我在 Spring MVC 3.2.9 上有一个旧项目。我有一个多模块项目:

  • 模块ui
  • 模块请求
  • 模块员工
Spring MVC 上的

模块ui。其余 2 个模块作为 SOAP Web 服务与其连接(我使用注释 @WebService)。

我尝试手动配置监控。首先,我向 ui-module pom-file 添加了几个依赖项:

<!-- client prometheus -->
<dependency>
     <groupid> io.prometheus </ groupid>
     <artifactid> simpleclient </rtifactid>
     <version> 0.6.0 </ version>
</fendency>

<!-- Servlet for data export in Prometheus -->
<dependency>
     <groupid> io.prometheus </ groupid>
     <artifactid> simpleclient_servlet </ artifactid>
     <version> 0.6.0 </ version>
</fendency>

<!-- Micrometer library -->
<dependency>
     <groupid> io.micrometer </ groupid>
     <artifactid> micrometer-core </rtifactid>
     <version> 1.1.3 </ version>
</fendency>

<!-- Allows to Micrometer work with Prometheus -->
<dependency>
     <groupid> io.micrometer </ groupid>
     <artifactid> micrometer-segistry-prometheus </ artifactid>
     <version> 1.1.3 </ version>
</fendency>

接下来,在 web.xml 文件中,我创建一个用于导出指标的 servlet:

<!-- Servlet for export metrics -->
<servlet>
     <servlet-name> prometheus </ servlet-name>
     <servlet-class> io.prometheus.client.exporter.MetricsServlet </sevlet-class>
     <load-on-startup> 1 </laad-on-startup>
</ servlet>

<!-- Path in which the metrics will be available -->
<servlet-mapping>
     <servlet-name> prometheus </ servlet-name>
     <url-pattern>/metrics </rl-pattern>
</ servlet-mapping>

然后我创建一个类,在其中注册必要的指标收集器:

@WebListener
public class PrometheusInitListener implements ServletContextListener {

     /*
      * Register the necessary metric collectors
      */
     @Override
     public void contextInitialized(ServletContextEvent ServletContextEvent) {
         PrometheusMeterRegistry meterRegistry = new PrometheusMeterRegistry (PrometheusConfig.DEFAULT, CollectorRegistry.defaultRegistry, Clock.SYSTEM);
         new ClassLoaderMetrics (). bindTo (meterRegistry);
         new JvmMemoryMetrics(). bindTo (meterRegistry);
         new JvmGcMetrics(). bindTo (meterRegistry);
         new ProcessorMetrics (). bindTo (meterRegistry);
         new JvmThreadMetrics (). bindTo (meterRegistry);
     }

     @Override
     public void contextInitialized(ServletContextEvent servletContextEvent) {
     }
}

最后我开始了这个项目。我打开地址:
http://localhost:8080/core/metrics
我看到了标准的 jvm 指标:

# HELP JVM_GC_MEMORY_PROMOTED_BYTES_TOTAL COUNT of POSITISE InCreases in the SIZE of the Old Generation Memory Pool Before Gc TOM TOM
# Type JVM_GC_MEMERY_PROMOTED_BYTES_TOTAL COUNTER
JVM_GC_MEMORY_PROMOTED_BYTES_TOTAL 2.6146872E7
# HELP JVM_BUFFER_COUNT_BUFFERS ASTEMATE Of the Number of Buffers in the Pool
# Type jvm_buffer_count_buffers gauge
JVM_BUFFER_COUNT_BUFFERS {ID = "DIRECT",} 14.0
jvm_buffer_count_buffers {id = "mapped",} 0.0
. . . . .

现在我有以下问题:我想在另外 2 个模块中为某些业务逻辑配置自定义指标: requestsemployees 。但我一时不明白:如何将这些指标传输到 ui 模块?你能告诉我吗:-).

现在我在 Micrometer 文档中读到了这样的内容:“Micrometer 是支撑 Spring Boot 2 或更高版本指标集合的仪器库。”。也许 Micrometer 不适用于旧的 Spring 3 项目?也许我应该使用另一个库,而不是 Micrometer?

spring-mvc prometheus grafana monitoring micrometer
1个回答
0
投票

Spring WebMVC 3.2.9.RELEASE 已发布超过 9 年(2014-05-20),因此您应该升级。 Micrometer 比它更年轻,所以 Spring Framework 3.x 中没有 Instrumentation。

您需要自己对组件进行检测,您可以查看 Spring Framework 6 中的检测,但考虑到您使用的是 9 年以上的版本,您可能无法按原样复制检测。

所以我认为你最好的做法是升级应用程序,你可以享受 Spring Framework 6 为你提供的工具。

© www.soinside.com 2019 - 2024. All rights reserved.