Skip to content

可观测性建设 = 用信息论指导观测 ​

一、业务问题 ​

监控系统建了一堆,但"出问题时仍找不到根因"——这是工程团队最常见的痛点。具体表现:

  • "指标太多,关键时刻不知道看哪个"
  • "告警准确率低,狼来了效应严重"
  • "日志打了海量,关键事件淹没在噪声中"
  • "链路追踪有数据,但关联不到业务影响"
  • "监控做完了,故障定位还是很慢"

根本问题:没有用信息论指导观测——监控覆盖率 ≠ 监控有效性。

二、控制论视角 ​

可观测性的数学基础 = 信息论(Shannon 1948)。

可观测性的本质:
  系统的内部状态 = 从输出(观测)反推
  
  可观测性条件:
  - 输出携带足够的信息量(I > 阈值)
  - 信号能被从噪声中分离(S/N > 阈值)
  - 测量有合适的频率(采样定理)

信息论三大对位:

信息论概念可观测性对位
信息量 I = -log₂(P)监控指标的"重要性"(罕见 = 重要)
熵 H(X)监控指标的随机性(业务活动范围)
互信息 I(X, Y)指标间的因果性(联合监控价值)
信道容量 C = B·log₂(1+S/N)监控系统的极限带宽
信噪比 S/N业务信号 vs 噪声(流量/异常)

钱学森 Ch 20 的判断:

"1948 年美国科学家香农总结了实践工作中的经验和前人的工作,成功地创立了关于信号和信息传输的精确理论即信息论。这个理论出现以后极大地促进了通信理论和技术的发展,同时也给控制理论提供了一个新的有力的工具。"

三、方法论编排 ​

3.1 编排总图 ​

                  ┌────────────────────────┐
                  │  理论基础(信息论)      │
                  │  communication-        │
                  │  information-theory    │
                  │  I、H、I(X,Y)、C、S/N  │
                  └───────────┬────────────┘
                              ↓ 提供数学工具
        ┌─────────────────────────────────────────┐
        │  三大支柱(观测手段)                      │
        │  log-metric-trace (L/M/T)               │
        │  vibration-linearization (心跳)          │
        │  wiener-filter (信号去噪)                │
        └────────────┬────────────────────────────┘
                     ↓
        ┌─────────────────────────────────────────┐
        │  频域分析(高级诊断)                      │
        │  spectral-analysis (频谱)                │
        └────────────┬────────────────────────────┘
                     ↓
        ┌─────────────────────────────────────────┐
        │  业务对齐(观测价值)                      │
        │  slo (服务等级目标)                       │
        └─────────────────────────────────────────┘

3.2 方法论分工表 ​

方法论在可观测性中的角色控制结构对位
communication-information-theory理论层:信息量、熵、互信息、信道容量通信系统
log-metric-trace手段层:三大观测支柱闭环反馈(测量)
vibration-linearization增强层:心跳机制闭环反馈(高频探测)
wiener-filter增强层:信号去噪最优滤波
spectral-analysis诊断层:频域分析最优控制(频域视角)
slo目标层:业务对齐闭环反馈(目标)

3.3 监控的三个层次 ​

L1 业务观测:
  - GMV、订单量、转化率
  - 业务异常 = 直接影响
  - 信息量最高(罕见 + 关键)

L2 服务观测:
  - QPS、错误率、延迟
  - 服务异常 = 间接影响
  - 信息量中等

L3 资源观测:
  - CPU、内存、磁盘
  - 资源异常 = 潜在影响
  - 信息量最低(最常见)

信息论原则:

  • 业务观测信息量最高,应优先建设
  • 资源观测信息量最低,作为最后一道防线
  • 跨层次互信息高的指标 = 强相关(联合监控)

四、端到端案例:API 服务的可观测性建设 ​

第 1 步:信息量分析 — 决定观测什么 ​

用信息量评估候选指标:

候选指标:
  "API 被调用"        P = 1.0     I = 0 bits     ← 0 信息
  "API 返回 200"      P = 0.999   I = 0.001 bits  ← 几乎 0 信息
  "API 返回 500"      P = 0.0001  I = 13.3 bits   ← 高信息
  "API 延迟 > 1s"     P = 0.01    I = 6.6 bits    ← 中信息
  "API 响应时间变化"  P = 0.5     I = 1 bit       ← 低信息
  "API 调用异常断开"  P = 0.0001  I = 13.3 bits   ← 高信息

