Skip to content

GreptimeDB 原生接入 CNCF Perses:一个大盘看遍指标、日志、链路

GreptimeDB Dashboard 现已内置基于 Perses 的大盘功能,GreptimeDB 插件也已合并进 CNCF Perses 官方插件仓库,把一体化可观测后端能力延伸到前端,形成统一的大盘可观测性。
GreptimeDB 原生接入 CNCF Perses:一个大盘看遍指标、日志、链路
本页内容

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 的 Node Exporter 大盘

迁移到 Perses 的 Grafana Node Exporter 大盘


基于 SQL 的时序数据图

画折线图时,用 ${__from}${__to} 对接大盘右上角的时间范围:

sql
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 配置的 CPU 时序折线图


SQL 表格

要看最新记录时,把面板改成 Table,查询类型不变,时间列换成表里的时间列即可:

sql
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 表格面板

展示最新记录的 SQL 表格面板


日志面板

面板用 Logs Table,查询用 GreptimeDB Log Query。

顶部配好搜索、分类等变量后,SQL 里用 $search$log_category$max_rows 等自定义变量,再用 ${__from} / ${__to} 限定时间范围:

sql
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 驱动的日志面板

GreptimeDB Log Query 驱动的日志面板

💡 使用建议:临时排障查日志,用「Logs 查询」更高效;如果是日常固定要看的检索视图,建议保存到「可视化」大盘里。


链路列表

面板选 Trace Table,查询选 GreptimeDB Trace Query。一条简单的 SQL 就能列出分布式调用的根 Span,也就是一条条完整的 Trace 记录:

sql
SELECT * FROM "public"."web_trace_demo" WHERE "parent_span_id" IS NULL

在列表里点击任意一行 Trace,右侧会自动展开甘特图(Gantt)详情,不用再额外配置下钻查询或子面板。

Trace Table 与甘特图详情

Trace Table 与右侧自动展开的甘特图详情

总结

GreptimeDB 把指标、日志、链路统一存了下来,Perses 把这些数据统一可视化呈现出来。两者结合,你不必再维护多套分散的数据库和看板:在 Greptime Dashboard 的「可视化」里写好对应的查询(SQL 或 PromQL)、选好面板,就能在一处完成指标、日志、链路的观测。


延伸阅读:Perses 官方迁移指南

Stay in the loop

加入我们的社区