目录

eBPF 系统异常观测与根因定位工具

基于 eBPF 的轻量级系统异常实时观测、指标采集、事件关联分析和诊断结果输出工具。

v3.0 | openKylin 2.0 SP2 适配 | 60 单元测试 | MIT 开源


目录

  1. 核心功能
  2. 系统架构
  3. 项目结构
  4. 快速开始
  5. 三种运行模式
  6. 监控场景详解
  7. 诊断引擎原理
  8. 配置说明
  9. 输出格式
  10. 测试
  11. 环境兼容性
  12. 限制与 roadmap

1. 核心功能

功能 说明
5 类异常场景 CPU 异常占用、I/O 延迟抖动、内存抖动/OOM、锁竞争、系统调用热点
双路径采集 eBPF 内核态(BCC/bpftrace)+ /proc 用户态,BCC 不可用时自动降级
多策略诊断 固定阈值 + 动态基线 Z-Score + 趋势分析 + 多维关联评分矩阵
因果推理 12 条因果知识链,从症状组合推导根因、证据、建议
LLM 深度分析 可选集成本地 Ollama 或 OpenAI 兼容 API 进行自然语言诊断
结构化输出 JSON / YAML / Markdown / 自包含 HTML 四种格式
Daemon 常驻监控 轻量后台运行(<0.5% CPU),异常自动触发深度 eBPF 分析
Web 可视化控制台 FastAPI + Chart.js 实时仪表盘,WebSocket 推送,浏览器直接访问
一键启动 ./run.sh 交互式菜单,覆盖部署/监控/测试/演示全流程

2. 系统架构

                            ┌──────────────────────────┐
                            │    run.sh  一键入口        │
                            │  quick | demo | daemon    │
                            │  web | test | benchmark   │
                            └──────────┬───────────────┘
                                       │
              ┌────────────────────────┼────────────────────────┐
              ▼                        ▼                        ▼
    ┌─────────────────┐    ┌─────────────────────┐    ┌─────────────────┐
    │  CLI 模式        │    │  Daemon 模式         │    │  Web 模式        │
    │  (ebpf_observer) │    │  (daemon.py)         │    │  (web/app.py)    │
    │  一次性诊断报告   │    │  常驻轻量+触发深度    │    │  FastAPI+Chart.js│
    └────────┬────────┘    └──────────┬──────────┘    └────────┬────────┘
             │                        │                        │
             └────────────────────────┼────────────────────────┘
                                      │
                    ┌─────────────────┴─────────────────┐
                    │         采集层                     │
                    │  ┌───────────┐  ┌──────────────┐  │
                    │  │ eBPF 路径  │  │ /proc 路径    │  │
                    │  │ (BCC 5个   │  │ (Metrics-    │  │
                    │  │  Monitor)  │  │  Collector)  │  │
                    │  └─────┬─────┘  └──────┬───────┘  │
                    └────────┼───────────────┼──────────┘
                             │               │
                             ▼               ▼
                    ┌─────────────────────────────────┐
                    │     MetricSnapshot (datatypes)    │
                    │  cpu/mem/io/lock/syscall 指标     │
                    └─────────────┬───────────────────┘
                                  │
                    ┌─────────────┴───────────────────┐
                    │         分析层                    │
                    │  ┌──────────────────────────┐   │
                    │  │ DiagnosticEngine (engine) │   │
                    │  │ • 阈值规则 (THRESHOLDS)    │   │
                    │  │ • Z-Score 动态基线        │   │
                    │  │ • 趋势分析 (线性回归)       │   │
                    │  │ • 多维关联评分矩阵          │   │
                    │  └───────────┬──────────────┘   │
                    │              │                   │
                    │  ┌───────────┴──────────────┐   │
                    │  │ KnowledgeBase             │   │
                    │  │ • 12 条因果推理链          │   │
                    │  │ • 条件匹配引擎             │   │
                    │  └───────────┬──────────────┘   │
                    │              │                   │
                    │  ┌───────────┴──────────────┐   │
                    │  │ LLMAnalyzer (可选)         │   │
                    │  │ • Ollama / OpenAI 后端     │   │
                    │  │ • 自动回退离线分析          │   │
                    │  └──────────────────────────┘   │
                    └─────────────┬───────────────────┘
                                  │
                                  ▼
                    ┌─────────────────────────────────┐
                    │         输出层                    │
                    │  OutputFormatter                 │
                    │  JSON | YAML | Markdown | HTML   │
                    └─────────────────────────────────┘

