我有一个简单的 Spring Boot 应用程序,配置如下(该项目在GitHub 上可用):
management:
metrics:
export:
simple:
mode: step
endpoints:
web:
exposure:
include: "*"
上述配置创建SimpleMeterRegistry
并将其指标配置为基于步骤的,步长为 60 秒。我有一个脚本每秒向服务虚拟端点发送 50-100 个请求,还有另一个脚本/actuator/metrics/http.server.requests
每 X 秒轮询一次数据。当我每 60 秒运行后一个脚本时,一切都按预期工作,但是当脚本每 120 秒运行一次时,响应总是包含零和指标。TOTAL_TIME
COUNT
谁能解释这种行为?
我已阅读此处的文档。下图 可能表明,只有在当前间隔期间调用 pollAsRate 时,注册表才会尝试聚合前一个间隔的数据。这将解释为什么它在 120 秒间隔内不起作用。但这只是我的假设,有人知道这里到底发生了什么吗?
春季启动版本:2.1.7.RELEASE
更新
我做了一个类似的测试management.metrics.export.simple.step=10s
,当轮询间隔为 10s 时它工作正常,而当它是 20s 时它不工作。对于 15 秒的间隔,它偶尔会起作用。因此,它肯定与步长和轮询频率有关。