自动追踪
概述
自动追踪(AutoTracing) 是华佗内核监控系统的一项智能诊断功能。当系统出现特定性能异常或资源突变时,AutoTracing 会自动触发,实时捕获详细的现场信息(包括火焰图、进程上下文、调用栈、资源状态等),帮助运维和开发人员快速定位和分析问题,无需手动干预。该功能基于 eBPF 技术实现,具备低开销、高实时性的特点,适用于物理机和容器环境下的异常诊断场景。
支持的自动追踪类型
当前版本支持以下五种自动追踪功能:
| 追踪名称 | 核心功能 | 适用场景 |
|---|---|---|
| cpusys | 检测物理机 CPU sys(系统态)占用率突增,自动生成火焰图并提供进程上下文信息 | 解决系统负载异常导致的业务毛刺、延迟等问题 |
| cpuidle | 检测容器 CPU idle(空闲率)异常下降,自动生成火焰图并提供进程上下文信息 | 解决容器 CPU 使用率异常,帮助业务分析进程热点 |
| dload | 检测容器 loadavg(系统平均负载)突增,自动抓取容器内 D 状态进程的调用信息 | 解决 D 状态进程突增、资源不可用或锁被长期持有等问题 |
| memburst | 检测物理机内存突发分配行为,自动捕获进程内存使用状态 | 应对短时间内大量内存分配,可能引发直接回收或 OOM 的场景 |
| iotracing | 检测物理机磁盘 IO 延迟异常,自动捕获相关进程、容器、磁盘及文件信息 | 解决磁盘 IO 带宽打满、磁盘访问突增导致的应用请求延迟或系统性能抖动问题 |
功能特点
- 智能触发:根据预设阈值自动检测异常,无需人工配置触发条件。
- 丰富诊断信息:每次触发时自动采集火焰图、调用栈、进程/容器上下文、资源使用详情等关键数据。
- 低开销设计:采用 eBPF 技术,仅在异常发生时进行针对性采集,日常运行开销极低。
- 统一输出:所有追踪数据以标准化格式上报,便于查询、分析和告警整合。
使用建议
- cpusys 与 cpuidle 适合 CPU 相关性能毛刺的快速定位。
- dload 特别适用于 D 状态进程导致的“假死”或卡顿问题。
- memburst 可提前发现潜在的内存压力,避免 OOM 发生。
- iotracing 是排查磁盘 IO 瓶颈的首选工具。
通过 AutoTracing 功能,华佗能够实现从异常检测到现场保留的自动化闭环,大幅提升问题诊断效率。