SuperAPI AI 工具集

specsfy-specialist-observability

部署与运维

查看项目

更新于 10-15 12:31

技能介绍

用途

该技能在请求涉及可观测性设计或审查时启用,具体包括:埋点(日志、指标、追踪)、事故调查、SLI/SLO 定义、仪表盘与告警构建。也可用于定义客观信号,以决定是否继续、暂停或回滚一次发布。

不适用于诊断已检测到的具体延迟的根因——那属于性能工程技能的职责;此处的可观测性关注的是设计信号系统本身,而非调查某个已埋点的个案。当此处定义的信号将决定发布的 failure_action 时,可与交付工程技能配合使用。

主要能力与流程

  1. 在选用任何工具之前,先定义真实的运维问题(例如“结账对用户是否可用?”)和关键用户旅程。
  2. 当服务的关键性足以支撑时,建立 SLI(可测量的指标)和带有明确错误预算的 SLO(可接受目标)。
  3. 映射信任/系统边界(HTTP、队列、任务、数据库)以及需要跨越这些边界的关联上下文(trace id、request id)。
  4. 在设计阶段就为事件、指标和 span 埋点,并控制基数,而非事后补救。
  5. 在遥测中保护敏感数据(脱敏、掩码),并按信号类型定义保留策略。
  6. 构建按决策组织的仪表盘(这块屏幕帮我决定什么?)和按行动组织的告警(告警触发时我该做什么?)。
  7. 在信任遥测之前,先在成功、失败和部分降级三种状态下验证它。

标准与约定

  • 结构化日志(键值或 JSON),包含命名事件、严重级别、关联标识和必要的最小上下文——绝不使用需要正则提取数据的自由文本拼接。
  • 指标仅使用基数有限且已知的标签(归一化端点、状态码、租户数量少时的租户);绝不使用 user id、带查询字符串的原始 URL 或原始错误消息作为标签——每个唯一标签值都会成倍增加存储的时序数量。
  • 追踪在跨越 HTTP、队列和异步任务时保留相同的关联上下文——在队列边缘断裂的 trace 无法调试最常见的问题(服务间的分布式延迟)。
  • 告警应反映真实的用户影响或即将违反 SLO 的风险,且每条告警都有 owner 和可访问的 runbook——没有对应行动的告警是训练团队忽视告警的噪音。
  • 仪表盘从聚合健康视图(RED/USE)开始,并允许下钻到细粒度信号,而非相反。
  • 追踪采样保留 100% 的错误和关键业务事务,即使降低高流量正常路径的采样率。
  • 遥测自身以安全方式失效(降级而非拖垮产品)——指标导出器宕机绝不能拖垮它所埋点的应用。

反模式

  • “记录一切”却无结构和一致的严重级别:增加存储成本并降低事故期间真正找到相关事件的能力——日志量不等于可观测性。
  • 使用高基数标签的指标(如 user_id 或 order_id 作为标签):会爆炸式增加存储的时序数量,可能导致指标后端宕机或成本剧增。
  • 告警配置在原因指标而非症状指标上(如告警“CPU 高”而非“错误率/延迟超出 SLO”):在良性峰值时产生噪音,且不一定检测到真实的用户影响。
  • 仅因“当时看起来有用”而存在的仪表盘,缺乏定期审查:积累过时面板,与真正重要的面板争夺注意力。

验证方式

  • 在受控场景中生成端到端遥测,确认关联(trace id)跨越所有已映射的边界。
  • 验证预估基数、估算成本、已配置的保留策略,以及敏感字段在离开服务前经过脱敏。
  • 确认配置的告警确实在应有的场景下触发(测试或模拟),且绑定的 runbook 可被非代码作者执行。
  • 针对已知故障场景,运行团队在真实事故中会使用的查询,确认它们在有用时间内返回预期信号。
  • 不能仅因存在仪表盘就宣称系统“可观测”;证明是团队能仅凭遥测回答最初的运维问题,而无需访问代码或数据库。

相关技能

  • $specsfy-specialist-debugging 消费信号以隔离原因,并在证据不足时要求额外埋点。
  • $specsfy-specialist-docker 和 $specsfy-specialist-docker-swarm 暴露运行时、服务和节点信号;本技能定义关联与决策。
  • $specsfy-specialist-postgres 和 $specsfy-specialist-redis 产生数据/缓存信号,此处控制其基数和保留策略。
  • $specsfy-specialist-web-api-design 在契约中定义关联和错误;本技能度量端点在运行中的行为。
  • $specsfy-specialist-performance-engineering 用于诊断此处信号已检测到的延迟或瓶颈的根因。
  • $specsfy-specialist-delivery-engineering 当此处定义的健康信号为继续或回滚发布的决策提供输入时使用。
  • $specsfy-specialist-application-security 当遥测需要记录(或刻意不记录)安全事件时使用。

阅读 references/standards.md 了解可观测性支柱、仪表盘框架(RED/USE)、SLI/SLO 以及 OpenTelemetry 官方来源。