You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Grafana中将sensorReading标签值转为时序图可用数值?

问题描述

使用PromQL查询语句:

sensorReading{instance="192.168.xxx.xxx", officeSensorNumber="1"}

返回结果如下:

{__name__="sensorReading", instance="192.168.xxx.xxx", job="IPMI", officeSensorNumber="1", sensorReading="43.000"}
{__name__="sensorReading", instance="192.168.xxx.xxx", job="IPMI", officeSensorNumber="1", sensorReading="44.000"}
{__name__="sensorReading", instance="192.168.xxx.xxx", job="IPMI", officeSensorNumber="1", sensorReading="45.000"}

但所有返回结果的样本数值均为1,在Grafana时序图中仅显示一条带不同颜色点的线(每个颜色对应sensorReading标签的取值),需要提取sensorReading标签的值作为时序图的数值,生成正常的趋势图表。

解决方案

直接用PromQL的label_value()函数提取标签里的数值,替换掉原来的样本值就行,修改后的查询语句是:

label_value(sensorReading{instance="192.168.xxx.xxx", officeSensorNumber="1"}, "sensorReading")

这个函数能把指定标签的字符串值转成数值类型,作为样本的实际值返回,Grafana就能正常绘制趋势图了。

要是想保留原有的标签维度(方便在Grafana里区分不同序列),也可以结合label_replace()函数,同时把标签值转成数值:

label_replace(sensorReading{instance="192.168.xxx.xxx", officeSensorNumber="1"}, "$1", "sensorReading", "sensorReading", "(.*)") * 1

这里label_replace用来保留标签信息,乘以1是为了把字符串标签值隐式转成数值类型,确保Grafana能正确识别。

另外提一句:这种样本值是1、实际数值藏在标签里的情况,大多是指标采集配置出了问题(比如用textfile collector或者自定义exporter时,错误地把数值存在标签而非样本值里)。要是能调整采集配置,直接把传感器读数作为样本值推送,后续查询会更省心。

内容的提问来源于stack exchange,提问作者Philip Scot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 05:12:44