SuperAPI AI 工具集

otel-name-span

部署与运维

查看项目

更新于 10-16 04:05

技能介绍

otel-name-span 是一个用于审查或创建 OpenTelemetry Span 名称的技能,目标是让 Span 名称符合 OTel 语义约定(Semantic Conventions),保证低基数、正确的协议特定模式以及名称与属性的合理分离。

用途 该技能用于在编写或评审追踪代码时,检查 Span 名称是否规范。它强调 Span 名称必须具有低基数(low cardinality),即名称描述的是操作类别,而不是具体实例。

核心原则 Span 名称必须低基数。名称描述操作类别,而非具体实例。通用命名模式为 {verb} {object}:动词表示正在执行的工作(如 process、send、calculate、render、validate),对象表示被作用的名称(如 payment、invoice、order)。这种模式自然产生适合分组和聚合的低基数名称。

名称与属性的划分 应放在 Span 名称中的内容:操作类型、资源类别。应放在 Span 属性中的内容:用户 ID、发票号、活动名称、邮政编码、参数值、状态/结果(应使用 span status)。

属性命名 模式为 {object}.{property},使用点号分隔,各段内使用小写 snake_case。相关属性应放在同一命名空间下,例如 order.id、order.total、order.status。名称应保持稳定,让值承载动态数据,例如使用 { "user.id": "12345" } 而不是 { "user_12345.action": "login" }。

系统特定属性 模式为 {system_name}.*.{property},例如 cassandra.consistency.level、aws.s3.key。系统名称必须与 *.system.name 属性中的值一致。

属性要求级别 分为 Required(必须始终存在)、Conditionally Required(在指定条件下必需)、Recommended(可用时应存在)、Opt-In(仅在显式配置时包含)。

Span 状态映射(HTTP) 状态码 1xx、2xx、3xx:服务端 Span 为 Unset (OK),客户端 Span 为 Unset (OK)。4xx:服务端 Span 为 Unset(客户端错误),客户端 Span 为 Error。5xx:服务端 Span 为 Error,客户端 Span 为 Error。

审查清单 审查 Span 定义时需验证:名称是否低基数(不含 ID、时间戳、用户数据、完整 URL);是否遵循 {verb} {object} 或协议特定模式;实例特定数据是否放在 Span 属性而非名称中;结果/状态是否使用 span status 而非名称;HTTP Span 是否使用路由模板而非原始路径;DB Span 是否使用参数化查询;消息 Span 是否遵循 {operation} {destination} 模式;属性是否使用 {object}.{property} 点分隔 snake_case;Span 名称中是否不含服务名、版本或环境;SpanKind 是否与操作类型匹配。

参考材料 references/ 目录中包含详细指导:protocols.md 提供协议特定 Span 命名模式(HTTP、DB、消息、RPC);anti-patterns.md 提供坏到好的命名示例、基数危险信号、属性反模式。

使用方式 在应用任何规则之前,应先获取最新的命名指导以检查更新,包括 OpenTelemetry 官方命名规范、追踪规范以及 2025 年关于如何命名 Span 的博客文章。如果获取的内容与本技能中的任何规则冲突,应遵循获取的内容并标记差异。

输出 提供:已审查 Span 列表及每项检查的通过/失败结果;对违规项的修正建议;属性放置修正(名称 → 属性);缺失或不正确时的 SpanKind 建议;适用时的协议特定模式建议。

适用场景 适用于可观测性工程、分布式追踪、遥测数据治理,以及需要统一 Span 命名规范的团队。

限制 该技能依赖外部 OpenTelemetry 官方文档的最新内容,若无法获取则可能无法检查更新。具体平台、收费、价格等信息暂未提供。