修改更新README.md文件,合并“lq1”
基于 eBPF 的系统异常观测与根因定位工具
v0.9.4 - 阻塞异常状态机与页面展示修复版 (2026-07-27)
2026-07-27
sudo apt update sudo apt install -y \ clang llvm gcc make cmake \ libelf-dev zlib1g-dev libzstd-dev \ bpftool libbpf-dev \ linux-headers-$(uname -r)
cd kylinsight chmod +x scripts/*.sh ./scripts/build.sh
sudo -E .venv/bin/python3 api/server.py
服务启动后访问 http://localhost:8888/dashboard
http://localhost:8888/dashboard
# 终端一:启动服务 sudo -E .venv/bin/python3 api/server.py # 终端二:运行压力测试 stress-ng --cpu 4 --timeout 20s --metrics-brief # 终端二:查询监控数据 curl http://localhost:8888/api/v1/health curl http://localhost:8888/api/v1/metrics/summary curl http://localhost:8888/api/v1/anomalies?limit=100
按 Ctrl+C 正常退出,BPF 资源自动清理。
Ctrl+C
kylinsight/ ├── bpf/ │ ├── include/ │ │ ├── vmlinux.h # 内核 BTF 头文件 │ │ └── event.h # 事件结构定义 │ └── sched_switch.bpf.c # BPF 程序 ├── collector/ │ └── src/ │ └── main.c # 用户态 Collector (ignored_pid 过滤) ├── api/ │ ├── server.py # FastAPI 服务 │ └── static/ # Web Dashboard ├── web/ # 前端资源 ├── analyzer/ # Python 诊断引擎 ├── scripts/ │ ├── build.sh # 构建脚本 │ └── run.sh # 运行脚本 ├── tests/ │ └── test_blocking_anomaly.py # 阻塞异常单元测试 ├── configs/ # 配置文件 ├── docs/ # 文档 ├── CMakeLists.txt ├── pyproject.toml └── README.md
GET /api/v1/health
GET /api/v1/metrics/summary
GET /api/v1/processes/top
GET /api/v1/events/recent
GET /api/v1/events/stream
GET /api/v1/metrics/history
GET /api/v1/cpus
GET /api/v1/anomalies
GET /dashboard
{ "status": "resolved", "resolution_reason": "observed_resume", "blocked_start_at": 1234567890.123, "blocked_end_at": 1234567895.456, "blocked_duration_ms": 5333.0, "resumed_cpu": 3, "duration_ms": 5333.0, "metric_value": 5333.0 }
{ "status": "expired", "resolution_reason": "timeout_expired", "blocked_start_at": 1234567890.123, "blocked_end_at": null, "blocked_duration_ms": null, "tracked_duration_ms": 300000.0, "resumed_cpu": null, "duration_ms": null }
{ "status": "active", "blocked_start_at": 1234567890.123, "blocked_end_at": null, "blocked_duration_ms": null, "tracked_duration_ms": 150000.0 }
{ "status": "pid_reused", "resolution_reason": "pid_reused", "blocked_start_at": null, "blocked_end_at": null, "blocked_duration_ms": null, "tracked_duration_ms": 5000.0 }
clang
sched_switch.bpf.c
sched_switch.bpf.o
bpftool gen skeleton
sched_switch.skel.h
gcc/clang
main.c
libbpf
libelf
zlib
float = 0.0
Optional[float] = None
?type=blocking_observed
?status=resolved
?offset=0&limit=50
/api/v1/anomalies
print_esc()
\u00XX
clean_comm()
[^ -~]
updateCpuList()
escapeHtml()
?
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
KylinSight
基于 eBPF 的系统异常观测与根因定位工具
当前版本
v0.9.4 - 阻塞异常状态机与页面展示修复版 (
2026-07-27)核心功能
技术特性
环境要求
快速开始
1. 安装依赖
2. 构建
3. 运行 API 服务
服务启动后访问
http://localhost:8888/dashboard4. 运行压力测试验证
5. 停止服务
按
Ctrl+C正常退出,BPF 资源自动清理。项目结构
API 端点
GET /api/v1/healthGET /api/v1/metrics/summaryGET /api/v1/processes/topGET /api/v1/events/recentGET /api/v1/events/streamGET /api/v1/metrics/historyGET /api/v1/cpusGET /api/v1/anomaliesGET /dashboard阻塞异常字段说明
resolved(已恢复)
expired(超时)
active(跟踪中)
pid_reused(PID复用)
构建流程
clang编译sched_switch.bpf.c→sched_switch.bpf.obpftool gen skeleton生成sched_switch.skel.hgcc/clang编译用户态main.clibbpf,libelf,zlib版本历史
v0.9.4 (2026-07-24) - 本次更新(2026-07-27)
float = 0.0改为Optional[float] = None,支持 null?type=blocking_observed?status=resolved?offset=0&limit=50v0.9.3 (2026-07-23)
/api/v1/anomaliesv0.9.2 (2026-07-23)
v0.9.1 (2026-07-22)
v0.9.0 (2026-07-22)
v0.7.2 (2026-07-22)
print_esc()输出\u00XX格式改为直接输出高位字节,JSON UTF-8 编码正确,Python 解析不再错位clean_comm()过滤所有非 ASCII 可打印字符 ([^ -~]),进程名干净无脏字节updateCpuList()参数类型判断错误(数组 vs 对象),CPU 进度条正常显示escapeHtml()过滤控制字符,解决进程名中?显示问题v0.7.1 (2026-07-21)
v0.7.0 (2026-07-20)
下一步开发计划