平台工程中的可观测性需求:平台团队视角、开发者体验、SRE目标对齐

做平台工程可观测性,最容易踩的坑就是——只从一个角度看问题。我刚开始带团队时,使劲往监控里堆指标,结果开发者说“看不懂”,SRE说“不够用”,平台团队自己维护成本还爆了。后来才明白,可观测性不是造个数据湖就完事,它得同时服务好三类人:平台团队自己、用平台的开发者、背SLO的SRE。这三者的需求有时重叠,有时冲突,你得找到那个平衡点。

平台团队视角:我要能运维,更要能优化

作为平台团队的工程师,我们最关心两件事:平台本身的健康状况和资源的投入产出比。说白了,你搭建了APM、日志、指标平台,自己得先吃得消。我见过一个团队把所有微服务全量采集trace,一天几十TB数据,查询慢得吐血,成本直接爆预算——这就是典型“只建不管”。

我个人习惯把平台可观测性分为三层:

  • 基础设施层:K8s集群、中间件、网络延迟、磁盘IO。这些是平台基座,挂了啥都白搭。
  • 平台服务层:开发者用到的服务注册、配置中心、CI/CD流水线。这些直接影响开发者体验。
  • 成本与容量层:每接入一个团队,存储、计算、带宽成本是多少?能不能按租户分摊?
核心指标:平台可用性(≥99.9%)、平均修复时间(MTTR < 15分钟)、存储/查询成本增长曲线。
建议:先给平台组件打标签(cluster、namespace、service),然后用Prometheus + Thanos做长期存储。我早期只用Prometheus单实例,数据只能保留7天,排查慢问题根本不够用。

开发者体验:我要一秒搞清楚“我的代码为什么挂了”

开发者最烦什么?写代码5分钟,排查BUG两小时。如果可观测性工具不能帮他们快速定位到代码级别,那就是废的。我记得有一次,团队上线了一个新特性,接口延迟从10ms变成500ms,开发者翻遍了Grafana仪表盘,全是K8s节点CPU,跟代码半毛钱关系没有——这就是视角错位。

从开发者角度看,可观测性要满足三个“直觉”:

  1. 一键跳转:从告警消息直接点到具体调用链,再到日志行,层级少于3次点击。
  2. 上下文聚合:一次请求的trace、日志、metrics、错误堆栈自动关联,不用手动拼。
  3. 反馈闭环:代码合并后,能自动看到新版本的延迟、错误率变化,不用等SRE通知
避坑指南:
我曾经把OpenTelemetry agent配置成全量采样,结果每个请求都往collector发大量span,开发者本地调试时把自己环境打挂了。后来改用“头采样+尾采样”策略:线上只保留错误trace,成功trace按1%采样,开发者主动调试时可以临时开全量。

SRE目标对齐:别把SLO当摆设

SRE嘴里天天挂的“SLO、SLI、错误预算”,可观测性不跟这些对齐,那就真是数据孤岛了。我见过最离谱的事:SRE定了一个99.9%的SLO,但告警阈值设在了99.99%,导致天天报警,开发者直接标记为“不重要”——这叫资源浪费。

真正可行的做法:

  • SLI定义要精确:比如“请求延迟P99 < 200ms”,而不是“响应性能达标”。
  • 错误预算可视化:每个服务都有一个烧钱进度条,开发者能看到还剩多少预算可用。
  • 告警与SLO联动:错误预算剩余<10%才Page级别告警,平时只发Warning。

下面给一个常见的SLI定义示例,用YAML配合Prometheus rule:

groups:
  - name: sli-rules
    rules:
      - record: sli:request_latency_p99_5m
        expr: histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket[5m])) by (le, service))
      - alert: SLOViolation
        expr: sli:request_latency_p99_5m > 0.2
        for: 5m
        labels:
          severity: page
        annotations:
          summary: "{{ $labels.service }} 延迟SLO已被违反"
我个人习惯:让SRE和开发团队每两周一起过一下错误预算的趋势。如果某个服务的错误预算连续两周下降,说明需要代码优化或扩容,而不是调高SLO数字。

三个视角如何统一?

你可能已经发现了,平台团队看资源,开发者看代码,SRE看SLO。这三者不是矛盾的,而是三个侧面。下面这张图概括了它们的关系:

平台工程可观测性需求三角 平台团队视角 开发者体验 SRE目标对齐 基础设施可观测性 应用可观测性 服务可观测性 统一可观测性策略 共同目标:可靠 · 高效 · 开发者满意

这张图想表达的是:平台团队提供基础设施可观测性,开发者关注应用级的trace和log,SRE盯服务级的SLO。三股数据流统一汇聚到统一可观测性策略里,最后服务于同一个目标——让平台可靠、让开发高效、让SRE省心。

说实话,很多团队一开始就急着上工具,先把自己觉得重要的数据全采进来,结果三个视角互相打架。我建议你反过来:先想清楚你的用户(开发者)、你的客户(SRE)、你的老板(平台成本)各自需要什么,然后分层设计。下一层解决一层的问题,不要指望一个仪表盘解决所有问题。