数据流

压力发生 → eBPF 内核捕获事件 ──perf_buffer──→ Monitor 桥接层
                                                   │
/proc/stat, /proc/meminfo, ... ──read──→ MetricsCollector
                                                   │
                              MetricSnapshot ←─────┘
                                   │
                          DiagnosticEngine.analyze()
                          ┌────────┼────────┐
                          │ 阈值   │ Z-Score │ 趋势
                          └────────┼────────┘
                                   │
                          DiagnosticResult
                          ┌────────┼────────┐
                          │ 知识库  │ LLM    │ (可选增强)
                          └────────┼────────┘
                                   │
                          OutputFormatter
                                   │
                   JSON / YAML / Markdown / HTML

3. 项目结构

ebpf-observer/
│
├── run.sh                          # ★ 项目统一入口(交互式菜单)
├── config.yaml                     # 全局配置文件
├── pytest.ini                      # 测试配置
│
├── src/                            # 核心源代码
│   ├── ebpf_observer.py            # 主入口:CLI、采集调度、报告生成
│   ├── daemon.py                   # Daemon 守护进程(常驻轻量监控)
│   ├── datatypes.py                # 共享数据结构(AnomalyType/MetricSnapshot 等)
│   │
│   ├── monitors/                   # eBPF 桥接层(5 个场景)
│   │   ├── cpu_monitor.py          #   CPU:sched_switch tracepoint + 调度延迟
│   │   ├── io_monitor.py           #   I/O:blk_mq_start_request kprobe + 设备级统计
│   │   ├── mem_monitor.py          #   内存:handle_mm_fault + OOM/kswapd/kmalloc
│   │   ├── lock_monitor.py         #   锁:mutex/futex/spinlock/rwsem + 调用栈
│   │   └── syscall_monitor.py      #   系统调用:raw_tracepoint + 100+ 名称表
│   │
│   ├── analyzer/                   # 分析引擎
│   │   ├── engine.py               #   诊断引擎:阈值+Z-Score+趋势+关联评分
│   │   ├── knowledge_base.py       #   因果知识库:12 条推理链 + 条件匹配
│   │   └── llm_analyzer.py         #   LLM 分析器:Ollama/OpenAI 后端
│   │
│   ├── output/                     # 输出模块
│   │   └── formatter.py            #   JSON/YAML/Markdown/HTML 多格式输出
│   │
│   ├── web/                        # Web 可视化控制台
│   │   └── app.py                  #   FastAPI 后端 + 内嵌前端仪表盘
│   │
│   ├── bpftrace/                   # bpftrace 替代监控脚本(BCC 不可用时)
│   │   ├── cpu_monitor.bt
│   │   ├── io_monitor.bt
│   │   ├── mem_monitor.bt
│   │   ├── lock_monitor.bt
│   │   └── syscall_monitor.bt
│   │
│   └── ebpf/                       # 独立 eBPF C 程序(参考实现 + CO-RE 编译)
│       ├── Makefile                #   clang → .bpf.o 编译系统
│       ├── cpu_monitor.c
│       ├── io_monitor.c
│       ├── mem_monitor.c
│       ├── lock_monitor.c
│       └── syscall_monitor.c
│
├── scripts/                        # 辅助脚本
│   ├── deploy.sh                   #   一键部署(apt + pip)
│   ├── test_scenarios.sh           #   5 场景自动化测试
│   ├── benchmark.sh                #   性能基准测试(CPU/内存/时延)
│   └── stress/                     #   内置压力测试脚本(零外部依赖)
│       ├── run_stress.sh           #     统一启动脚本
│       ├── cpu_stress.py           #     CPU 矩阵乘法/素数计算
│       ├── io_stress.py            #     I/O dd + Python 随机读写
│       ├── mem_stress.py           #     大内存分配 + 缺页访问
│       ├── lock_stress.py          #     threading.Lock 多线程竞争
│       └── syscall_stress.py       #     fsync/read/write/stat 系统调用
│
├── tests/                          # 单元测试(pytest, 60 tests)
│   ├── conftest.py                 #   fixtures: 共享引擎/快照/报告
│   ├── test_collector.py           #   采集器测试(14 tests)
│   ├── test_diagnostic_engine.py   #   诊断引擎测试(31 tests)
│   └── test_formatter.py           #   格式化器测试(15 tests)
│
├── deploy/                         # 部署资源
│   └── ebpf-observer.service       #   systemd 服务文件
│
└── docs/                           # 文档
    ├── README.md                   #   本文档
    └── container_guide.md          #   容器环境适配指南

