跳转到主内容
跳转到主内容

使用 ClickStack 实现可视化和仪表板

ClickStack 支持对事件进行可视化,并在 ClickStack UI (HyperDX) 中内置了图表功能。您可以将这些图表添加到仪表板,与其他用户共享。

可视化可以基于链路追踪、指标、日志,或任意用户自定义的宽表事件 schema 创建。

创建可视化

HyperDX 中的 Chart Explorer 界面允许你在时间维度上可视化指标、追踪和日志,从而轻松创建用于数据分析的快速可视化。该界面在创建仪表板时也会复用。下文将演示如何使用 Chart Explorer 创建一个可视化的完整流程。

每个可视化都从选择一个 数据源 开始,然后选择一个 metric,再根据需要添加 filter expressionsgroup by 字段。从概念上看,HyperDX 中的可视化对应于底层的一条 SQL GROUP BY 查询——你定义要在所选维度上聚合的指标。

AI 驱动的图表生成

ClickStack 还支持使用 text-to-chart 功能,通过自然语言提示创建图表。描述你想看到的内容,ClickStack 会自动生成可视化。

例如,可以绘制按服务名称分组的错误数量 (count()) 图表。

在下面的示例中,我们使用托管在 sql.clickhouse.com 上的远程数据集,该数据集在指南「Remote Demo Dataset」中有详细说明。你也可以访问 play-clickstack.clickhouse.com 来复现这些示例。

进入 Chart Explorer

从左侧菜单中选择 Chart Explorer

Chart Explorer

创建可视化

在下面的示例中,我们按服务名称绘制一段时间内的平均请求耗时。这需要你指定一个 metric、一列 (可以是 SQL 表达式) 以及一个聚合字段。

从顶部菜单中选择 Line/Bar 可视化类型,然后选择 Traces (或在使用 play-clickstack.clickhouse.com 时选择 Demo Traces) 数据集。填写以下值:

  • Metric: Average
  • Column: Duration/1000
  • Where: <empty>
  • Group By: ServiceName
  • Alias: Average Time
简单可视化

请注意,你可以使用 SQL WHERE 子句或 Lucene 语法来过滤事件,并设置事件可视化的时间范围。也支持多个序列。

例如,通过添加过滤条件 ServiceName:\"frontend\" 来只保留服务 frontend 的事件。通过点击 Add Series,添加第二条时间序列,用别名 Count 展示一段时间内事件的数量。

简单可视化 2
注意

可视化可以基于任意数据源创建——无论是 metrics、链路追踪 还是 logs。ClickStack 将这些全部视为宽事件 (wide events) 。任何 numeric column 都可以随时间绘制图表,而 stringdatenumeric 列都可以用于分组。

这种统一的方法允许你在不同遥测类型之间,基于一致且灵活的模型构建仪表板。

创建仪表板

仪表板提供了一种将相关可视化进行分组的方式,使用户能够将指标并排对比、挖掘模式,从而识别系统中的潜在根本原因。这些仪表板既可用于临时排查,也可以保存下来用于持续监控。

可以在仪表板级别应用全局筛选器,并自动作用于该仪表板中的所有可视化。这使得在各个图表之间进行一致的下钻分析成为可能,并简化了跨服务和遥测类型的事件关联。

下面我们使用日志和链路追踪数据源创建一个包含两个可视化的仪表板。你可以在 play-clickstack.clickhouse.com 上复现这些步骤,或者在本地通过连接托管在 sql.clickhouse.com 上的数据集进行操作,具体请参见指南 "Remote Demo Dataset"

导航到仪表板

从左侧菜单中选择 Dashboards。然后点击 New Dashboard 以创建临时仪表板或已保存的仪表板。

创建仪表板

创建可视化 – 按服务的平均请求时间

选择 Add New Tile 打开可视化创建面板。

在顶部菜单中选择 Line/Bar 可视化类型,然后选择 Traces (如果使用 play-clickstack.clickhouse.com,则选择 Demo Traces) 数据集。完成以下配置,以创建一个展示按服务名称划分、随时间变化的平均请求时长的图表:

  • 图表名称:按服务划分的平均耗时
  • 指标:Average
  • Column: Duration/1000
  • Where: <empty>
  • Group By: ServiceName
  • 别名: Average Time

在点击 Save 之前先点击 play 按钮。

创建仪表板可视化

调整可视化大小,使其占据仪表板的全部宽度。

包含可视化的仪表板

创建可视化 – 按服务的事件随时间分布

选择 Add New Tile 以打开可视化创建面板。

在顶部菜单中选择 Line/Bar 可视化类型,然后选择 Logs (如果使用 play-clickstack.clickhouse.com,则选择 Demo Logs) 数据集。完成以下配置,以创建一个展示按服务名称划分、随时间变化的事件数量的图表:

  • Chart Name: Event count by service
  • Metric: Count of Events
  • Where: <empty>
  • Group By: ServiceName
  • Alias: Count of events

在点击 Save 之前先点击 play 按钮。

