Prometheus监控学习笔记之查询报错could not parse expression: parse error at char 107: range specification must be preceded by a metric selector
0x00 概述
在进行Prometheus查询或者新增Prometheus Alerts时候,会出现报错could not parse expression: parse error at char 107: range specification must be preceded by a metric selector;
初步看以为是查询语句写错了,其实此处是查询语句包含SubQuery导致的问题,是Prometheus版本过低导致的。
0x01 问题现象
在版本为2.1的Prometheus上查询最近7天的CPU最大利用率的时候,返回报错,报错可以参考此issue,
查询语句为:
sum(max_over_time(irate(container_cpu_usage_seconds_total{namespace!='',container_name!='',container_name!='POD}[5m])[7d:1m])*100) by (namespace,container_name)";
查询语句中使用了2个函数,分别为max_over_time和sum;
0x02 问题解决
在Prometheus的理解中,是将max_over_time查询后再进行了sum查询,官方定义为subQuery;
根据官方的文档,subQuery功能是在版本2.7才加入的,所以如果出现以上报错,请检查Prometheus版本是否低于2.7;
如果版本是高于2.7,则说明是查询语句有问题,需要修改查询语句。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2019-05-22 Linux学习笔记之rsync配置
2019-05-22 K8S学习笔记之Pod的Volume emptyDir和hostPath
2019-05-22 ELK学习笔记之Kibana安装配置
2019-05-22 Prometheus监控学习笔记之Grafana用户权限分组