4. 快速开始

4.1 最简单方式:一键启动

# 交互式菜单(推荐首次使用)
./run.sh

# 命令行模式
sudo ./run.sh quick              # 快速启动:60s 全场景 → JSON + Markdown
sudo ./run.sh quick 120 cpu,mem  # 自定义:120s 监控 CPU + 内存
sudo ./run.sh demo cpu           # 演示模式:CPU 压力 + 观测 → HTML 报告
sudo ./run.sh test               # 运行全部测试场景
sudo ./run.sh benchmark          # 性能基准测试
sudo ./run.sh deploy             # 一键部署依赖
sudo ./run.sh daemon             # v3.0: 启动常态化监控守护进程
sudo ./run.sh web                # v3.0: 启动 Web 可视化控制台 (端口 8080)

4.2 手动方式

# 1. 部署依赖
sudo ./scripts/deploy.sh

# 2. 基础使用
sudo python3 src/ebpf_observer.py --duration 60 --scenarios all
sudo python3 src/ebpf_observer.py --duration 120 --scenarios cpu,mem

# 3. 使用配置文件
sudo python3 src/ebpf_observer.py --config config.yaml --duration 60

# 4. 强制 /proc 模式(不加载 eBPF)
sudo python3 src/ebpf_observer.py --duration 60 --scenarios all --no-ebpf

# 5. v3.0 新功能
sudo python3 src/ebpf_observer.py --web --web-port 8080
sudo python3 src/ebpf_observer.py --daemon --daemon-interval 10

4.3 系统要求

项目 要求
操作系统 openKylin 2.0 SP2 / Ubuntu 20.04+ / Debian 11+
内核 Linux 5.8+(推荐 6.6+,完整 eBPF 支持)
架构 x86_64 / ARM64
权限 root(或 CAP_BPF + CAP_PERFMON + CAP_SYS_ADMIN)
Python 3.10+
硬件 ≥4 核 CPU,≥8GB 内存,≥50GB 存储

⚠️ openKylin 2.0 SP2 重要提示: 系统默认不提供 python3-bpfcc 包。工具会自动降级为 /proc 基础模式(CPU/内存/I/O 基本监控仍可用)。如需完整 eBPF 支持,可安装 bpftracesudo apt install bpftrace)运行 src/bpftrace/ 下的替代脚本,或从源码编译 BCC。


5. 三种运行模式

5.1 CLI 模式(一次性诊断)

sudo python3 src/ebpf_observer.py --duration 60 --scenarios all --output report.json

流程: 采集 → 分析 → 输出报告 → 退出。适合问题排查、性能分析。

CLI 参数 简写 默认值 说明
--config -c YAML/JSON 配置文件路径
--duration -d 60 观测时长(秒)
--interval -i 1.0 采样间隔(秒)
--scenarios -s all 场景:cpu,io,mem,lock,syscall,all
--output -o 输出文件路径
--output-format -f json 格式:json / yaml / markdown / html
--analyze-interval -a 20 诊断分析间隔(秒)
--no-ebpf false 强制 /proc 基础模式
--daemon false 启动 Daemon 守护进程
--daemon-interval 10 Daemon 采样间隔(秒)
--web false 启动 Web 控制台
--web-port 8080 Web 控制台端口

