关于 software-instrumentation
这是一套与工具无关的软件观测指导,涵盖日志、指标、追踪、错误报告和产品事件追踪。它帮助团队规范埋点决策,具体厂商配置则交由相应工具处理。
主要功能
- 01按生产问题选择信号
- 02错误处理与报告指导
- 03结构化日志规范
- 04指标类型、标签与封装
- 05产品事件命名、身份与同意机制
适用场景
- 01规划新操作的遥测
- 02审查错误捕获和日志实践
- 03添加服务健康指标
- 04追踪功能使用与转化事件
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ axross/ skills --skill software-instrumentation安装后在 Claude Code 中输入/software-instrumentation确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/error-handling.mderror-tracking.mdlogging.mdmetrics.mdproduct-event-tracking.md详细介绍
软件埋点
在为软件添加埋点以便观察其行为时,使用此能力——添加或审查用于发出遥测信号(日志、错误、跟踪或产品事件)的代码,或配置这些信号所流向的工具。良好的埋点能让生产事故从猜测变成查证。
本指南刻意不依赖具体工具。它提到的是角色——你的结构化日志记录器、你的错误跟踪工具(错误报告服务)、你的分析工具——而不是特定 SDK;代码片段使用 logger.info(...)、reportError(...) 和 trackEvent(...) 等占位函数名,可映射到项目采用的任何实现。应用规则时,请替换成具体名称;保留其结构。
这类替换正是特定供应商的能力发挥作用之处。依赖哪个软件包、哪个选项控制收集哪些数据、如何将源映射上传到服务,以及其构建时令牌可能出现在哪里,这些都是供应商相关的问题,本技能不会解答;这些问题由已安装的跟踪工具自身的埋点能力负责。请结合使用:本技能决定埋点什么,供应商的能力则决定如何实现。
可观测性建立在三种信号类型之上——日志、指标和跟踪——并通过规范的错误处理和专用的错误跟踪工具让这些信号发挥作用。产品事件与它们并列:同样是测量,但关注的是用户行为而非系统健康,并有各自的命名、身份和同意规则。以下每个参考文档各自负责其中一项;请加载与本次更改相关的文档。
本文中的关键词“MUST”、“MUST NOT”、“REQUIRED”、“SHALL”、“SHALL NOT”、“SHOULD”、“SHOULD NOT”、“RECOMMENDED”、“MAY”和“OPTIONAL”,应按 RFC 2119 中的说明进行解释。
选择信号
选择能够回答你预期在生产环境中提出的问题的信号,而不是最容易添加的信号。以下流程会将需求引导至相应信号及其负责的参考文档;跟踪通过错误跟踪工具的跟踪集成进行埋点,因此归入错误跟踪范畴。
flowchart TD
Q{What do you need to answer?} --> R1[Record that a specific operation happened, and how far it got]
Q --> R2[Count or aggregate a rate over time - request rate, latency, error rate]
Q --> R3[Follow one request across service or module boundaries]
Q --> R4[Measure user behavior - a feature used, a funnel step, a conversion]
R1 --> S1[Log line - see Logging]
R2 --> S2[Metric - see Metrics]
R3 --> S3[Trace - see Error Tracking, trace/replay sampling]
R4 --> S4[Product event - see Product Event Tracking]
意外故障不在此流程中,因为它不属于这些选项之一:将其报告给错误跟踪工具(参见“错误处理”和“错误跟踪”),并通过规范的日志记录提供故障发生前的线索。
错误处理
请参阅 error-handling.md,了解:
- try-catch 块应放置在哪里,以及错误如何传播到根调用点
- 捕获错误后的决策流程——重新抛出控制流信号、报告意外故障,然后恢复或重新抛出
- 在提前返回、重定向或进入回退路径之前报告捕获的错误
- 顶层错误边界,以及如何编写可采取行动的错误消息
错误跟踪
请参阅 error-tracking.md,了解:
- 如何通过一个项目封装层或初始化/配置文件集成错误报告服务
- 如何添加捕获调用,以及哪些故障值得捕获,哪些属于普通控制流
- 面包屑、跟踪/回放采样和埋点边界
- 如何避免将机密和个人身份信息 (PII) 放入遥测事件上下文
日志记录
请参阅 logging.md,了解:
- 何时值得记录某项操作,以及何时日志只会造成噪声
- 日志级别的决策流程,以及如何选择级别(
info/warn/debug;对于没有错误跟踪工具的项目,error为保留级别) - 如何配置一个共享的根日志记录器,并从中派生模块级子日志记录器
- 结构化上下文对象以及“Started / Completed”消息约定
指标
请参阅 metrics.md,了解:
- 判断健康信号何时应成为指标,而不是日志行
- 选择计数器、仪表盘或分布,并声明单位
- 限制标签的基数,以及绝不能用作标签的标识符
- 通过一个受控、非阻塞且不会抛出异常的封装器发送数据
产品事件跟踪
请参阅 product-event-tracking.md,了解:
- 由哪个模块统一管理分析 SDK,以及前置的类型化事件架构
- 如何命名、添加或重命名事件,使其经得起重新设计,并在同一个边界处规范化名称和键
- 事件属性与用户属性、基数,以及绝不能放入负载的内容
- 仅在成功时记录的事实和意图事件、必要的结果诊断,以及服务端场景
- 身份调用、注销时重置、会话定义,以及经用户同意后再初始化
- 如何在测试中断言事件,以及如何迁移或弃用事件而不清空图表