成本从哪来
可观测性成本主要落在存储、查询与人力三块:指标按时间序列条数与保留期计费,日志按写入字节数与保留天数计费,链路按产生的 span 数量计费。治理的目标不是把数据压到最少,而是在排障能力与花费之间找到可解释的平衡,方法是先按信号分层,再对高成本来源做压缩。分层意味着不同信号承担不同职责:指标长期留存用于趋势与容量,日志短期留存用于定位细节,链路只在需要时保留。
成本结构拆解
| 信号 | 成本驱动 | 压缩手段 |
|---|---|---|
| 指标 | 序列条数 × 采集频率 × 保留期 | 清理无引用指标、降低采集频率、砍掉高基数标签 |
| 日志 | 写入字节数 × 保留天数 × 副本数 | 降级别、结构化解构后裁剪字段、冷热分层 |
| 链路 | 采样产生的 span 数量 | 头部采样降比例、尾部采样保留错误与慢请求 |
| 查询 | 扫描数据量与并发查询数 | 限制面板时间范围、预聚合、结果缓存 |
分层保留参考
| 指标 | 长期保留用于趋势,配合 5m 或 1h 降采样控制体积 |
|---|---|
| 日志 | 热存 7-30 天供检索,更早数据下沉到冷存或对象存储 |
| 链路 | 按需保留,错误链路与慢请求优先,正常链路大幅抽样 |
| 看板与告警 | 仍被引用的数据不下沉、不删除,改动前先核对引用关系 |
降成本四步顺序
- 第一步核对口径:确认业务、看板与告警真的没有消费,再谈删除或降采样
- 第二步砍高基数:找出标签基数异常的目标,减少无人使用的维度
- 第三步调保留期:把冷数据下沉到廉价存储,而不是直接删除历史
- 第四步上采样:日志降级别、链路提高采样率并用尾部采样保住错误链路
- 留出复盘入口:压缩后若排障时间明显变长,说明压过了头,需要回退
盘点指标引用
盘点指标引用
# 导出当前全部指标名
curl -s localhost:9090/api/v1/label/__name__/values | jq -r '.data[]' | sort > all_metrics.txt
# 与看板、告警规则里引用过的指标名做差集,得到候选清理清单
comm -23 all_metrics.txt used_metrics.txt | head -50
# 逐个确认:该指标最近 30 天是否还有写入
curl -s 'localhost:9090/api/v1/query?query=count(count_over_time(mysql_global_status_threads_connected[30d]))' | jq '.data.result'删除指标或缩短保留期前先确认告警规则、看板与外部订阅没有引用;历史数据一旦清理无法恢复,误删后只能等重新采集补齐。
采样要按信号区分对待:低频但高价值的故障链路应单独保留,关键支付的慢请求不适合被统一采样率一刀切掉。