关于 altinity-expert-clickhouse-overview
面向 ClickHouse 运维人员的诊断技能,用于概览服务器健康状况并指引后续排查方向。它运行指定的 SQL 检查包,并提供结果解读和报告规则。
主要功能
- 0114 项系统健康检查
- 0213 项阈值告警检查
- 03需 Keeper 的 DDL 队列检查
- 04结果解读规则
- 05指引后续专项技能
适用场景
- 01检查 ClickHouse 服务器健康状况
- 02发现内存或磁盘使用过高
- 03检查错误率和分离部件
- 04选择后续排查的专项技能
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ altinity/ altinity-skills --skill altinity-expert-clickhouse-overview安装后在 Claude Code 中输入/altinity-expert-clickhouse-overview确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
checks.sqlddl_queue.sqlmetrics.sql详细介绍
健康概览与路由
回答“此服务是否健康,以及哪个方面需要进一步检查?”,依据 system.metrics、system.asynchronous_metrics、system.parts、system.disks、system.tables、system.query_log、system.errors 和 system.text_log。此技能专为单主机设计;副本间的差异应交由专门技能处理。
如果尚未确定连接模式、集群和时间窗口,请先运行 altinity-expert-clickhouse-connection。
查询包
checks.sql— 14 项检查:对象数量、内存与 RAM 对比、主键和字典的 RAM 占用、磁盘使用情况、复制摘要、系统日志 TTL 和大小、每小时查询错误率、part_log 错误、system.errors错误代码排行、分离的分区、text_log中的近期警告、后台线程池利用率。metrics.sql— 13 项警报检查(ID 为A3.0.x),仅在超过阈值时返回行;结果为空表示正常。检查 A3.0.4 和 A3.0.5 各有两个特定版本的备选项(@requires version<26.8/version>=26.8):运行与服务版本匹配的那一个。ddl_queue.sql— 1 项 ON CLUSTER DDL 队列检查;需要keeper。
如何运行查询包
- 从此技能的目录读取每个查询包文件(技能加载器会输出目录路径)。
- 一次运行一条语句,不要运行整个文件。语句以
;结尾,并以-- @check <id> <title>标头开头;将 ID 与结果一同保留。 - 遵循
-- @requires:如果所需表不存在、需要keeper但服务没有 Keeper/ZooKeeper,或不满足版本条件,则跳过该语句。列出跳过的 ID 及原因。 - 如果存在集群宏,按原样保留
{cluster};否则遵循连接技能中的改写规则。任何其他{placeholder}都是模板变量:先替换为实际值,否则跳过该语句。 - 出错时,记录检查 ID 和错误的第一行,然后继续。只有遇到
UNKNOWN_IDENTIFIER时,才运行DESCRIBE TABLE system.<table>并移除缺失的列。 severity列是该行的判定结果。照原样复制;不要重新评级。
解读规则
metrics.sql中未返回行的检查表示正常;在正常项一行中列出这些 ID。Minor行仅供参考,不属于问题。- 没有 TTL 的系统日志表(overview-07)属于问题;在其旁边引用 overview-08 中的大小。只有当最大的未设置 TTL 的表超过数 GiB,或磁盘使用率超过 70% 时,才转交日志技能。
- 错误率(overview-09):说明故障是持续发生还是突然激增,并列出 overview-11 中排名靠前的错误代码。忽略由本次诊断会话自身引发的错误代码(UNKNOWN_IDENTIFIER、UNKNOWN_TABLE、SYNTAX_ERROR)。
- 对象数量(overview-01)和分区数量是整个服务范围的数据。如果最大的分区数量或大小来自
system.*表,应明确说明,而不是归咎于用户表。 - 原因是
broken*、unexpected*、ignored*的分离分区(overview-12)表明存在复制或磁盘问题;clone和covered-by-broken通常可以安全删除。 - 如果 MergesAndMutations 的后台线程池利用率(overview-14)超过 90%,说明合并受容量限制,不一定是数据量所致。
- 如果
has_keeper = 0,应将复制和 DDL 队列检查标记为不适用,而非正常。
报告格式
- 标题:连接模式、集群或“单节点”、ClickHouse 版本、时间窗口。
- 问题:包含
check、severity、object、evidence、recommendation列的表格;每个问题占一行,按 Critical 优先排列。证据需引用结果行中的数字。 - 正常检查:用一行列出未返回问题行的检查 ID。
- 跳过和失败的检查:列出 ID 和原因或错误的第一行。不得省略此部分。
- 后续步骤:列出接下来要加载的技能和需要立即采取的行动。
后续技能
- 只读副本、副本延迟、复制队列增长、text_log 中的 Keeper 错误 → 加载技能
altinity-expert-clickhouse-replication - 内存使用量超过 RAM 的 80%、主键或字典占用大量 RAM、出现 MEMORY_LIMIT_EXCEEDED 错误 → 加载技能
altinity-expert-clickhouse-memory - 磁盘使用量超过 80% 或系统日志表过大 → 加载技能
altinity-expert-clickhouse-storage(磁盘)或altinity-expert-clickhouse-logs(日志 TTL) - 每个分区包含大量 part、出现 TOO_MANY_PARTS、MergesAndMutations 池已饱和、part_log 中出现合并错误 → 加载技能
altinity-expert-clickhouse-merges - 查询错误率高或 SELECT 执行缓慢 → 加载技能
altinity-expert-clickhouse-reporting - INSERT 执行缓慢或失败、NewPart 速率高 → 加载技能
altinity-expert-clickhouse-ingestion - Kafka 消费者数量超过池大小,或 text_log 中出现 Kafka 警告 → 加载技能
altinity-expert-clickhouse-kafka - 字典加载失败或字典占用大量 RAM → 加载技能
altinity-expert-clickhouse-dictionaries - part_log 错误中出现卡住或失败的变更 → 加载技能
altinity-expert-clickhouse-mutations - system.errors 中出现 ACCESS_DENIED 或身份验证错误 → 加载技能
altinity-expert-clickhouse-grants - 随时间推移出现负载、连接或连接池饱和 → 加载技能
altinity-expert-clickhouse-metrics - 怀疑存在架构反模式(分区、ORDER BY、物化视图)→ 加载技能
altinity-expert-clickhouse-schema
评论
支持 Markdown