决赛作品
Kausal 是面向 Linux/openKylin 的持续诊断程序:采集 CPU、内存、I/O、系统调用和锁证据,将原始指标经候选、事实、规则、事件和全局 RCA 流水线写成可追溯报告。
./build.sh --clean ctest --test-dir build --output-on-failure bash demo/一键工程验收.sh
需要内核能力的验收使用 tests/tools/build/ci_local.sh --with-root --with-stress。持续服务安装见 docs/安装部署说明.md,五场景复现入口为 demo/一键五场景复现.sh。
tests/tools/build/ci_local.sh --with-root --with-stress
docs/安装部署说明.md
demo/一键五场景复现.sh
项目负责本机诊断证据采集、规则判定、生命周期闭环、RCA 报告及安全压力验收。它不替代容量规划、应用业务追踪或跨主机 APM,也不会通过运行时目标注册直接制造异常结论。目标进程身份始终使用 PID + starttime;I/O、锁和 syscall 还验证各自对象身份。
kausal-diagnose.service
WindowSnapshot
DomainFrame
trace_reference
report/normal/<领域>/<日期>/i<incident>-<稳定哈希>/
report.json
kausal.diagnosis.report.v4.schema.json
summary.json
kausal.diagnosis.summary.v4.schema.json
evidence.json
diagnose.rca.timeline.v1
report/scenarios/<场景>/<日期>/<场景运行标识>/i<incident>-<稳定哈希>/
operation.log
scenario-result.json
report/_internal/batches/<服务运行标识>/
diagnose.rca.summary.v1
CMakeLists.txt
src/
src/include/
src/config/rule-coverage-manifest.json
src/config/stress-scenarios.json
tests/stress/diag_stress.sh
tests/tools/build/stage12_acceptance.sh
tests/python/stage8_perf_contract_test.py
tests/python/stage8_device_topology_contract_test.py
tests/python/timeline_report_validator_test.py
前台运行:sudo -E ./build/diagnose;有限窗口运行:sudo -E ./build/diagnose 10。环境变量的唯一完整清单见 docs/参数配置说明.md,常用项包括 DIAG_TARGET_PID、DIAG_REPORT_DIR、DIAG_INCIDENT_REPORT_UPDATE_MS、DIAG_WINDOW_MS 和 DIAG_GATE_SOFT_N。
sudo -E ./build/diagnose
sudo -E ./build/diagnose 10
docs/参数配置说明.md
DIAG_TARGET_PID
DIAG_REPORT_DIR
DIAG_INCIDENT_REPORT_UPDATE_MS
DIAG_WINDOW_MS
DIAG_GATE_SOFT_N
真实五场景诊断可执行:
sudo -E ./tests/stress/diag_stress.sh run all --level diagnosis python3 tests/performance/stage8_perf_harness.py summarize --input-dir /var/tmp/kausal-perf python3 tests/tools/validation/stage8_device_topology.py --help python3 tests/tools/validation/platform_capability_matrix.py probe --output report/platform/platform-capability-matrix.json
持久化正式报告是 canonical incident 目录中的 diagnose.rca.timeline.v1。START 创建 ongoing revision,内容变化按配置节流更新,END 在同一目录立即写入 closed revision。报告验证 correlation、服务会话、PID/starttime、场景对象、允许规则、时间窗口、结论性、数据质量和 START/END。示例:
ongoing
closed
{ "schema": "diagnose.rca.timeline.v1", "collector_session_id": 42, "report_status": "closed", "report_revision": 3, "runtime_target": { "request_id": "req-1", "correlation_id": "corr-1", "scenario": "cpu", "service_session_id": "boot:123:456", "mixed": false }, "lifecycle_complete": true, "event_lifecycle": {"start_seen": true, "end_seen": true}, "is_conclusive": true }
详细字段、内部 alert 模型与正式落盘边界见 docs/系统设计说明.md;规则输入链见 docs/规则数据合同.md。
docs/系统设计说明.md
docs/规则数据合同.md
eBPF 加载、systemd 安装、内核日志读取和真实压力验收通常需要 root。脚本限制内存分配、保留安全余量且禁止故意 OOM;所有临时进程和运行时目标都必须清理。不要在生产主机上跳过预检或擅自降低阈值。
本地快速检查使用 tests/tools/build/ci_local.sh;完整顺序和真实验收合同见 docs/测试与复现说明.md。报告验证必须使用 tests/tools/validation/validate_timeline_reports.py 并指定目标领域。Python 命令统一设置 PYTHONDONTWRITEBYTECODE=1,避免污染提交。
tests/tools/build/ci_local.sh
docs/测试与复现说明.md
tests/tools/validation/validate_timeline_reports.py
PYTHONDONTWRITEBYTECODE=1
docs/使用说明.md
docs/平台能力矩阵.md
docs/评委可读摘要与因果图.md
docs/限制与已知问题.md
docs/工程质量评审索引.md
docs/代码规范与贡献指南.md
docs/第三方组件与开源合规说明.md
docs/变更记录.md
内核能力、BTF、tracepoint、块设备与 systemd 环境差异可能导致明确跳过或降级;跳过项不计为通过。先查看 canonical report.json/summary.json、服务日志、场景 operation.log 以及数据质量字段;内部运行审计再查看 _internal/batches/<服务运行标识>/run-meta.json,详见 docs/限制与已知问题.md。
_internal/batches/<服务运行标识>/run-meta.json
项目许可证见 LICENSE。libbpf 等第三方来源、许可证和构建边界见 docs/第三方组件与开源合规说明.md;贡献流程见 docs/代码规范与贡献指南.md。
LICENSE
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
Kausal Linux eBPF 诊断系统
Kausal 是面向 Linux/openKylin 的持续诊断程序:采集 CPU、内存、I/O、系统调用和锁证据,将原始指标经候选、事实、规则、事件和全局 RCA 流水线写成可追溯报告。
快速开始
需要内核能力的验收使用
tests/tools/build/ci_local.sh --with-root --with-stress。持续服务安装见docs/安装部署说明.md,五场景复现入口为demo/一键五场景复现.sh。项目目标与职责边界
项目负责本机诊断证据采集、规则判定、生命周期闭环、RCA 报告及安全压力验收。它不替代容量规划、应用业务追踪或跨主机 APM,也不会通过运行时目标注册直接制造异常结论。目标进程身份始终使用 PID + starttime;I/O、锁和 syscall 还验证各自对象身份。
功能概览
kausal-diagnose.service,按需注册带 correlation ID 的场景目标并等待 ACK。WindowSnapshot汇总窗口原始指标,DomainFrame描述领域数据质量,trace_reference回指正式证据。report/normal/<领域>/<日期>/i<incident>-<稳定哈希>/;report.json按kausal.diagnosis.report.v4.schema.json输出精简结构化结果,所有展示时间为北京时间;summary.json按kausal.diagnosis.summary.v4.schema.json只保留“综合分析结论”对象,其子字段和数组在 JSON 文件中直接物理分行;完整审计证据保存在同目录evidence.json(diagnose.rca.timeline.v1)。report/scenarios/<场景>/<日期>/<场景运行标识>/i<incident>-<稳定哈希>/,同一运行目录只额外保存operation.log,不生成scenario-result.json。report/_internal/batches/<服务运行标识>/,仅用于服务运行级审计;其中summary.json是内部diagnose.rca.summary.v1,不等同于 incident 摘要。工程结构
CMakeLists.txt:项目构建入口及测试注册。src/、src/include/:采集、诊断、生命周期和报告生产代码。src/config/rule-coverage-manifest.json、src/config/stress-scenarios.json:规则和场景合同。tests/stress/diag_stress.sh、tests/tools/build/stage12_acceptance.sh:压力复现与真实验收。tests/python/stage8_perf_contract_test.py、tests/python/stage8_device_topology_contract_test.py、tests/python/timeline_report_validator_test.py:性能、拓扑和正式报告合同测试。运行与配置
前台运行:
sudo -E ./build/diagnose;有限窗口运行:sudo -E ./build/diagnose 10。环境变量的唯一完整清单见docs/参数配置说明.md,常用项包括DIAG_TARGET_PID、DIAG_REPORT_DIR、DIAG_INCIDENT_REPORT_UPDATE_MS、DIAG_WINDOW_MS和DIAG_GATE_SOFT_N。真实五场景诊断可执行:
输出合同
持久化正式报告是 canonical incident 目录中的
diagnose.rca.timeline.v1。START 创建ongoingrevision,内容变化按配置节流更新,END 在同一目录立即写入closedrevision。报告验证 correlation、服务会话、PID/starttime、场景对象、允许规则、时间窗口、结论性、数据质量和 START/END。示例:详细字段、内部 alert 模型与正式落盘边界见
docs/系统设计说明.md;规则输入链见docs/规则数据合同.md。权限与安全
eBPF 加载、systemd 安装、内核日志读取和真实压力验收通常需要 root。脚本限制内存分配、保留安全余量且禁止故意 OOM;所有临时进程和运行时目标都必须清理。不要在生产主机上跳过预检或擅自降低阈值。
测试与验收
本地快速检查使用
tests/tools/build/ci_local.sh;完整顺序和真实验收合同见docs/测试与复现说明.md。报告验证必须使用tests/tools/validation/validate_timeline_reports.py并指定目标领域。Python 命令统一设置PYTHONDONTWRITEBYTECODE=1,避免污染提交。文档索引
docs/安装部署说明.mddocs/使用说明.mddocs/参数配置说明.mddocs/系统设计说明.mddocs/平台能力矩阵.mddocs/评委可读摘要与因果图.mddocs/限制与已知问题.mddocs/测试与复现说明.mddocs/规则数据合同.mddocs/工程质量评审索引.mddocs/代码规范与贡献指南.mddocs/第三方组件与开源合规说明.mddocs/变更记录.md限制与故障排查
内核能力、BTF、tracepoint、块设备与 systemd 环境差异可能导致明确跳过或降级;跳过项不计为通过。先查看 canonical
report.json/summary.json、服务日志、场景operation.log以及数据质量字段;内部运行审计再查看_internal/batches/<服务运行标识>/run-meta.json,详见docs/限制与已知问题.md。开源与第三方声明
项目许可证见
LICENSE。libbpf 等第三方来源、许可证和构建边界见docs/第三方组件与开源合规说明.md;贡献流程见docs/代码规范与贡献指南.md。