在我的项目中,我们使用带有执行器和 datadog 指标的 spring-boot2 - 包
io.micrometer:micrometer-registry-datadog
。
指标通过http API发送到datadog。
我在 datadog 中为
http.server.requests.count
创建了时间序列图表,以查看每秒有多少个请求。
我发现根据 datadog 中选择的时间窗口,我在图表上看到完全不同的值。
例如15 分钟我看到大约 300req/s
1 天的速度约为 50req/s。
我在datadog中尝试过
http.server.requests.count
,将其更改为发生率/秒,但没有帮助。
我在控制器上添加了
@Timed
注释,并将数据狗步长自定义为 30 秒。其余的都是默认的。
您知道为什么会发生这种情况吗?我哪里做错了?
原因是您是按费率聚合的。当您更改时间范围时,您会看到不同的值,将速率更改为总和,您应该会看到一致的数据。
以 json 格式,它看起来像这样:
{
"query": "sum:http.server.requests.count{!uri:/actuator/health,$Environment}.as_count()",
"data_source": "metrics",
"name": "query"
}
还建议您阅读这两页以了解查询和数据类型在 datadog 中的工作方式:
也许您在图表上看到的是平均值。也许在这 15 分钟内请求量会激增,但由于时间间隔更宽,因此在更大的范围内,请求量会“趋于平坦”。检查 1 小时窗口可能会揭示一些情况。谢谢
值的差异是由于基于rate的查询造成的。因此,如果您使用 count 进行聚合,应该会为您提供 RPS。 或者,您也可以使用时间窗口进行速率聚合:1秒 [再次推断计数]