Communitygithub.com

可观测性技能

你无法修复看不见的问题。可观测性是设计内置的,而不是事后在事故发生后临时添加的。如果回答生产环境的问题需要更改代码,那么说明检测手段是错误的。

可观测性技能 是什么?

这个可观测性技能为AI代理(如Claude Code、Cursor、Codex)提供了一组核心原则和实用规则,旨在帮助开发者将可观测性构建到系统设计中。它强调“三条支柱”(日志、指标、追踪)同等重要,并详细说明了如何实施结构化日志、关联追踪ID、使用RED和USE指标,以及基于服务等级目标(SLO)设置告警。该技能适用于任何需要生产级可靠性的平台或项目,特别是在分布式系统和微服务架构中。它通过清晰的规则和危险信号,帮助代理避免常见反模式(如SSH调试生产环境、仅展示平均值指标),并确保告警总是附带可操作的runbook。开发者可以以此来指导编码和部署决策,从而构建可运维、可诊断的软件系统。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Piyush-Nagar/coding-agents-skills/tree/HEAD/backend/core/nfr/observability

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

可观测性

你无法修复看不见的问题。可观测性是设计内置的,而不是事后在事故发生后临时添加的。如果回答生产环境的问题需要更改代码,那么说明检测手段是错误的。

规则

  • 三条支柱:日志、指标、追踪。 每一条回答不同的问题——发生了什么(日志)、多少以及多频繁(指标)、为什么慢(追踪)。你需要全部三条。
  • 仅使用结构化日志。 JSON(或类似格式)优先。在大规模下,grep 不是一个可行的策略。
  • 每条日志行中包含关联 ID / 追踪 ID。 在服务边界之间通过请求头传播它。一个 ID 即可缝合整个请求旅程。
  • 每个端点启用 RED 指标。 速率(Rate)、错误(Errors)、持续时间(Duration,包含 P50/P95/P99)。这是发现性能回归的最小需求。
  • 每个资源启用 USE 指标。 利用率(Utilization)、饱和度(Saturation)、错误(Errors)——针对 CPU、内存、连接池、队列、磁盘、网络。
  • 追踪每次跨服务调用。 使用 OpenTelemetry。数据库查询和缓存命中也应作为 span 捕获。
  • 基于 SLO 进行告警,而不是原始指标。 “CPU > 80%” 在凌晨三点把人叫醒毫无意义。“P99 延迟打破 SLO 持续 5 分钟” 才能抓到真正的用户痛点。
  • 健康检查和就绪检查是不同端点。 /health = “我还活着,不要重启我。” /ready = “我现在可以接收流量。” 请按此对待。
  • 在正确的级别记录,每个事件只记录一次。 INFO 用于请求生命周期,WARN 用于可恢复的问题,ERROR 用于需要人为介入的事情。重复的日志会让仪表盘失真。
  • 绝不记录 PII 或秘密。 在日志输出器层面进行掩码处理;不要依赖调用者记住这件事。
  • 每条告警指向一个 Runbook。 没有记录操作的告警只是一个假装在呼叫值班人员的 Slack 通知。

危险信号

  • 通过 SSH 进入 Pod 来调试生产环境。
  • 频繁触发却被忽略的告警。(告警疲劳本身就是一个可靠性问题。)
  • 日志内容为 "error occurred",却没有任何上下文、ID 或堆栈信息。
  • 仅显示平均值、没有百分位的指标。
  • 按服务划分仪表盘,却没有按用户旅程划分的仪表盘。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

相关技能