linux-sre-handbook

01-排查思路框架

排查原则

  1. 不要猜测,用数据说话 — 先度量,后假设
  2. 一次只改一个变量 — 隔离根因
  3. 从外到内 — 用户 → 网络 → 应用 → 系统 → 依赖
  4. 记录每一步 — 事后复盘的基础

三层排查模型

第一层:症状 (What?)
  - 用户看到了什么? (超时/500/空白页)
  - 什么时候开始的?
  - 影响范围? (全部/部分用户)

第二层:定位 (Where?)
  - 前端/后端/网络/数据库?
  - 哪个服务/组件?
  - 哪个接口/查询?

第三层:根因 (Why?)
  - 代码 Bug? 配置错误? 资源耗尽?
  - 为什么现在发生? (发布/流量变化/依赖故障)

USE / RED / 四层黄金信号

方法论 适用层级 关注点
USE 基础设施 CPU/内存/磁盘/网络的 Utilization, Saturation, Errors
RED 服务 每个接口的 Rate, Errors, Duration
四层黄金信号 服务 + 业务 Latency, Traffic, Errors, Saturation

排查工具链速查

问题类型          → 首选工具
────────────────────────────
应用报错           → kubectl logs / journalctl / ELK
响应慢             → Prometheus + Grafana / Jaeger
CPU 高             → top → pidstat → perf → strace
内存高             → free → smem → pmap → /proc/meminfo
磁盘 IO 慢         → iostat → iotop → lsof
网络不通           → ping → traceroute → nc → tcpdump
数据库慢查询       → slow query log → pt-query-digest / pg_stat_statements

排查流程

                  故障告警
                     │
              ┌──────▼──────┐
              │  确认影响范围 │
              └──────┬──────┘
                     │
              ┌──────▼──────┐
              │  查看监控面板 │
              └──────┬──────┘
                     │
         ┌───────────┴───────────┐
         │                       │
    ┌────▼────┐            ┌─────▼────┐
    │ 已知模式 │            │ 未知问题  │
    └────┬────┘            └─────┬────┘
         │                       │
    ┌────▼────┐            ┌─────▼────┐
    │ 执行Runbook│          │ 逐步排查 │
    └────┬────┘            └─────┬────┘
         │                       │
         └───────────┬───────────┘
                     │
              ┌──────▼──────┐
              │  恢复服务    │
              └──────┬──────┘
                     │
              ┌──────▼──────┐
              │  事后复盘    │
              └─────────────┘

延伸阅读