跳转到主要内容
所有 ClickHouse 实例都自带一组位于 system 数据库中的系统表,其中包含以下信息:
  • 服务器状态、进程和环境。
  • 服务器内部进程。
  • 构建 ClickHouse 二进制文件时使用的选项。
直接查询这些表有助于监控 ClickHouse 部署,尤其适用于深入查看内部信息和进行调试。

使用 ClickHouse Cloud 控制台

ClickHouse Cloud 控制台内置了可用于查询系统表的 SQL 控制台仪表盘工具。例如,下面的查询展示了在过去两小时内新建了多少个 parts (以及创建频率) :
SELECT
    count() AS new_parts,
    toStartOfMinute(event_time) AS modification_time_m,
    table,
    sum(rows) AS total_written_rows,
    formatReadableSize(sum(size_in_bytes)) AS total_bytes_on_disk
FROM clusterAllReplicas(default, system.part_log)
WHERE (event_type = 'NewPart') AND (event_time > (now() - toIntervalHour(2)))
GROUP BY
    modification_time_m,
    table
ORDER BY
    modification_time_m ASC,
    table DESC
更多示例查询如需查看更多监控查询,请参阅以下资源:您还可以使用这些查询在 Cloud Console 中创建自定义仪表板

内置高级可观测性仪表板

ClickHouse 内置了高级可观测性仪表板功能,可通过 $HOST:$PORT/dashboard 访问 (需要用户名和密码) ,显示 system.dashboards 中包含的 Cloud 概览指标。
此仪表板需要直接对 ClickHouse 实例进行身份验证,并且独立于 Cloud Console 高级仪表板;后者可通过 Cloud Console 界面访问,无需额外身份验证。
有关可用可视化内容以及如何使用它们进行故障排查的更多信息,请参阅高级仪表板文档

跨节点和版本查询

为了全面查看整个集群,用户可以结合使用 clusterAllReplicas 函数和 merge 函数。clusterAllReplicas 函数支持跨 “default” 集群中的所有副本查询系统表,并将各节点的数据汇总为统一结果。与 merge 函数结合使用时,它可用于访问集群中特定表的全部系统数据。 例如,要查找过去一小时内所有副本中运行时间最长的前 5 个查询:
SELECT
    type,
    event_time,
    query_duration_ms,
    query,
    read_rows,
    tables
FROM clusterAllReplicas(default, system.query_log)
WHERE event_time >= (now() - toIntervalMinute(60)) AND type = 'QueryFinish'
ORDER BY query_duration_ms DESC
LIMIT 5
FORMAT VERTICAL
这种方法对于监控和调试整个集群范围内的操作尤其有价值,能帮助用户更有效地分析其 ClickHouse Cloud 部署的健康状况和性能。 更多详情,请参见跨节点查询

系统注意事项

直接查询系统表会增加生产服务的查询负载,导致 ClickHouse Cloud 实例无法进入闲置状态 (这可能会影响成本) ,并使监控可用性依赖于生产系统的健康状况。如果生产系统发生故障,监控也可能受到影响。
如果需要与生产环境隔离的实时生产监控,建议使用与 Prometheus 兼容的指标端点Cloud Console 仪表盘。这两者都使用预先抓取的指标,不会向底层服务发出查询。
最后修改于 2026年6月10日