5.2 Daemon 模式(常驻轻量监控)

# 前台运行
sudo python3 src/daemon.py --interval 10 --report-dir ./reports

# 启用 SQLite 持久化
sudo python3 src/daemon.py --interval 30 --db metrics.db --report-dir ./reports

# systemd 服务(部署后)
sudo systemctl start ebpf-observer
sudo systemctl status ebpf-observer

两级监控架构:

轻量级循环 (10s)                      触发式深度分析
┌──────────────────┐        异常       ┌──────────────────┐
│ /proc 指标采集    │ ──────────────→  │ eBPF 全功能分析   │
│ Z-Score 基线检测  │                   │ 30s 高精度采样    │
│ 阈值规则          │                   │ 完整诊断报告      │
│                   │                   │ 知识库/LLM 增强   │
│ CPU < 0.5%       │                   │ 限频: 5min/次     │
│ MEM ~ 5MB        │                   │                   │
└──────────────────┘                   └──────────────────┘

Daemon 特性:

  • 30 样本基线建立期(约 5 分钟@10s 间隔)
  • 每小时自动生成健康报告(Markdown)
  • 可选 SQLite 指标持久化
  • SIGTERM/SIGINT 优雅关闭(自动保存最终报告)
  • systemd 集成(自动重启、日志 journald、安全加固)

5.3 Web 模式(可视化控制台)

# 启动 Web 控制台
sudo python3 src/ebpf_observer.py --web --web-port 8080

# 或安装 fastapi + uvicorn 后
sudo python3 src/web/app.py --port 8080

打开浏览器访问 http://localhost:8080

┌──────────────────────────────────────────────────────┐
│  🔍 eBPF Observer Dashboard            ●运行中  14:30│
├──────────────────────────────────────────────────────┤
│  ┌────────────┐  ┌────────────┐  ┌──────┐  ┌──────┐ │
│  │ 🖥 CPU  92% │  │ 💾 MEM 88% │  │💿 I/O│  │📊负载│ │
│  │ ████████░░  │  │ ███████░░  │  │ 35ms │  │ 4.5  │ │
│  │ User:80 Sys:12│ │ Avail:1.2G │  │R:100 │  │CS:600│ │
│  └────────────┘  └────────────┘  └──────┘  └──────┘ │
│  ┌──────────────────────────┐  ┌──────────────────┐  │
│  │ CPU 时序图 (Chart.js)     │  │ MEM 时序图        │  │
│  │ ╱╲  ╱╲                  │  │ ╱╲               │  │
│  │ ╱  ╲╱  ╲                │  │╱  ╲────────────  │  │
│  └──────────────────────────┘  └──────────────────┘  │
│  ⚠️ 异常事件                                         │
│  ▎CPU异常占用  14:25  线程竞争导致 CPU 饱和          │
│  ▎内存不足    14:10  可用内存跌破10%                 │
└──────────────────────────────────────────────────────┘

Web API 端点:

端点 方法 说明
/ GET 仪表盘 HTML 页面
/api/metrics/current GET 当前实时指标
/api/metrics/history?limit=60 GET 历史指标(N 个采样点)
/api/anomalies GET 异常事件列表
/api/status GET 系统运行状态
/ws WebSocket 实时指标推送(2s 间隔)
/docs GET 自动生成的 API 文档(Swagger)

依赖: Web 模式需要 fastapiuvicorn。 安装: pip3 install fastapi uvicorn --break-system-packages


6. 监控场景详解

6.1 CPU 异常占用

项目 说明
eBPF 挂载点 tracepoint:sched:sched_switch
采集指标 CPU 使用率、上下文切换率、on-cpu 时间、调度延迟、运行队列长度
异常判定 CPU > 90% OR (Z-Score > 3σ AND CPU > 67.5%)
关联分析 CPU↑ + CS↑ + Load↑ → 线程竞争 ; CPU↑ + CS→ + User↑ → 计算密集型
根因输出 热点 PID/进程名 + 关联模式 + CPU 趋势 (R²)

