- 表:这是最简单的查询类型,用于以表格形式显示数据。无论是简单查询还是包含聚合函数的复杂查询,都适合作为通用选择。
- 日志:针对构建日志查询进行了优化。在 Explore 视图中,并配合已配置默认值 使用时效果最佳。
- 时间序列:最适合用于构建时间序列查询。支持选择专用时间列并添加聚合函数。
- 链路追踪:针对搜索和查看链路追踪进行了优化。在 Explore 视图中,并配合已配置默认值 使用时效果最佳。
- SQL Editor:当你需要完全控制查询时,可以使用 SQL Editor。在此模式下,可以执行任何 SQL 查询。
查询类型
表
此查询类型会将数据显示为表格。
日志
IS ANYTHING 选项改为其他值后才会启用。
日志查询类型支持数据链接。
| 字段 | 说明 |
|---|---|
| Use OTel | 启用 OpenTelemetry 列。会覆盖当前选中的列,改用所选 OTel schema 版本定义的列 (同时禁用列选择) 。 |
| Columns | 要添加到日志行中的额外列。此字段支持输入原始 SQL,以便使用函数和列别名。 |
| Time | 日志的主时间戳列。会显示时间类型的字段,但也允许自定义值/函数。 |
| Log Level | 可选。日志的 level 或 severity。值通常类似于 INFO、error、Debug 等。 |
| Message | 日志消息内容。 |
| Order By | ORDER BY 表达式列表。 |
| Limit | 在查询末尾追加一条 LIMIT 语句。如果设为 0,则会被排除,但对于大型日志数据集不建议这样做。 |
| Filters | 要应用于 WHERE 子句中的过滤器列表。 |
| Message Filter | 一个文本输入框,用于通过 LIKE %value% 便捷地过滤日志。输入为空时会被排除。 |
此查询类型会将数据显示在日志面板中,并在顶部附带一个日志直方图面板。 查询中选取的额外列可在展开的日志行中查看:
时间序列
- 专门的 Time 字段。
- 在 Aggregate mode 下,会自动应用时间间隔宏,并对 Time 字段执行 Group By。
- 在 Aggregate mode 下,“Columns”字段会被隐藏。
- 会自动为 Time 字段添加时间范围过滤器和 Order By。
| 字段 | 说明 |
|---|---|
| 构建器模式 | 简单查询不包含 聚合 和 Group By,而聚合查询则包含这些选项。 |
| Time | 查询的主时间列。会显示时间类型的列,但也允许使用自定义值/函数。 |
| Columns | 选中的列。可以在此字段中输入原始 SQL,以支持函数和列别名。仅在 Simple mode 下可见。 |
| 聚合 | 聚合函数 列表。支持为函数和列指定自定义值。仅在 Aggregate mode 下可见。 |
| Group By | GROUP BY 表达式列表。仅在 Aggregate mode 下可见。 |
| Order By | ORDER BY 表达式列表。 |
| Limit | 在查询末尾追加 LIMIT 语句。如果设为 0,则会省略;对于某些时间序列数据集,建议这样设置以显示完整的可视化。 |
| Filters | 将应用于 WHERE 子句的过滤器列表。 |
链路追踪
IS ANYTHING 选项改为其他值时才会启用。
链路追踪查询类型支持数据链接。
| 字段 | 描述 |
|---|---|
| Trace Mode | 将查询从 Trace Search 切换为 Trace ID 查找。 |
| Use OTel | 启用 OpenTelemetry 列。会覆盖当前已选择的列,改用所选 OTel schema 版本定义的列 (禁用列选择) 。 |
| Trace ID Column | trace 的 ID。 |
| Span ID Column | Span ID。 |
| Parent Span ID Column | 父 span ID。对于顶层链路追踪,这里通常为空。 |
| Service Name Column | 服务名称。 |
| Operation Name Column | 操作名称。 |
| Start Time Column | trace span 的主时间列,即 span 开始的时间。 |
| Duration Time Column | span 的耗时。默认情况下,Grafana 要求该值为以毫秒为单位的浮点数。系统会通过 Duration Unit 下拉菜单自动进行转换。 |
| Duration Unit | 耗时所用的时间单位。默认为纳秒。所选单位会按 Grafana 的要求转换为以毫秒为单位的浮点数。 |
| Tags Column | Span 标签。如果未使用基于 OTel 的 schema,请排除此项,因为它要求特定的 Map 列类型。 |
| Service Tags Column | 服务标签。如果未使用基于 OTel 的 schema,请排除此项,因为它要求特定的 Map 列类型。 |
| Order By | ORDER BY expressions 列表。 |
| Limit | 在查询末尾追加 LIMIT 语句。如果设置为 0,则不会包含该语句,但对于大型 trace 数据集不建议这样做。 |
| Filters | 要应用于 WHERE 子句中的过滤器列表。 |
| Trace ID | 用于过滤的 Trace ID。仅在 Trace ID 模式下,以及打开 trace ID 数据链接时使用。 |
SQL 编辑器
数据链接
表中 trace 链接示例
日志中 trace 链接示例
如何创建数据链接
traceID 的列来创建数据链接。该名称不区分大小写,也支持在 “ID” 前添加下划线。例如:traceId、TraceId、TRACE_ID 和 tracE_iD 都是有效的。
如果在日志或trace查询中启用了 OpenTelemetry,则会自动包含一个 trace ID 列。
包含 trace ID 列后,数据中会附带“View Trace”和“View Logs”链接。
链接功能
从日志查询 (左侧面板) 查看 trace (右侧面板) 的示例
宏
使用宏
$__timeFilter 宏的示例:
输入:
log_time 列。
该插件还支持使用花括号 {} 的记法。当需要在参数中嵌入查询时,请使用这种记法。
宏列表
| 宏 | 说明 | 输出示例 |
|---|---|---|
$__dateFilter(columnName) | 替换为基于所提供列的时间范围过滤器,使用 Grafana 面板的时间范围,并将其转换为 Date。 | columnName >= toDate('2022-10-21') AND columnName <= toDate('2022-10-23') |
$__timeFilter(columnName) | 替换为基于所提供列的时间范围过滤器,使用 Grafana 面板的时间范围,并将其转换为 DateTime。 | columnName >= toDateTime(1415792726) AND time <= toDateTime(1447328726) |
$__timeFilter_ms(columnName) | 替换为基于所提供列的时间范围过滤器,使用 Grafana 面板的时间范围,并将其转换为 DateTime64。 | columnName >= fromUnixTimestamp64Milli(1415792726123) AND columnName <= fromUnixTimestamp64Milli(1447328726456) |
$__dateTimeFilter(dateColumn, timeColumn) | 简写形式,使用单独的 Date 列和 DateTime 列组合 $__dateFilter() 与 $__timeFilter()。别名为 $__dt() | $__dateFilter(dateColumn) AND $__timeFilter(timeColumn) |
$__fromTime | 替换为 Grafana 面板时间范围的起始时间,并转换为 DateTime。 | toDateTime(1415792726) |
$__fromTime_ms | 替换为面板时间范围的起始时间,并转换为 DateTime64。 | fromUnixTimestamp64Milli(1415792726123) |
$__toTime | 替换为 Grafana 面板时间范围的结束时间,并转换为 DateTime。 | toDateTime(1447328726) |
$__toTime_ms | 替换为面板时间范围的结束时间,并转换为 DateTime64。 | fromUnixTimestamp64Milli(1447328726456) |
$__timeInterval(columnName) | 替换为一个根据窗口大小 (以秒为单位) 计算时间间隔的函数。 | toStartOfInterval(toDateTime(columnName), INTERVAL 20 second) |
$__timeInterval_ms(columnName) | 替换为一个根据窗口大小 (以毫秒为单位) 计算时间间隔的函数。 | toStartOfInterval(toDateTime64(columnName, 3), INTERVAL 20 millisecond) |
$__interval_s | 替换为仪表板时间间隔 (秒) 。 | 20 |
$__conditionalAll(condition, $templateVar) | 当第二个参数中的模板变量未选择全部值时,替换为第一个参数;当模板变量选择了全部值时,替换为 1=1。 | condition or 1=1 |