如何通过Grafana将Prometheus SNMP导出器的标签值转为时序值?
解决方法:将SNMP导出的标签值转为Grafana可展示的时序指标
你的问题核心是SNMP exporter把碳粉剩余量(70)存在了指标标签里,而非作为指标的数值(当前指标值为1)。不用修改exporter配置,在Grafana里通过PromQL就能快速解决:
1. 把标签值转为指标数值
用Prometheus的strtofloat函数,将标签里的字符串值转换为浮点型数值,直接作为指标值使用:
strtofloat(usageTonerCurrentLevel usageTonerCurrentLevel)
如果需要指定特定打印机或碳粉索引,添加过滤条件即可:
strtofloat(usageTonerCurrentLevel{instance="xxxx", usageTonerIndex="3"} usageTonerCurrentLevel)
2. 在Grafana生成时序数据
将上述PromQL输入到Grafana的查询面板,选择折线图等时序可视化组件,就能自动生成时序数据——只要SNMP exporter按周期采集(默认通常为1分钟),每次采集到的碳粉水平变化都会被记录为时间序列上的节点。
长期优化方案(可选)
如果想从根源规范指标输出,可调整snmp_exporter的snmp.yml配置:找到打印机碳粉水平对应的OID配置段,把原本映射为标签的usageTonerCurrentLevel改为直接映射为指标值,这样exporter会直接输出usageTonerCurrentLevel{instance="xxxx", usageTonerIndex="3"} 70这类标准格式的指标,后续无需再做转换。
内容的提问来源于stack exchange,提问作者Robert Heine
相关产品推荐
相关产品推荐