决策:
  0 信息量:删除(节省存储)
  低信息量:DEBUG 级别
  中信息量:INFO 级别
  高信息量:WARN/ERROR 级别

控制论对位:高信息量 = 高优先级告警。

第 2 步:互信息分析 — 决定联合监控 ​

评估哪些指标应该联合告警:

候选指标对:
  (CPU使用率, 响应时间)   I(CPU, RT) = 2.5 bits   ← 强相关
  (CPU使用率, 错误率)     I(CPU, Err) = 0.3 bits  ← 弱相关
  (内存使用率, 错误率)    I(Mem, Err) = 1.8 bits  ← 中等相关
  (网络流量, 错误率)      I(Net, Err) = 0.1 bits  ← 弱相关

决策:
  强相关 (I > 2):联合告警(CPU 高 → 响应慢是预期内)
  中等相关 (1 < I < 2):分别告警 + 综合分析
  弱相关 (I < 1):分别告警

控制论对位:互信息 = 业务因果性。

第 3 步:信号噪声分离 — wiener-filter 应用 ​

问题:监控数据有大量噪声(节假日波动、灰度发布等)。

python
# 用维纳滤波分离信号和噪声
from scipy import signal

# 原始 CPU 数据
cpu_raw = get_cpu_timeseries()

# 维纳滤波去噪
cpu_filtered = signal.wiener(cpu_raw, noise=2.0)

# 信号 = 业务负载的真实变化
# 噪声 = 临时波动、测量误差

控制论对位:wiener-filter = 频域最优滤波。

第 4 步:频域分析 — spectral-analysis 应用 ​

问题:CPU 使用率在 50% 附近波动,怎么判断是"正常波动"还是"潜在问题"?

python
# 频谱分析
from scipy.fft import fft

# CPU 时序数据
cpu = get_cpu_timeseries(period='24h')

# 傅里叶变换
freqs = fftfreq(len(cpu))
power = np.abs(fft(cpu))**2

# 分析
# - 1/24h 频率有强峰 → 正常业务周期
# - 1/h 频率有强峰 → 每小时定时任务
# - 高频段噪声功率高 → 测量问题或异常

控制论对位:spectral-analysis = 频域视角找周期。

第 5 步:心跳机制 — vibration-linearization 应用 ​

问题:如何探测对端服务是否活着?

传统方式:TCP 长连接
  问题:NAT 超时、防火墙阻断、无法探测应用层

心跳机制:
  - 客户端定时发送"心跳"消息
  - 服务端响应"心跳"确认
  - 缺失 N 个心跳 = 服务异常
  
  频率选择:
  - 太频繁:网络开销大
  - 太稀疏:故障发现慢
  - 最优频率:基于业务容忍度(典型 1-10s)

控制论对位:vibration-linearization = 高频小信号探测系统状态。

第 6 步:SLO 对齐 — 业务观测的目标 ​

用 SLO 把观测和业务挂钩:

SLO 定义(业务可观测性):
  - API 可用性 ≥ 99.95%
  - P99 延迟 < 200ms
  - 错误率 < 0.1%

观测指标:
  - 可用性 → SLI = (1 - 错误率) × 100%
  - 延迟 → SLI = P99(latency)
  - 错误率 → SLI = 错误请求数 / 总请求数

告警阈值:
  - 错误预算消耗速率:1 小时内消耗 > 20% 触发
  - 错误预算剩余:< 50% 警告,< 10% 紧急

控制论对位:SLO = 闭环反馈的目标值。

五、监控设计原则 ​

5.1 信息量原则 ​

3 个 80/20 法则:

80% 的价值来自 20% 的指标
  → 找到那 20%(用信息量+互信息筛选)

80% 的告警是噪声
  → 告警分级(按信息量)

80% 的根因藏在 20% 的链路中
  → 链路追踪聚焦关键路径

5.2 三支柱原则 ​

日志 (Logs):离散事件
  - 用于:故障定位、行为审计
  - 信息量:高(具体事件)
  - 成本:高(存储大)

指标 (Metrics):聚合数值
  - 用于:实时监控、告警
  - 信息量:中(聚合丢失细节)
  - 成本:低

链路 (Traces):请求路径
  - 用于:性能分析、依赖关系
  - 信息量:高(完整路径)
  - 成本:中(采样可降本)

决策:
  - 必选:Metrics(实时告警)
  - 必选:Logs(故障定位)
  - 必选:Traces(性能分析)

5.3 黄金信号原则 ​

Google SRE 4 个黄金信号:

