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

Prometheus指标图形无法连续显示,求问题排查(附Python代码)

问题原因及解决方案

你的核心错误是把时间值time_val作为指标标签使用,这违背了Prometheus的指标模型设计:

  • Prometheus的时间维度由样本的时间戳(采集时间或自定义时间)管理,标签仅用于区分静态/慢变化的维度(比如ckt_id这类设备标识)。
  • 当前写法会让每个不同的time_val生成一条独立的时间序列,每条序列只有一个数据点,导致图形无法连成连续曲线。

修正后的代码示例

from prometheus_client.core import GaugeMetricFamily
import time

# 请根据API返回的时间格式调整解析逻辑,示例为ISO时间字符串转Unix时间戳(秒)
def convert_time_to_timestamp(time_str):
    return time.mktime(time.strptime(time_str, "%Y-%m-%d %H:%M:%S"))

# 仅保留ckt_id作为标签,移除time_val
g_in = GaugeMetricFamily("in_utilization", '设备利用率信息', labels=["ckt_id"])
# 将API返回的时间转为Unix时间戳
sample_ts = convert_time_to_timestamp(val['time'])
# 添加指标时指定样本的实际时间戳(如果不需要自定义时间,可省略timestamp参数,用采集时间)
g_in.add_metric([ckt_id], val['value'], timestamp=sample_ts)

关键说明

  1. 每个ckt_id对应一条连续的时间序列,Prometheus会按时间戳排序展示连续曲线
  2. 如果API返回的时间就是采集该指标的时间,可直接省略timestamp参数,Prometheus会自动用采集时刻作为样本时间
  3. 标签仅用于区分不同实体(比如不同电路、设备),动态变化的时间不属于标签的适用场景

内容的提问来源于stack exchange,提问作者Neha Mangla

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:57:12