用途:回答“系统日志是否可用、是否在吃磁盘”这一问题,数据来自 system.tables、system.parts、system.disks、system.query_thread_log 和 system.crash_log。其他技能依赖这些表,因此当某个技能包返回空数据时应先运行本技能。若连接模式、集群和时间窗口尚未确定,先运行 altinity-expert-clickhouse-connection。
主要能力:checks.sql 包含 6 项检查,输出 Altinity 编号 A0.2.01 至 A0.2.08,覆盖 query_log 与 part_log 新鲜度、query_log 数据超过 30 天、系统日志表缺少 TTL、系统日志占用磁盘超过 20%、版本升级遗留的 system.*_logN 表、query_thread_log 仍启用、以及近期 crash_log 记录。每条语句仅在规则被违反时返回行,空结果即正常。A0.2.01 需要 system.part_log,A0.2.07 需要 system.query_thread_log,A0.2.08 需要 system.crash_log,表不存在时跳过。reference.md 提供背景(设置、容量规划、反模式),仅在需要解释建议时阅读。
使用方式:从本技能目录读取查询包文件,逐条执行语句而非整个文件;语句以 ; 结尾并以 -- @check <id> <title> 开头,结果需保留 id。遵守 -- @requires:表缺失、需要 keeper 而服务器无 Keeper/ZooKeeper、或版本条件不满足时跳过,并列出跳过的 id 与原因。存在集群宏时保留 {cluster} 原样,否则按连接技能的改写规则处理;其他 {placeholder} 需先替换为真实值或跳过。出错时记录检查 id 与错误首行后继续;仅对 UNKNOWN_IDENTIFIER 执行 DESCRIBE TABLE system.<table> 并去掉缺失列。severity 列即该行结论,直接复制,不要重新评级。
解释规则:query_log 或 part_log 无新记录表示日志被禁用或服务器刚重启,而非空闲,应作为依赖这些表的技能的阻塞项报告。无 TTL 的系统日志表会持续增长直至磁盘写满,建议保留期(用 ALTER TABLE system.<name> MODIFY TTL event_date + INTERVAL <n> DAY 应用):query_log 7-30 天;query_thread_log 禁用或 3 天;part_log 14-30 天;trace_log 3-7 天;text_log 7-14 天;metric_log 7-14 天;asynchronous_metric_log 7-14 天;crash_log 90 天以上。system._log1、_log2 等为升级残留,不再被读取,旧数据无需后可删除。query_thread_log 启用在任何繁忙服务器上都是问题,除非特定调查需要按线程数据,否则应在配置中禁用。近期 crash_log 行表示服务器崩溃而非仅重启,需与 uptime 及 system.text_log 警告关联。修改系统日志表 TTL 只影响未来清理,回收已有空间需 TRUNCATE TABLE system.<name> 或删除旧分区。
报告格式:头部含连接模式、集群或“单节点”、ClickHouse 版本、时间窗口;发现项表格列为 check、severity、object、evidence、recommendation,每行一个发现,Critical 优先,evidence 引用结果行中的数字;OK 检查用一行列出无问题行的检查 id;跳过与失败检查必须列出 id 及原因或错误首行,不可省略;最后给出下一步技能与即时操作。
后续技能:系统日志占磁盘比例大或磁盘接近满,加载 altinity-expert-clickhouse-storage;part_log 存在且新鲜、需分析 part 或 merge 活动,加载 altinity-expert-clickhouse-part-log;有崩溃记录或反复重启,加载 altinity-expert-clickhouse-metrics;query_log 健康且需分析慢查询或失败查询,加载 altinity-expert-clickhouse-reporting;整体服务器健康仍未知,加载 altinity-expert-clickhouse-overview。
限制:具体命令与检查逻辑以技能文件为准;本技能不提供收费、平台或效果信息,资料未涉及。