任何查询都可以通过 ClickHouse 插件运行。
对于较简单的查询,查询构建器是个很方便的选择;但对于复杂查询,则需要使用 SQL Editor。
查询构建器中的所有查询都有一种查询类型,并且至少需要选择一列。
可用的查询类型包括:
- 表:这是最简单的查询类型,用于以表格形式显示数据。无论是简单查询还是包含聚合函数的复杂查询,都适合作为通用选择。
- 日志:针对构建日志查询进行了优化。在 Explore 视图中,并配合已配置默认值 使用时效果最佳。
- 时间序列:最适合用于构建时间序列查询。支持选择专用时间列并添加聚合函数。
- 链路追踪:针对搜索和查看链路追踪进行了优化。在 Explore 视图中,并配合已配置默认值 使用时效果最佳。
- SQL Editor:当你需要完全控制查询时,可以使用 SQL Editor。在此模式下,可以执行任何 SQL 查询。
查询类型设置会调整查询构建器的布局,以匹配当前正在构建的查询类型。
查询类型还决定了在数据可视化时使用哪个面板。
最灵活的查询类型是表查询。它是一种通用查询类型,涵盖了其他用于处理简单查询和聚合查询的查询构建器。
此查询类型会将数据显示为表格。
日志查询类型提供了一个专门用于查询日志数据的查询构建器。
可以在数据源的日志配置中设置默认值,以便查询构建器预加载默认的数据库/表和列。
还可以启用 OpenTelemetry,以根据 schema 版本自动选择列。
默认会添加 Time 和 Level 过滤器,以及基于 Time 列的 Order By。
这些过滤器与各自的字段相关联,并会随着列的变化而更新。
Level 过滤器默认不会包含在 SQL 中,只有将其从 IS ANYTHING 选项改为其他值后才会启用。
日志查询类型支持数据链接。
此查询类型会将数据显示在日志面板中,并在顶部附带一个日志直方图面板。
查询中选取的额外列可在展开的日志行中查看:
时间序列查询类型与表类似,但更侧重于时间序列数据。
这两种视图大致相同,但有以下几个显著区别:
- 专门的 Time 字段。
- 在 Aggregate mode 下,会自动应用时间间隔宏,并对 Time 字段执行 Group By。
- 在 Aggregate mode 下,“Columns”字段会被隐藏。
- 会自动为 Time 字段添加时间范围过滤器和 Order By。
你的可视化是否缺少数据?在某些情况下,时间序列面板看起来会像被截断了一样,因为 limit 默认为 1000。可尝试将 LIMIT 子句设为 0 以移除它 (前提是你的数据集允许这样做) 。
此查询类型会使用时间序列面板来渲染数据。
链路追踪查询类型提供了一个查询构建器,便于轻松搜索和查看链路追踪。
它专为 OpenTelemetry 数据设计,但也可以通过选择列来渲染来自其他 schema 的链路追踪。
可以在数据源的trace 配置中设置默认值,以便为查询构建器预加载默认的 database/table 和列。如果已配置默认值,列选择默认会折叠。
还可以启用 OpenTelemetry,根据 schema 版本自动选择列。
系统会添加默认过滤器,以便仅显示顶层 spans。
此外,还会包含针对 Time 和 Duration Time 列的 ORDER BY。
这些过滤器与各自对应的字段绑定,并会随着列的更改而更新。
Service Name 过滤器默认不会包含在 SQL 中,只有将其从 IS ANYTHING 选项改为其他值时才会启用。
链路追踪查询类型支持数据链接。
此查询类型在 Trace Search 模式下会以表格视图渲染数据,在 Trace ID 模式下会以 trace 面板渲染数据。
对于过于复杂、无法通过查询构建器处理的查询,你可以使用 SQL Editor。
它允许你直接编写并运行原生 ClickHouse SQL,从而完全掌控查询。
可通过在查询编辑器顶部选择“SQL Editor”来打开 SQL 编辑器。
在此模式下,仍然可以使用宏函数。
你可以在不同的查询类型之间切换,以获得最适合查询的可视化效果。
即使在仪表板视图中,这种切换也会产生影响,尤其是在处理时间序列数据时。
Grafana 的 数据链接
可用于跳转到新的查询。
ClickHouse 插件已启用此功能,可在 trace 和日志之间相互跳转。如果在数据源配置中同时为日志和链路追踪配置了 OpenTelemetry,则效果最佳。
表中 trace 链接示例
日志中 trace 链接示例
你可以通过在查询中选择一个名为 traceID 的列来创建数据链接。该名称不区分大小写,也支持在 “ID” 前添加下划线。例如:traceId、TraceId、TRACE_ID 和 tracE_iD 都是有效的。
如果在日志或trace查询中启用了 OpenTelemetry,则会自动包含一个 trace ID 列。
包含 trace ID 列后,数据中会附带“View Trace”和“View Logs”链接。
配置了数据链接后,你可以使用提供的 trace ID 打开 trace 和日志。
“View Trace”会在分栏面板中打开该 trace,“View Logs”则会打开一个按 trace ID 过滤的日志查询。
如果该链接是从仪表板而不是 Explore 视图中点击的,则会在 Explore 视图的新标签页中打开。
跨查询类型跳转时 (日志到链路追踪,以及链路追踪到日志) ,必须同时为 logs 和 链路追踪 配置默认值。打开相同查询类型的链接时则不需要默认值,因为可以直接复制该查询。
从日志查询 (左侧面板) 查看 trace (右侧面板) 的示例
宏是一种为查询添加动态 SQL 的简便方式。
在查询发送到 ClickHouse server 之前,插件会先展开宏,并将其替换为完整的表达式。
SQL Editor 和 Query Builder 中的查询都可以使用宏。
宏可在查询中的任意位置使用,必要时可多次使用。
下面是使用 $__timeFilter 宏的示例:
输入:
最终查询结果:
在此示例中,Grafana 仪表板的时间范围会应用于 log_time 列。
该插件还支持使用花括号 {} 的记法。当需要在参数中嵌入查询时,请使用这种记法。
以下是插件中所有可用宏的列表: