【问题标题】:How to capture metrics for REST end points via micrometer libraray如何通过千分尺库捕获 REST 端点的指标
【发布时间】:2021-11-10 08:27:15
【问题描述】:

我正在开发基于 Spring 框架的组件。我们还没有迁移到 Spring Boot。

我的要求是为在应用服务器上运行的组件捕获指标(JVM/http/磁盘空间)。

我遇到了可用于捕获此类指标的微米库,它可以与 Promotheus 很好地集成。 我所做的是我添加了以下依赖项

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
    <version>1.7.5</version>
</dependency> 

添加依赖后,我公开了一个休息端点并添加了一些简单的逻辑来提取指标。这样做我能够获取一些基本的 JVM 指标。我为此参考了以下链接,该链接解释了如何捕获指标。

(https://micrometer.io/docs/ref/jvm)

但是,除了 JVM 指标之外,我还想捕获 http 请求指标(例如,请求数、http 调用其余服务所花费的时间)。

在我的应用程序中有相当多的休息端点。有没有办法做到这一点。我找不到任何好的文档。

任何帮助将不胜感激。

谢谢

萨钦

【问题讨论】:

  • 能否请您说出您的具体问题?您是在尝试公开 Prometheus 指标端点以进行抓取,还是试图弄清楚如何测量休息端点?尽量让你的问题集中在一个主题上。 (稍后发布更多问题,重点关注更多要点)
  • 首先感谢您的回复。我将尝试更具体。我需要了解如何测量休息终点统计信息,例如。没有请求,请求所花费的时间。我看到 Spring boot actuator 提供了类似的东西。这可能吗?

标签: spring micrometer


【解决方案1】:

正如你所说,Spring Boot 开箱即用,所以如果你可以移动到那里,你不需要做任何事情。

为了检测您的网络端点,您可以做一些事情:

  1. 您可以创建一个Filter 并在那里检测您的所有呼叫。 这是Spring Boot的作用,你可以看看/复制WebMvcMetricsFilter
  2. 您可以为您的控制器添加@Timer 并设置TimedAspect
  3. 您可以手动检测您的控制器,请参阅docs

【讨论】:

  • 是的 spring boot 是我们需要更新的东西,这是实现它的最佳方法,但同时我会看看文档。
【解决方案2】:

遵循上述建议后,我实际上能够看到我的 http 指标

我简单地创建了一个使用 @EnableAspectJAutoProxy 注释的配置类,并在该类中定义了一个 bean,如下所示

@Bean
public TimedAspect timedAspect() {
   return new TimedAspect(registry);
}

然后在我的 REST api POST 方法上添加 @Timed 注释,然后我就能够在 Prometheus 仪表板中看到统计信息。

这真的有效!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多