跳到主要内容
版本:Nightly

Grafana

GreptimeDB 服务可以配置为 Grafana 数据源。 你可以选择使用以下三个数据源之一连接 GreptimeDB 与 Grafana:GreptimeDBPrometheusMySQL

GreptimeDB 数据源插件

GreptimeDB 数据源插件专为 GreptimeDB 打造:更好地适配 GreptimeDB SQL 查询,并提供 Logs 与 Traces 查询类型(支持 OpenTelemetry 预设及自定义列映射)。基于 ClickHouse 数据源插件修改。

安装

该插件尚未上架 Grafana 插件市场,因此请安装未签名的压缩包,并在 grafana.ini 中显式放行:

[plugins]
allow_loading_unsigned_plugins = info8fcc-greptimedb-datasource

对应的环境变量是 GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS。Grafana Cloud 不接受未签名插件,请使用自建 Grafana。如果需要与自己 Grafana root_url 绑定的签名版本,请联系我们

在安装插件前请确保 Grafana 已经安装并运行。

你可以任选以下一种安装方式:

  • 发布页面下载 info8fcc-greptimedb-datasource-unsigned.zip,解压到你的 grafana 插件目录
  • 使用 Grafana Cli 下载并安装:
    grafana cli --pluginUrl https://github.com/GreptimeTeam/greptimedb-grafana-datasource/releases/latest/download/info8fcc-greptimedb-datasource-unsigned.zip plugins install info8fcc
  • 使用我们 预构建的 Grafana 镜 像,已经提前包含了 GreptimeDB 数据源插件 docker run -p 3000:3000 greptime/grafana-greptimedb:latest

注意,安装插件后可能需要重新启动 Grafana 服务器。

Connection 配置

在 GreptimeDB server URL 中填写以下地址:

http://<host>:4000

在 Auth 部分中单击 basic auth,并在 Basic Auth Details 中填写 GreptimeDB 的用户名和密码。未设置可留空:

  • User: <username>
  • Password: <password>

然后单击 Save & Test 按钮以测试连接。

基础查询设置

在选择任何查询类型之前,需要先配置要查询的 DatabaseTable

设置项说明
Database选择数据库
Table选择表

每个 Builder 面板都会自动包含 Within Dashboard Time Range 过滤条件。 这会在 SQL 中生成 $__timeFilter("col"),由插件展开为仪表盘当前时间范围。

DB Table Config


Table 查询

当查询结果不包含时间列时,选择 Table 查询类型,适合展示表格数据。

设置项说明
Columns选择要查询的列,可多选
Filters设置筛选条件

Table Query


Time Series 查询

当查询包含时间列和数值时,选择 Time Series 查询类型,适合按时间可视化指标。

使用 date_bin 分桶查询

对一段时间做聚合时,可用 date_bin 对时序数据降采样:按时间间隔计算分桶, 并将每个时间戳映射到最近区间的起点,从而把行归入时间窗口,再对每个窗口应用 聚合或选择函数。

示例(或原始 SQL):

SELECT date_bin('$__interval', timestamp) AS time,
SUM(`span_attributes.gen_ai.usage.input_tokens`) AS input_tokens
FROM opentelemetry_traces
WHERE $__timeFilter(timestamp)
GROUP BY time
ORDER BY time;

$__interval 跟随 Grafana 面板间隔;$__timeFilter 限制仪表盘时间范围。 更多宏见 SQL Macros