6.2 I/O 延迟抖动

项目 说明
eBPF 挂载点 kprobe:blk_mq_start_request + kprobe:blk_account_io_done
采集指标 IOPS、P99 延迟、平均延迟、队列深度、await、设备级统计、读写比
异常判定 P99 延迟 > 50ms OR 延迟变异系数 > 1.0
关联分析 P99↑ + 队列深↑ + 写为主 → 写入压力 ; P99>>AVG + 抖动大 → 间歇性竞争
根因输出 热点设备 (major:minor) + 抖动系数 + I/O 模式

6.3 内存抖动 / OOM 风险

项目 说明
eBPF 挂载点 kprobe:handle_mm_fault + kprobe:oom_kill_process + kprobe:kswapd + kprobe:kmalloc
采集指标 可用内存、major/minor fault、Swap 使用、OOM 事件、大内存分配(>1MB)
异常判定 可用内存 < 10% OR OOM 事件 > 0 OR 内存趋势持续下降 (R²>0.6)
关联分析 可用↓ + Major↑ + Swap↑ → 内存压力 ; 可用↓趋势 + R²高 → 内存泄漏
根因输出 OOM 受害者进程 + 内存趋势 + 大内存分配记录

6.4 锁竞争

项目 说明
eBPF 挂载点 kprobe/kretprobe:mutex_lock + futex_wait + queued_spin_lock_slowpath + down_read/down_write
采集指标 mutex/futex/spinlock/rwsem 等待时间、锁热点地址、调用栈、阻塞时间
异常判定 平均锁等待 > 30ms
关联分析 spinlock 高 → 临界区过大 ; mutex 为主 → 应用层数据竞争
根因输出 锁类型分布 + Top 5 热点锁地址 + 对应进程名

6.5 系统调用热点

项目 说明
eBPF 挂载点 raw_tracepoint:sys_enter + raw_tracepoint:sys_exit
采集指标 系统调用频率、平均耗时、P99 耗时、标准差、进程级统计
异常判定 某 syscall 平均耗时 > 10000μs (10ms)
关联分析 fsync/write 高 → 存储瓶颈 ; poll/select 高 → 事件循环过密
根因输出 Top 3 热点 syscall + 耗时分布 + 调用次数

7. 诊断引擎原理

7.1 多策略融合

诊断引擎 DiagnosticEngine 不依赖单一判定方式,而是融合 4 种策略:

┌─────────────────────────────────────────────────────────┐
│                    DiagnosticEngine                      │
│                                                         │
│  ① 固定阈值 (THRESHOLDS)                                │
│     CPU > 90% | P99 IO > 50ms | Mem < 10% | ...        │
│                                                         │
│  ② 动态基线 + Z-Score                                   │
│     120 样本移动平均 ± 3σ → 偏离基线触发异常              │
│     组合: 阈值 OR (Z-Score AND 阈值×0.75)                │
│                                                         │
│  ③ 趋势分析 (detect_trend)                               │
│     线性回归 slope + R² → up/down/stable                 │
│     R² > 0.6 且持续下降 → 内存泄漏预警                   │
│                                                         │
│  ④ 多维关联评分矩阵 (_correlation_score)                  │
│     CPU:  4维 (线程竞争/计算密集/用户热点/内核热点)        │
│     内存: 3维 (内存压力/内存泄漏/OOM预警)                 │
└─────────────────────────────────────────────────────────┘

7.2 因果推理增强 (v3.0)

检测到异常后,KnowledgeBase 进行因果匹配:

异常指标 ──→ match_knowledge(category, metrics) ──→ 匹配的因果链
                                                        │
                                           ┌────────────┴────────────┐
                                           │ CausalChain              │
                                           │ • root_cause: 根因描述   │
                                           │ • reasoning:  推理过程   │
                                           │ • evidence:   证据关联   │
                                           │ • suggestions: 排查建议  │
                                           │ • severity:   严重程度   │
                                           └─────────────────────────┘

