SuperAPI AI 工具集

clickhouse-debug-bundle

部署与运维

查看项目

更新于 10-15 22:42

技能介绍

用途:从 ClickHouse 的 system.* 系统表收集诊断数据,用于排查性能问题、合并(merge)问题或提交支持工单。技能按服务器健康、磁盘与表健康、查询性能、合并与变更状态四类执行一组查询,并把输出打包成单个产物。

前提条件:需要能访问 ClickHouse 服务器,并对 system.* 表有 SELECT 权限(必要时可 GRANT SELECT ON system.* 给受限用户);需要 curl(HTTP 接口,端口 8123)或 clickhouse-client;连接信息通过环境变量提供,避免硬编码凭据:CLICKHOUSE_HOST、CLICKHOUSE_USER、CLICKHOUSE_PASSWORD;深度查询日志分析需服务器启用 log_queries = 1。

主要能力与用法:第一步查看服务器版本、运行时长与当前负载指标(system.metrics);第二步检查磁盘与表健康,例如查找活跃分区过多的表:SELECT database, table, count() AS parts FROM system.parts WHERE active GROUP BY database, table HAVING parts > 100 ORDER BY parts DESC; 第三步从 system.query_log 分析最近 24 小时的慢查询、失败查询与归一化查询模式;第四步检查 system.merges、system.mutations、system.replicas,发现卡住的合并、长时间变更或落后的副本。第五步可运行自动化收集脚本生成一次性产物:CLICKHOUSE_HOST=http://localhost:8123 CLICKHOUSE_USER=default CLICKHOUSE_PASSWORD=secret ./clickhouse-debug-bundle.sh。

输出:自动化收集器生成带时间戳的 gzip 压缩包 ch-debug-YYYYMMDD-HHMMSS.tar.gz,内含 version.txt、metrics.tsv、events.tsv、tables.tsv、merges.tsv、errors.tsv、replicas.tsv 等按诊断区域划分的文件;交互式运行则直接返回各查询结果集;Node.js 收集器返回按诊断区域为键的单个 JSON 对象,单个查询失败时对应键为 { error }。

限制与错误处理:system.query_log 为空说明未启用日志,需设置 log_queries = 1;system 表权限被拒需授予 SELECT;产物过大可缩小 INTERVAL 时间窗口;system.replicas 报错在非复制表下属预期,收集器会忽略;连接被拒需核对 CLICKHOUSE_HOST(HTTP 接口为 8123)。完整可运行查询与两个收集脚本见 references/diagnostic-queries.md 与 references/collectors.md。