乐于分享
好东西不私藏

GreptimeDB Grafana 插件全面升级:后端架构重构,完善宏支持

GreptimeDB Grafana 插件全面升级:后端架构重构,完善宏支持

在本次更新中,插件完成了底层架构的关键演进:查询链路正式由前端浏览器直连,切换为由 Go 服务端代理请求 GreptimeDB 的 /v1/sql 接口。这一转变打破了以往纯前端组件的限制,带来了 Grafana 原生告警(Alerting) 支持、更完善的时间宏机制以及前后端数据结构的统一。同时,我们还引入了针对 OpenTelemetry(OTel)规范的自动填列开关,简化 Logs 与 Traces 的字段配置。

兼容升级:

新版本对原有架构保持了良好的向下兼容。您已有的 SQL 面板、Query Builder 配置,以及对 Table、Time Series、Logs 和 Traces 的查询视图均可无缝延续,既有看板不会受到影响。


核心能力提升

架构的重构为用户带来了以下直接的功能提升:

1. 支持 Grafana 原生告警 (Alerting)

过去由于前端计算的限制,面板 SQL 无法直接触发告警。升级后:

  • 重构前:面板 SQL 无法用于创建 Grafana 告警。
  • 重构后:面板中的同一条 SQL(包含时间宏)可以直接用于创建 Grafana 告警规则。

需要注意的是,告警查询的时间范围应当使用时间宏表达,不要写死为固定的起止时间,否则规则每次评估都会重复查询同一段历史数据。

告警配置界面

2. 更强大的时间宏支持

以往 $__timeFilter 等宏由浏览器端插值计算;现在,宏的解析与展开全面交由服务端处理,确保时间宏能够在告警规则评估中正常生效。

以下展开式中的 <from><to><interval> 为占位符,展开时会替换为面板当前的时间范围与自适应间隔。

重点新增(常用):

  • $__timeFilter(col):展开为 col >= <from> AND col <= <to>,以查询大盘时间范围内的数据。
SELECTtimestampAStimestampbodylevel, trace_idFROM genai_conversationsWHERE $__timeFilter(timestamp)ORDERBYtimestampDESCLIMIT100;
  • $__timeInterval(col):展开为 date_bin(<interval>, col),分桶宽度跟随面板自适应间隔。
SELECT $__timeInterval(timestampAStime,SUM(`span_attributes.gen_ai.usage.input_tokens`AS input_tokensFROM opentelemetry_tracesWHERE $__timeFilter(timestamp)GROUPBYtimeORDERBYtime;

其他新增:

  • $__timeFilter_ms$__fromTime_ms$__toTime_ms$__dateFilter$__dateTimeFilter$__interval_s

原有宏(仍可用,改为服务端展开):

  • $__fromTime / $__toTime:起止时间字面量,适合手写复杂条件。
  • $__interval:面板自适应间隔值(如 1 minute),用于控制分桶宽度。

宏展开时,timestamp 等保留字会自动加上双引号,避免列名与 SQL 关键字冲突。


查询与配置体验优化

1. 新增 Use OTel 自动填列开关

针对 OpenTelemetry 数据的查询,插件在数据源设置及 Logs/Traces Builder 中新增了 Use OTel 选项及版本选择:

  • 开启:自动按照 GreptimeDB 的标准 OTel 风格列名(如 trace_idspan_nameduration_nano 等)填充字段,无需手动输入。
  • 关闭:若使用自定义表结构,可继续按需手动配置字段。

2. Ad-hoc Filter 注入优化

  • Query Builder:Ad-hoc 变量会自动注入为标准 WHERE 条件,支持 table.column 跨表限定,并自动忽略目标表与当前面板不一致的过滤规则。
  • SQL Editor:保持高自由度,不强制注入 Ad-hoc filter,避免破坏用户手写的复杂 SQL 逻辑。

3. 预置 Demo Dashboard 快速上手

数据源 Dashboards 页新增了预置面板,支持一键导入:

  • GreptimeDB - OTel Min Demo
  • GenAI Observability
Demo Dashboard 截图

运行建议: 导入后的面板默认不含数据。如需体验完整的图表效果,建议配合官方示例项目 demo-scene/genai-observability[1] 向 GreptimeDB 写入模拟数据,即可快速直观地了解相关可观测看板的搭建。


安装与配置说明

具体的安装步骤、解压配置及 Docker 镜像的使用说明,请直接参考 GitHub Readme Installation 指南[2]

需要注意的是,从旧版本升级时,替换插件目录后需要重启 Grafana 才会生效,既有看板无需改动。

活动预告

8 月 22 日下午,专场 16,我们在 DTCC 现场等你。

Reference
[1] 

demo-scene/genai-observability: https://github.com/GreptimeTeam/demo-scene/tree/main/genai-observability

[2] 

GitHub Readme Installation 指南: https://github.com/GreptimeTeam/greptimedb-grafana-datasource/#installation