内置 5 类场景共 12 条因果推理链,覆盖线程竞争、内存泄漏、OOM、I/O 拥堵、自旋锁过大、系统调用瓶颈等典型问题。

7.3 LLM 深度分析 (v3.0,可选)

DiagnosticResult ──→ LLMAnalyzer.analyze()
                         │
          ┌──────────────┴──────────────┐
          │ 结构化提示词                  │
          │ • 系统信息 (内核/架构/CPU)     │
          │ • 异常类型 + 置信度           │
          │ • 关键指标 (JSON)            │
          │ • 证据链                     │
          │ • 知识库匹配结果              │
          └──────────────┬──────────────┘
                         │
          ┌──────────────┴──────────────┐
          │ LLM 后端 (config.yaml 配置)  │
          │ • ollama: 本地 (推荐)        │
          │ • openai: API 兼容          │
          │ • none: 离线增强分析         │
          └──────────────┬──────────────┘
                         │
                         ▼
                  LLMAnalysisResult
                  • summary: 一句话概述
                  • root_cause_analysis: 详细根因
                  • impact_assessment: 影响评估
                  • recommendations: 具体建议
                  • risk_level: critical/high/medium/low

8. 配置说明

所有配置集中在 config.yaml

# 异常检测阈值
thresholds:
  cpu_high: 90.0              # CPU 使用率异常线 (%)
  cs_high: 500                # 上下文切换高频线 (次/秒)
  io_p99_latency_ms: 50       # I/O P99 延迟异常线 (ms)
  mem_low_percent: 10.0       # 可用内存低水位 (%)
  lock_wait_ms: 30            # 锁平均等待异常线 (ms)
  syscall_slow_us: 10000      # 慢系统调用线 (μs)

# 动态基线
baseline:
  window: 120                 # 基线窗口(样本数)
  zscore_threshold: 3.0       # Z-Score 异常阈值 (σ)
  trend_window: 30            # 趋势检测窗口(样本数)

# 观测参数
observation:
  duration: 60                # 默认时长 (秒)
  interval: 1.0               # 默认采样间隔 (秒)
  analyze_interval: 20        # 分析间隔 (秒)

# LLM 增强分析 (可选)
llm:
  enabled: false              # 是否启用
  backend: ollama             # ollama | openai | none
  model: qwen2.5:7b           # 模型名称
  base_url: http://localhost:11434/v1
  temperature: 0.1
  max_tokens: 2048

# 持久化 (Daemon 模式)
persistence:
  enabled: false
  db_path: ./metrics.db       # SQLite 路径
  prometheus_port: 0          # Prometheus 端口(0=禁用)

配置优先级:命令行参数 > config.yaml > 代码默认值


9. 输出格式

9.1 JSON(默认)

{
  "tool": "ebpf-observer",
  "version": "3.0.0",
  "observation_period": {
    "start": "2026-07-20T14:00:00",
    "end": "2026-07-20T14:01:00",
    "duration_seconds": 60
  },
  "system_info": {
    "cpu_cores": 4, "kernel_version": "6.6.0-22-generic",
    "hostname": "openkylin", "arch": "x86_64"
  },
  "anomalies_detected": 1,
  "anomalies": [{
    "anomaly_type": "CPU异常占用",
    "confidence": 0.92,
    "associated_objects": ["CPU 全体核心", "热点进程: PID 1234 (stress)"],
    "key_metrics": {
      "CPU 使用率": "92.5% (σ=3.2)",
      "上下文切换": "3200 次/秒",
      "关联模式": "thread_contention"
    },
    "suspected_root_cause": "用户态多线程竞争导致 CPU 饱和",
    "evidence_chain": [{
      "name": "CPU 使用率", "value": "92.5%",
      "threshold": ">90.0% (Z=3.1)", "abnormal": true
    }],
    "suggested_actions": [
      "使用 perf top -p PID 查看热点函数",
      "使用 top -H -p PID 检查线程数量"
    ]
  }],
  "summary": {
    "status": "anomalies_found",
    "severity": "medium",
    "total_anomalies": 1
  }
}

9.2 其他格式