设置项说明
Time选择时间列
Columns选择标签列(如 hostregion
Aggregate functions对数值列使用 AVG / MAX / MIN / SUM / COUNT
Group By选择分组列
Filters可选条件:=!=><LIKEINIS NULL,以及 AND/OR

Time Series

Multi-Frame 拆分

当查询结果包含 时间 + 字符串 + 数值 字段时,插件会自动将长表拆成多个 frame——每个唯一标签组合一个。Grafana 将每个 frame 渲染为图表中的独立序列。

例如,GROUP BY host 且有三个 host 时,会生成三个 frame(host-a、host-b、host-c),各自有独立标签和颜色。

若要避免拆分,请改用 Table 查询类型。


Logs 查询

选择 Logs 查询类型以查询日志数据。

设置项说明
Time选择时间戳列
Message选择日志内容列
Log Level(可选)选择日志级别列
Context Columns展开日志行时额外显示的列(来自数据源配置)

Logs

全文搜索:使用 matches_term(body, 'keyword') 进行精确词/短语匹配。

Logs Context 查询

根据日志行的 context 列的值进行近似时间范围查询。

  • 需要先设置 context 相关的列。 Context Config
  • 然后查询的时候包含 context 相关列。 Logs Query Config

Traces 查询

主要设置项对应值
Trace Model选择 Trace Search 以查询 Trace 列表
Trace Id Column初始值 trace_id
Span Id Column初始值 span_id
Parent Span ID Column初始值 parent_span_id
Service Name Column初始值 service_name
Operation Name Column初始值 span_name
Start Time Column初始值 timestamp
Duration Time Column初始值 duration_nano
Duration Unit初始值 nanoseconds
Tags Column可多选,对应以 span_attributes 开头的列
Service Tags Column可多选,对应以 resource_attributes 开头的列

Traces

Attribute 自动发现

当 Trace ID 查询使用 SELECT * 时,插件会自动发现所有以 span_attributes.resource_attributes. 开头的列,并在瀑布图中作为可展开标签展示,无需手动枚举每个 attribute 列。

SQL Macros

在原始 SQL 模式下可使用这些宏。插件会将其展开为兼容 GreptimeDB 的 SQL。

时间范围

Macro展开为
$__timeFilter(col)"col" >= 'ISO' AND "col" <= 'ISO'
$__timeFilter_ms(col)同上(毫秒精度)
$__fromTime开始时间的 ISO 字符串
$__toTime结束时间的 ISO 字符串
$fromTime_ms开始时间的毫秒 ISO 字符串
$toTime_ms结束时间的毫秒 ISO 字符串

时间间隔

Macro展开为
$__timeInterval(col)date_bin('<interval>', "col")
$__timeInterval_ms(col)date_bin('<interval>', "col")(毫秒)
$__interval面板间隔字面量(如 15s
$interval_s面板间隔秒数(如 15

日期过滤

Macro展开为
$__dateFilter(col)"col" >= 'YYYY-MM-DD' AND "col" <= 'YYYY-MM-DD'
$__dateTimeFilter(dc, tc)日期 + 时间组合过滤
$__dt(dc, tc)$__dateTimeFilter 的别名

特殊

Macro展开为
$__conditionalAll(col)全选 → 1=1;否则 → col IN (values)

标识符引用

插件会自动为宏中的列名添加双引号。 $__timeFilter(timestamp)$__timeFilter("timestamp") 都会展开为 "timestamp" >= 'ISO1' AND "timestamp" <= 'ISO2'date_bin 函数 不会对其列参数加引号:date_bin('15s', ts)

Native Grafana 告警

插件在后端执行查询,因此面板中的同一条 SQL(含 $__timeFilter 等时间宏)可直接用于创建 Grafana 告警规则。

配置列映射

在使用 Logs 或 Traces 查询类型之前,请先在数据源设置中配置默认列名,以便 Query Builder 自动映射。 下表示例遵循 OpenTelemetry 约定;若表结构不同,可将字段映射到你自己的列名。

Logs 配置

字段用途示例(OTel)
Default Table默认日志表genai_conversations
Time Column时间戳列timestamp
Message Column日志正文列body
Level Column日志级别列severity_text
Trace ID Column用于关联的 Trace IDtrace_id
Context Columns展开日志行时额外显示的列scope_name, trace_id

启用 Select context columns 可在日志查询中自动包含这些列。

Traces 配置

字段用途示例(OTel)
Default Table默认 Trace 表opentelemetry_traces
Trace ID ColumnTrace IDtrace_id
Span ID ColumnSpan IDspan_id
Parent Span ID ColumnParent Span IDparent_span_id
Service Name Column服务名service_name
Operation Name ColumnSpan/操作名span_name
Duration Column耗时值duration_nano
Duration Unit耗时列单位nanoseconds
Start Time ColumnSpan 开始时间timestamp
Tags ColumnSpan attributes 前缀span_attributes
Service Tags ColumnResource attributes 前缀resource_attributes

OTel 预设

如果表遵循 OpenTelemetry 约定,可启用 Use OTel 并选择版本。上方所有列字段会自动填充。你可以在数据源配置和 Query Builder 面板编辑器中开关 OTel。

启用 OTel 时,预设使用 GreptimeDB 风格的小写下划线列名(例如 trace_id 而非 TraceId),因为 GreptimeDB 不保留大小写。

完整 OTel 1.29.0 列映射:

HintColumn
Timetimestamp
LogLevelseverity_text
LogMessagebody
TraceIdtrace_id
TraceSpanIdspan_id
TraceParentSpanIdparent_span_id
TraceServiceNameservice_name
TraceOperationNamespan_name
TraceDurationTimeduration_nano
TraceTagsspan_attributes
TraceServiceTagsresource_attributes
TraceStatusCodespan_status_code
TraceEventsPrefixspan_events

内置仪表盘

插件内置两个仪表盘。配置好 GreptimeDB 数据源后:

  1. 打开 Connections → Data sources → 你的 GreptimeDB 实例
  2. 打开 Dashboards 标签页
  3. 点击仪表盘旁的 Import

内置仪表盘:

  • GreptimeDB - OTel Min Demo
  • GenAI Observability

GenAI Observability

这些仪表盘的示例数据可通过 demo-scene 中的 genai-observability demo 写入 GreptimeDB。

Prometheus 数据源

单击 Add data source 按钮,然后选择 Prometheus 作为类型。

在 HTTP 中填写 Prometheus server URL

http://<host>:4000/v1/prometheus

在 Auth 部分中单击 basic auth,并在 Basic Auth Details 中填写 GreptimeDB 的用户名和密码:

  • User: <username>
  • Password: <password>

在 Custom HTTP Headers 部分中点击 Add header:

  • Header: x-greptime-db-name
  • Value: <dbname>

然后单击 Save & Test 按钮以测试连接。

有关如何使用 PromQL 查询数据,请参阅 Prometheus 查询语言文档。

MySQL 数据源

单击 Add data source 按钮,然后选择 MySQL 作为类型。在 MySQL Connection 中填写以下信息:

  • Host: <host>:4002
  • Database: <dbname>
  • User: <username>
  • Password: <password>
  • Session timezone: UTC

然后单击 Save & Test 按钮以测试连接。

注意目前我们只能使用 raw SQL 创建 Grafana Panel。由于时间戳数据类型的区别,Grafana 的 SQL Builder 暂时无法选择时间戳字段。

关于如何用 SQL 查询数据,请参考使用 SQL 查询数据文档。