Latency(延迟):服务响应时间
Traffic(流量):请求速率
Errors(错误):错误率
Saturation(饱和度):资源利用率

信息论解读:

  • Latency:直接反映用户感受(高信息量)
  • Traffic:业务负载(中信息量)
  • Errors:故障信号(高信息量)
  • Saturation:资源瓶颈(低信息量,但预警用)

5.4 告警分级原则 ​

P0:业务不可用(信息量最高)
  - 触发:5 分钟内 P99 > 1s 且错误率 > 5%
  - 响应:电话 + 立即处理

P1:业务受损(信息量高)
  - 触发:5 分钟内错误率 > 1%
  - 响应:钉钉 + 1 小时处理

P2:性能下降(信息量中)
  - 触发:CPU > 80% 持续 10 分钟
  - 响应:邮件 + 工作时间处理

P3:资源预警(信息量低)
  - 触发:磁盘使用率 > 90%
  - 响应:工单 + 计划内处理

反模式:

  • 所有告警都 P0 → 告警疲劳
  • 告警太多看不过来 → 必须分级
  • 没有软硬激发 → 告警风暴

六、可观测性成熟度模型 ​

Level 1:黑盒

  • 知道系统挂了,但不知道为什么
  • 无监控或仅有基本监控

Level 2:白盒基础

  • 有指标和日志
  • 知道出问题的位置
  • 但定位慢

Level 3:白盒完整

  • L/M/T 三大支柱完整
  • 关联分析
  • 告警分级

Level 4:智能可观测性

  • 频域分析
  • 信号去噪
  • 异常检测(ML)

Level 5:可观测性驱动开发

  • 监控先于代码(observability-driven development)
  • 自动生成监控
  • 反馈到产品决策

七、反模式 ​

反模式症状缺什么方法论应该改用
指标大而全几千个指标,告警疲劳information-theory用信息量筛选
告警不分级半夜被告警轰炸alert加告警分级
日志当垃圾桶日志太多,存储爆炸information-theory按信息量打日志
指标互不相关看不出因果information-theory用互信息分析
监控无业务业务故障技术 OKsloSLO 对齐
链路追踪没采样存储爆炸communication-info用信道容量指导采样
只看平均长尾问题被掩盖spectral-analysis频域 + P99

八、与其他主题的关系 ​

主题与可观测性的关系
系统稳定性可观测性是稳定性的前提
性能调优调优需要频域分析能力
架构演进微服务化必须先建可观测性
数据一致性一致性问题需要链路追踪定位

九、控制结构引用 ​

控制结构在可观测性中的位置
闭环反馈监控-告警-调节链路
串级控制多级 SLO 分层
最优控制频域最优滤波(wiener-filter)
复合控制业务观测(慢)+ 资源观测(快)

十、钱学森原话 ​

Ch 20 引言: "1948 年美国科学家香农总结了实践工作中的经验和前人的工作,成功地创立了关于信号和信息传输的精确理论即信息论。这个理论出现以后极大地促进了通信理论和技术的发展,同时也给控制理论提供了一个新的有力的工具。"

Ch 15 引言(信号噪声): "在通信和控制系统中,信号和噪声的分离是一个基本问题。"

Ch 7 §7.5(心跳机制): "非线性效应仍然可以和线性项的数量级相同……级数展开式就不能成立了。"(→ 微小的高频探测信号在平衡点附近的线性展开)

十一、总结 ​

可观测性 = 信息论指导的工程实践:

信息论概念可观测性方法论
信息量 I监控指标分级、日志分级
互信息 I(X,Y)指标联合告警
熵 H业务活动范围分析
信道容量 C采样策略、存储成本
信噪比 S/N维纳滤波、异常检测
频域视角spectral-analysis

核心原则:

  • 少而精:用信息量筛选监控
  • 三支柱:L/M/T 缺一不可
  • 业务对齐:观测必须服务 SLO
  • 告警分级:避免疲劳
  • 频域思维:找周期、找异常

一句话总结:可观测性不是"看得见",而是"看到关键"——这是信息论的根本任务。

与 cybernetics 升格页面的联系 ​

观测性 = 反馈 + 信号 + 控制:

观测能力cybernetics 来源IDDD 对位
信号检测频谱分析事件分发
噪声过滤维纳滤波事件流过滤
通信极限信息论BC 边界协议
告警告警阈值不变量破坏
偏差协调偏差BC 间偏差

从名家方法论与工程化思路中蒸馏出自己的工程体系。