Grafana 通过 Time Series 面板组合历史与预测数据:支持 predict_linear() 线性预测、外部预测服务接入及内置 Forecast 模式,需区分历史/预测样式、标注单位、设置阈值与图例。

配置 Grafana 图表展示历史趋势与预测,核心是组合时间序列查询 + 合适的可视化类型 + 可选的预测逻辑(通常由后端数据源或 PromQL 衍生实现)。Grafana 本身不原生做机器学习预测,但可通过 Prometheus 的 `predict_linear()` 函数、外部预测服务返回的数据,或 Grafana 9.1+ 的内置“Forecast”功能(需配合支持的时间序列数据源)来呈现。
选择支持趋势与预测的图表类型
优先使用 Time Series 面板(替代旧版 Graph),它专为时序数据优化,原生支持:
- 多系列叠加:可同时绘制原始指标(历史)、平滑曲线、预测线
- 自动时间轴缩放与对齐
- 内建 Forecast 模式(在面板右上角 Settings → Display → Forecast 中启用)
- 支持在 Tooltip 中显示预测值和置信区间(若数据源返回)
用 PromQL 实现简单线性预测(适用于 Prometheus 数据源)
在查询编辑器中,用 predict_linear() 函数基于最近窗口推算未来值。例如:
predict_linear(node_load1[1h], 3600)
含义:用过去 1 小时的 node_load1 数据拟合直线,预测未来 3600 秒(1 小时)的负载值。
建议搭配原始数据一起展示:
- 第一行查原始数据:
node_load1 - 第二行加预测:
predict_linear(node_load1[1h], 3600) - 在 Series Overrides 中为预测线设置虚线样式(
lineStyle.dash = [10,5])和不同颜色
配置视觉区分:历史 vs 预测
避免混淆,必须明确划分时间边界:
- 在面板 Standard options → Unit 中为预测线添加单位标注,如
load (forecast) - 使用 Thresholds 设置动态参考线(如预测超阈值时变红)
- 开启 Fill below to(仅限 Time Series)对历史部分填充浅色背景,预测段保持透明
- 在 Legend 中自定义名称:
Actual/Predicted (1h)
接入外部预测结果(如 Python/ML 模型输出)
若已有预测服务(如通过 Loki 日志统计趋势、或调用 ML API 返回时间序列),可将其作为独立数据源接入:
- 配置 Prometheus 兼容接口(如 VictoriaMetrics、Thanos Query)暴露预测指标
- 或使用 JSON Datasource 插件直连 HTTP 接口,返回标准 Prometheus 格式 JSON
- 查询时直接引用该数据源的指标名,与原始指标并列绘制
此时可在 Tooltip 或面板注释中说明模型类型、训练周期、误差范围等上下文信息。


