仪表板可视化 2

调整可视化大小,使其占据仪表板的全部宽度。

包含可视化的仪表板 2

添加 span 耗时热力图磁贴

热力图卡片将落入每个 (时间,值) 桶中的事件数量以彩色网格的形式呈现。当你希望观察分布随时间变化的形态,而不仅仅是平均值或某个单一百分位数时,请使用热力图。延迟热力图能够揭示双峰耗时模式、慢尾集群或突发性分布扩散——这些特征在折线图中往往会被平均化而难以察觉。

要添加热力图磁贴:

  1. 选择 Add New Tile
  2. 从顶部菜单中选择 Heatmap 可视化类型。数据源下拉菜单仅显示数据源类型为 Traces 的数据源。日志、指标和会话数据源会被过滤掉,因为热力图需要 span 耗时列,而这类列只有链路追踪数据源才会提供。
  3. 按名称任选一个链路追踪数据源即可。名称本身可以随意填写,只有类型才重要。

选择数据源后,热力图将自动预填充:

  • :源中的 Duration Expression,按当前显示单位进行缩放 (例如,用 (Duration)/1e6 将每个事件的 span 耗时从纳秒转换为毫秒)
  • 计数: count()
  1. 设置图表名称,并使用 Where 将热力图限定为特定服务,或限定为一组你想观察其性能的操作。
  2. 将时间范围调整为你关注的时段。较大的时间范围更容易显现分布偏移和双峰延迟模式,而较短的时间窗口可能会掩盖这些现象。

下面的示例展示了某个服务在 24 小时窗口内的情况,其 span 耗时的快速路径与慢速路径被清晰地分隔为两条水平带。

如需进一步自定义热力图,请点击 Display Settings 打开一个抽屉面板,其中包含 Scale (对数或线性) 、ValueCount 表达式的配置项。完整的选项列表已记录在事件增量页面的自定义热力图中,使用的是同一个抽屉面板。

点击 Run 预览图表,然后点击 Save

预填了 span 耗时基本值、包含 ServiceName payment 筛选�器和 Display Settings 按钮的热力图图块编辑器

保存后的图块将在仪表板上以热力图的形式呈现。将鼠标悬停在任意单元格上,即可查看该桶的边界范围及事件数量。

展示 24 小时内 payment service span 耗时分布的热力图仪表板图块
每个热力图执行两次 ClickHouse 查询

热力图会依次执行两次查询:首先是一个小型范围查询,用于确定数值范围;然后是一个热力图查询,用于统计每个区间内的事件数量。如需查看或复制这两个查询,可在编辑器的 Generated SQL 下找到它们。

深入查看事件增量

点击已渲染热力图磁贴上的任意单元格,即可打开 View in Event Deltas (在事件增量中查看) 操作。

点击热力图单元格后显示的“在事件增量中查看”操作

选择后将打开 事件增量 视图,并自动带入该磁贴的数据源、Where 子句及时间范围。在此视图中,您可以交互式地查看相同的分布情况,按属性进行切片以了解慢速 span 与快速 span 的差异,并检查任意单元格背后的各个 span,无需手动重新构建查询。

筛选仪表板

可以在仪表板级别应用 Lucene 或 SQL 筛选器,以及时间范围设置,这些会自动作用于所有可视化。

带筛选的仪表板

作为示例,在仪表板上应用 Lucene 筛选器 ServiceName:"frontend",并将时间窗口修改为最近 3 小时。此时可视化将仅反映来自 frontend 服务的数据。

仪表板会自动保存。要设置仪表板名称,选择标题并修改,然后点击 Save Name

保存仪表板

仪表板 - 编辑可视化

要删除、编辑或复制可视化,将鼠标悬停其上,然后使用相应的操作按钮。

编辑仪表板

仪表板 - 列表与搜索

可以在仪表板页面查看仪表板。它们按标签组织,并提供内置搜索和筛选功能,以便快速查找特定仪表板。

可以将仪表板添加到收藏夹,以便在侧边栏和列表页面顶部快速访问。收藏夹对每个用户都是独立的。

Dashboard search

仪表板 - 标签

您可以为仪表板和已保存搜索添加标签,以便组织和管理它们。 标签提供了一种灵活的方式,可根据您的需要进行分类和筛选。

标签的工作方式

  • 组织:标签会显示在左侧边栏中,仪表盘和已保存的搜索会根据分配的标签进行分组
  • 多标签:你可以为单个项目添加一个或多个标签,以便更好地分类
  • 自动创建:如果你分配的标签尚不存在,系统会自动创建该标签
  • 便捷管理:你可以随时添加或移除标签,以调整你的组织结构

这样,当你的集合不断增长时,就能轻松找到相关项目,并保持工作空间井然有序。

已保存搜索中的标签

你也可以选择多个标签,在不同类别之间筛选并查看项目:

在仪表盘中选择多个标签

自定义筛选器

