如何在Prometheus中正确汇总http_server_requests_total指标?
问题分析与解决方法
你遇到的汇总结果不符,大概率是两个原因:要么是未过滤额外的标签维度(比如不同的请求method),要么是混淆了计数器的累计值与时间段增量。
正确的汇总方式
1. 过滤额外标签维度
先执行http_server_requests_total{app="sumiu-web", path="/metrics"}查看返回序列的所有标签——如果存在不同的method(比如GET、OPTIONS)或其他未预期的标签差异,这些都会被sum by(app)全部累加。如果只需要特定类型的请求(比如GET),要加上对应过滤:
sum by(app) (http_server_requests_total{app="sumiu-web", path="/metrics", method="GET"})
2. 明确忽略非目标标签
如果你想不管instance、host、region、method这些标签的差异,直接汇总所有符合条件的请求,也可以用sum without语法,效果和sum by(app)一致,但更直观:
sum without(instance, host, region, method) (http_server_requests_total{app="sumiu-web", path="/metrics"})
3. 统计时间段内的增量访问量
如果你的需求是统计某个时间段内的新增访问量(而非服务启动至今的累计总量),必须先用increase或rate函数计算计数器的增量,再求和:
# 统计最近1小时的/metrics端点总访问量 sum by(app) (increase(http_server_requests_total{app="sumiu-web", path="/metrics"}[1h]))
验证方法
把http_server_requests_total{app="sumiu-web", path="/metrics"}返回的所有数值手动相加,再和汇总查询的结果对比:如果数值一致,说明汇总逻辑没问题,问题出在你对“总访问量”的预期(是累计总量还是时间段增量);如果不一致,检查是否有重复的时间序列(比如同一实例同一标签的重复上报)。
内容的提问来源于stack exchange,提问作者Luiz E.
相关产品推荐
相关产品推荐

