GreptimeDB Dashboard 现已正式内置基于 Perses 项目的大盘功能。随着 GreptimeDB 插件合并进 CNCF 的 Perses 官方插件仓库,Perses 生态已经原生支持 GreptimeDB 数据源。
借助与 Perses 的深度集成,GreptimeDB 后端的一体化能力(The Single Database for Observability)得以延伸到前端,形成统一的大盘可观测性。
什么是 Perses
如果你用过 Grafana,对 Perses 会很快上手——它解决的是同一类问题,但走的是云原生的路子。
Perses 是 CNCF Sandbox 项目,2024 年 8 月加入 CNCF,最初由 Amadeus 于 2022 年开源,采用 Apache 2.0 许可。在 CNCF 的可观测生态里,采集有 OpenTelemetry、存储与查询有 Prometheus,唯独可视化这一环长期缺少一个厂商中立的标准,Perses 想填补的正是这个空缺。
它和传统大盘工具最大的不同,是把大盘当作代码来管理(Dashboard-as-Code):大盘定义可以纳入版本控制和 CI/CD,配套 percli 命令行和 Go / CUE 两套 SDK。它还是 Kubernetes 原生的,大盘能用 CRD 声明、跟随应用一起部署,天然契合 GitOps 流程。数据源则采用插件化设计,Prometheus、Tempo、Loki、Pyroscope 等都通过插件接入,并支持自定义——GreptimeDB 数据源正是这样接进来的。
为什么是 GreptimeDB + Perses
1. 统一的可观测大盘
GreptimeDB 具备指标、日志、链路(Metrics、Logs、Traces)的统一存储与分析能力。借助 Perses 的大盘承载,这种一体化优势自然延伸到前端:用户在单一入口内就能连贯地查看并分析多模态数据,比维护多套工具更轻量,也更直观。
2. 原生的 SQL 查询引擎:释放多模态数据潜能
GreptimeDB 插件本质上是一个标准 SQL 查询引擎,让用户用统一的 SQL 去挖掘多模态数据。无论是用 GreptimeDB 特有的时间窗口(Time Window)函数对指标做时序聚合,还是对日志、链路明细做关联查询,一个 SQL 插件就能覆盖。
3. SQL 与 PromQL 各取所长
在具体的大盘配置里,GreptimeDB 插件与原生的 Prometheus 插件有一套清晰的分工:
- 指标(Metrics)走 PromQL:配置标准 Prometheus 数据源,沿用原生 PromQL 语法,平滑复刻既有的云原生大盘习惯。
- 日志、链路与高级聚合走 SQL:切换到 GreptimeDB 插件,用 SQL 及其时序函数做深度下钻。
核心能力全景图
迁移 Grafana Node Exporter 大盘
GreptimeDB 原生兼容 Prometheus 生态,既支持 Prometheus 指标的高性能写入,也完整支持 PromQL 查询。得益于后端这层兼容,再配合 Perses 官方提供的迁移工具,你可以把原本基于 PromQL 的 Grafana JSON 配置一键导入。导入后,大盘变量、Gauge(仪表盘)、折线图等都能无缝沿用。

迁移到 Perses 的 Grafana Node Exporter 大盘
基于 SQL 的时序数据图
画折线图时,用 ${__from}、${__to} 对接大盘右上角的时间范围:
SELECT time_window, loc,
max(max_temp) RANGE '1m' FILL LINEAR AS max_temp
FROM public.temp_alerts
WHERE time_window >= to_timestamp_millis(${__from})
AND time_window <= to_timestamp_millis(${__to})
ALIGN '30s' BY (loc)
ORDER BY time_window ASC
LIMIT 2000;大盘内置的 ${__from} 和 ${__to} 会传入毫秒级时间戳,配合 to_timestamp_millis() 即可契合 GreptimeDB 的时间戳查询。

用 SQL 配置的 CPU 时序折线图
SQL 表格
要看最新记录时,把面板改成 Table,查询类型不变,时间列换成表里的时间列即可:
SELECT *
FROM public."penguins_size"
WHERE "greptime_timestamp" >= to_timestamp_millis(${__from})
AND "greptime_timestamp" <= to_timestamp_millis(${__to})
ORDER BY "greptime_timestamp" DESC
LIMIT 100;
展示最新记录的 SQL 表格面板
日志面板
面板用 Logs Table,查询用 GreptimeDB Log Query。
顶部配好搜索、分类等变量后,SQL 里用 $search、$log_category、$max_rows 等自定义变量,再用 ${__from} / ${__to} 限定时间范围:
SELECT ts, line_no, elapsed_s, step_s, content, message
FROM public.logtest
WHERE ts >= to_timestamp_millis(${__from})
AND ts <= to_timestamp_millis(${__to})
AND (content LIKE '%$search%' OR message LIKE '%$search%')
LIMIT $max_rows;
GreptimeDB Log Query 驱动的日志面板
💡 使用建议:临时排障查日志,用「Logs 查询」更高效;如果是日常固定要看的检索视图,建议保存到「可视化」大盘里。
链路列表
面板选 Trace Table,查询选 GreptimeDB Trace Query。一条简单的 SQL 就能列出分布式调用的根 Span,也就是一条条完整的 Trace 记录:
SELECT * FROM "public"."web_trace_demo" WHERE "parent_span_id" IS NULL在列表里点击任意一行 Trace,右侧会自动展开甘特图(Gantt)详情,不用再额外配置下钻查询或子面板。

Trace Table 与右侧自动展开的甘特图详情
总结
GreptimeDB 把指标、日志、链路统一存了下来,Perses 把这些数据统一可视化呈现出来。两者结合,你不必再维护多套分散的数据库和看板:在 Greptime Dashboard 的「可视化」里写好对应的查询(SQL 或 PromQL)、选好面板,就能在一处完成指标、日志、链路的观测。
延伸阅读:Perses 官方迁移指南