格式 参数 适用场景
JSON --output-format json 程序解析、CI/CD 集成
YAML --output-format yaml 人工阅读、配置管理
Markdown --output-format markdown 文档嵌入、GitHub/Gitee
HTML --output-format html 浏览器直接查看、分享报告

10. 测试

10.1 单元测试

# 运行全部 60 个单元测试
python3 -m pytest tests/ -v

# 分类运行
python3 -m pytest tests/test_diagnostic_engine.py -v   # 诊断引擎 (31 tests)
python3 -m pytest tests/test_collector.py -v           # 采集器 (14 tests)
python3 -m pytest tests/test_formatter.py -v           # 格式化器 (15 tests)

10.2 场景测试

# 自动运行 5 场景 + 综合测试(约 10 分钟)
sudo ./scripts/test_scenarios.sh

# 或单个场景手动测试
# 终端 1: 启动压力
python3 scripts/stress/cpu_stress.py --cpu 4 --timeout 180

# 终端 2: 运行观测器
sudo python3 src/ebpf_observer.py --duration 60 --scenarios cpu --output cpu_result.json

10.3 性能基准

sudo ./scripts/benchmark.sh
# 输出 CPU/内存/时延开销报告到 benchmark_results/

11. 环境兼容性

11.1 openKylin 2.0 SP2 特殊说明

组件 状态 处理方案
BCC Python 绑定 默认不可用 自动降级 /proc 模式
bpftrace 可安装 (apt install bpftrace) src/bpftrace/*.bt 替代脚本
libbpf1 已预装 (1.3.0) CO-RE eBPF 编译支持
stress-ng / fio 仓库可用 内置 Python 压力脚本 (scripts/stress/)
linux-headers 已预装 ✅ BCC/CO-RE 编译支持
linux-tools 可安装 ✅ perf/bpftool 支持

11.2 BCC 不可用时的降级策略

BCC 可用? ──Yes──→ eBPF 全功能模式 (5 个 Monitor 全部加载)
    │
    No
    │
    ├──→ bpftrace 可用? ──Yes──→ src/bpftrace/*.bt 独立监控
    │
    └──→ /proc 基础模式
         • CPU/内存/I/O 基本监控可用 ✅
         • 锁和系统调用场景需 BCC ⚠️
         • 诊断引擎 (阈值+Z-Score+趋势) 仍正常工作 ✅
         • 知识库推理 + LLM 分析 仍正常工作 ✅

11.3 bpftrace 替代脚本

sudo apt install -y bpftrace
sudo bpftrace src/bpftrace/cpu_monitor.bt      # CPU 调度监控
sudo bpftrace src/bpftrace/io_monitor.bt       # I/O 延迟直方图
sudo bpftrace src/bpftrace/mem_monitor.bt      # 缺页统计
sudo bpftrace src/bpftrace/lock_monitor.bt     # 锁等待分布
sudo bpftrace src/bpftrace/syscall_monitor.bt  # 系统调用 Top 10

12. 限制与 Roadmap

当前限制

  1. BCC 依赖: openKylin 2.0 SP2 无 BCC 包,需从源码编译或使用 bpftrace
  2. Kprobe 稳定性: 内核函数名可能因版本不同而改变(已做兼容 fallback)
  3. 调用栈解析: 用户态符号解析依赖 BTF + 调试信息
  4. 容器感知: 仅基础 cgroup 识别,未做 K8s Pod/Deployment 级映射

Roadmap

优先级 计划 状态
5 类场景 eBPF 监控 已完成
动态基线 + Z-Score + 趋势分析 已完成
因果知识库推理 (12 条链) v3.0
LLM 深度分析 (Ollama/OpenAI) v3.0
Daemon 常驻轻量监控 v3.0
Web 可视化控制台 v3.0
🔲 CPU 火焰图生成 (perf + FlameGraph) 计划中
🔲 容器/K8s 感知增强 (cgroup + label) 计划中
🔲 异常预测 (Holt-Winters 时序预测) 计划中
🔲 网络异常场景扩展 (TCP重传/连接队列) 计划中

许可证

MIT License

参考

关于
138.0 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号