Prometheus query_range时间范围设置及域名流量求和问题求助
问题解决:Prometheus查询错误与increase函数结果疑问
1. 解决"exceeded maximum resolution of 11,000 points per timeseries"错误
你的查询时间范围为12天(2024-10-01至2024-10-13),step设为60秒,计算后总点数为(13-1)*24*3600 / 60 = 17280,远超Prometheus默认的单时间序列最大点数限制(11000)。
解决方法:
- 增大step值:将step改为300秒(5分钟),总点数降至3456,符合限制。修改后的请求参数示例:
params={ 'query': 'sum(increase(libvirt_domain_interface_stats_receive_bytes_total[2h]))', 'start': '2024-10-01T00:00:00.000Z', 'end': '2024-10-13T00:00:00.000Z', 'step': '300' # 调整为5分钟步长 } - 分批次查询:将12天拆分为多个小时间范围(如每次3天),分别查询后合并结果。
- 调整Prometheus配置(不推荐):修改
prometheus.yml中的query.max-samples参数提高限制,但会增加服务器内存与CPU负载。
2. 为什么increase返回多个值而非单一总和
你混淆了query_range与queryAPI的作用:
query_range的作用是按指定step返回时间序列上的连续数据点,每个点对应该时间点往前2小时的流量增量(因你使用increase(metric[2h])),因此会得到多个值。- 若要获取整个时间范围的总流量总和,需使用
queryAPI(而非query_range),查询语句改为统计整个12天的增量:
response_tmp = requests.get( 'http://prom.mysite.com:9091/api/v1/query', # 注意是query接口 params={ 'query': 'sum(increase(libvirt_domain_interface_stats_receive_bytes_total[12d]))', 'time': '2024-10-13T00:00:00.000Z' # 指定查询的结束时间点 }, auth=('admin', 'myStrongAdminPassWord') )
此请求返回的结果为单一总和值,对应2024-10-01至2024-10-13的总接收流量。
内容的提问来源于stack exchange,提问作者Saeed
相关产品推荐
相关产品推荐