除了所有仪表板都支持的自由文本筛选器外,已保存的仪表板还支持自定义下拉筛选器,其选项由从 ClickHouse 查询得到的数据填充。这类筛选器提供可复用的点选式筛选控件,使仪表板查看者无需手动编写表达式即可进行筛选。

显示可用服务名称的服务下拉筛选器

以下步骤演示如何为“创建仪表板”部分中创建的仪表板添加自定义筛选器。

打开“编辑筛选器”对话框

打开一个已保存的仪表板,然后在工具栏中选择编辑筛选器

仪表板工具栏中的“编辑筛选器”按钮

添加新筛选器

点击添加新筛选器。通过填写名称、选择数据源并输入筛选表达式来配置筛选器——即一个 SQL 列或表达式,其去重后的值将填充到下拉列表中。点击保存筛选器

例如,要为链路追踪数据添加服务筛选器,可使用 ServiceName 作为筛选表达式,并选择 Traces 数据源。下拉值筛选器为可选项,可用于限制下拉列表中显示的值。

包含“名称”、“数据源”和“筛选表达式”字段的“添加筛选��器”对话框

“筛选器”弹窗会显示为该仪表板配置的所有筛选器。你可以在此编辑或删除现有筛选器,也可以添加其他筛选器。

显示已配置 Services 筛选器的“筛选器”弹窗

使用筛选器

关闭“筛选器”弹窗。新的下拉筛选器会显示在搜索栏下方。点击它可查看可用值,然后选择一个值,以筛选该仪表板上的所有可视化内容。

已筛选到 frontend 服务的仪表板

(可选) 将筛选值保存为默认值

若要将某个筛选选择保存为仪表板的默认值,请在仪表板菜单中选择将查询和筛选器保存为默认值。之后,该仪表板打开时将始终应用所选筛选器。若要重置,请从同一菜单中选择移除默认查询和筛选器

显示“将查询和筛选器保存为默认值”选项的仪表板菜单
注意

自定义下拉筛选器可用于已保存的仪表板。有关此模式实际应用的示例,请参见 Kubernetes 仪表板,其中为 pod (容器组) 、部署、节点名称、命名空间和集群提供了内置下拉筛选器。

下钻至搜索

仪表板图块支持下钻到“搜索”页面。在可视化中单击某个数据点,会打开一个包含以下选项的上下文菜单:

  • 查看所有事件 — 跳转到“搜索”页面,显示所选时间窗口内的所有事件。
  • 按组筛选 — 跳转到“搜索”页面,并按特定序列进行筛选。
显示“查看所有事件”和“按组筛选”选项的下钻上下文菜单

这对于调查在仪表板中发现的特定峰值或异常非常有用——您可以快速从聚合视图切换到其底层的单个事件。

预设

HyperDX 部署时即提供开箱即用的仪表板。

ClickHouse 仪表盘

此仪表盘提供用于监控 ClickHouse 的可视化界面。要打开该仪表盘,请在左侧菜单中选择它。

ClickHouse 仪表盘

此仪表盘通过选项卡分别监控 SelectsInsertsClickHouse Infrastructure

所需 system 表访问权限

此仪表盘会查询 ClickHouse 的 system 表 以展示关键指标。需要以下授权:

GRANT SHOW COLUMNS, SELECT(CurrentMetric_MemoryTracking, CurrentMetric_S3Requests, ProfileEvent_OSCPUVirtualTimeMicroseconds, ProfileEvent_OSReadChars, ProfileEvent_OSWriteChars, ProfileEvent_S3GetObject, ProfileEvent_S3ListObjects, ProfileEvent_S3PutObject, ProfileEvent_S3UploadPart, event_time) ON system.metric_log

GRANT SHOW COLUMNS, SELECT(active, database, partition, rows, table) ON system.parts

GRANT SHOW COLUMNS, SELECT(event_date, event_time, memory_usage, normalized_query_hash, query, query_duration_ms, query_kind, read_rows, tables, type, written_bytes, written_rows) ON system.query_log

GRANT SHOW COLUMNS, SELECT(event_date, event_time, hostname, metric, value) ON system.transposed_metric_log

Services 仪表板

Services 仪表板会基于链路追踪数据展示当前处于活动状态的服务。使用该功能前,您需要先采集链路追踪 并配置一个有效的 链路追踪 数据源。

服务名称会从 trace 数据中自动识别,并通过一系列预构建的可视化展示,这些视图分布在三个选项卡中:HTTP Services、Database 和 Errors。

可视化可以使用 Lucene 或 SQL 语法进行筛选,并且可以调整时间窗口以便进行更聚焦的分析。

ClickHouse services

Kubernetes 仪表盘

此仪表盘允许你探索通过 OpenTelemetry 收集的 Kubernetes 事件。它提供高级筛选选项,使你能够按 Kubernetes pod(容器组)、Deployment(部署)、节点名称、命名空间和集群进行筛选,并执行自由文本搜索。

为便于导航,Kubernetes 数据被划分到三个选项卡中:Pods(容器组)、Nodes(节点)和 Namespaces(命名空间)。

ClickHouse kubernetes