Grafana变量配置时Prometheus查询失效问题求助
Grafana变量Prometheus查询报错修复
问题描述
使用以下Prometheus查询在Grafana面板中运行正常,但用于创建变量时抛出错误:
(vector(1) and on() (sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate)/0.04)<50) or on() (vector(2) and on() (sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate)/0.04)<80) or on() vector(3)
错误信息
查询结果不是有效的时间序列。变量查询必须返回字符串/数字列表,或带标签的向量。
问题原因
原查询返回的是无标签的标量向量,而Grafana变量查询要求返回带标签的向量(每个值对应可识别的标签),或者纯字符串/数字组成的列表,否则无法解析为变量选项。
修复后的查询
给每个返回值添加标签,让Grafana能识别变量选项:
label_replace( (vector(1) and on() (sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate)/0.04)<50) or on() (vector(2) and on() (sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate)/0.04)<80) or on() vector(3), "cpu_level", "$1", "", "(.*)" )
逻辑说明
- 原查询的CPU区间判断逻辑保持不变:使用率<50%返回1,50%-80%返回2,≥80%返回3
- 通过
label_replace函数为每个返回值添加cpu_level标签,标签值即为对应返回的数字 - 创建变量时,在Grafana变量设置中选择
Label为cpu_level,即可将标签值作为变量选项
内容的提问来源于stack exchange,提问作者PratikKGupta
相关产品推荐
相关产品推荐

