mcpField
R
rust-observability

rust-observability

github.com/full-stack-skills开发12113 次安装5 周前更新
代码仓库

关于 rust-observability

Rust Observability 是围绕运维问题和故障模式设计遥测的技能,面向 Rust 开发者。它指导日志、追踪、指标和性能剖析的选择与验证,并关注隐私、标签基数和数据管道行为。

主要功能

  1. 01使用 span 和事件进行结构化追踪
  2. 02限制指标标签基数
  3. 03传播分布式上下文
  4. 04配置导出器与关闭流程
  5. 05测试遥测行为

适用场景

  1. 01为 Rust 服务请求添加遥测
  2. 02跟踪延迟、错误和饱和度
  3. 03跨服务边界传播追踪信息
  4. 04测试数据脱敏和导出器故障处理

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/full-stack-skills/rust-skills --skill rust-observability

安装后在 Claude Code 中输入/rust-observability确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
examples/
examples.md
examples/golden-observability/
Cargo.lock
Cargo.toml
examples/golden-observability/src/
lib.rs
references/
metrics-and-cardinality.md
opentelemetry-and-context.md
runtime-and-operations.md
tracing-and-logs.md

详细介绍

Rust 可观测性

根据运维问题和故障模式设计遥测。日志解释离散事件,跟踪串联跨边界的工作,指标量化一段时间内的行为,性能分析则用于诊断资源消耗。不要将所有数据发送到所有信号中。

范围与路由

将此技能用于 tracing、订阅器、结构化日志、指标、OpenTelemetry、上下文传播、采样、导出器、请求关联、异步运行时诊断、脱敏和关闭时刷新。

并发正确性请转到 rust-concurrency,HTTP 中间件请转到 rust-web,安全事件策略请转到 rust-web-security,性能分析请转到 rust-performance,依赖项特性请转到 rust-cargo-build。

工作流

1. 从决策和 SLO 入手

列出运维人员必须回答的问题:请求速率和延迟、错误类别、饱和度、队列深度、重试、依赖项健康状况、任务泄漏、资源使用情况和部署标识。选择导出器之前,先定义服务名称、环境、版本、实例属性、负责人、保留期限、访问控制和成本预算。

2. 建立结构化跟踪

对有持续时间且包含嵌套工作的操作使用 tracing span;对在某一时刻发生的事实使用事件。

use tracing::{info, instrument};

#[instrument(skip(payload), fields(job.id = job_id))]
async fn process(job_id: u64, payload: &[u8]) {
    info!(payload.len = payload.len(), outcome = "accepted");
}
  • 使用一致的名称和字段来表达领域含义。
  • 跳过机密、正文、凭据、原始 SQL 值和大型负载。
  • 记录稳定的错误类别和结果,而不是只记录格式化消息。
  • 确保在轮询期间进入已插桩的 future;不要跨 .await 错误地持有 span guard。
  • 在应用边界配置过滤和格式化,而不是在库内部配置。

阅读跟踪与结构化日志。

3. 设计有界指标

总量使用计数器,当前状态使用仪表,分布使用直方图。使用稳定且低基数的标签记录吞吐量、延迟、错误、饱和度、队列等待时间、重试、拒绝和资源池情况。

绝不要将用户 ID、请求 ID、包含原始路径的 URL、SQL 文本、任意错误消息或无界租户 ID 用作指标标签。根据 SLO 定义直方图的单位和桶。阅读指标与基数。

4. 传播分布式上下文

仅从可信的传输格式中提取远程跟踪上下文,创建服务端或使用者 span,并将当前上下文注入出站请求或消息。谨慎保留跨已派生任务的因果关系;分离的后台工作可能需要链接,而非继承父级。

只有在需要互操作性或厂商中立导出时才使用 OpenTelemetry。检查各信号的成熟度、crate 版本、运行时要求、批处理行为和导出器兼容性。阅读OpenTelemetry 与上下文。

5. 配置管道和关闭流程
  • 在进程启动时组合订阅器和层,且仅组合一次。
  • 仅通过经过身份验证并经过审计的控制使过滤器可重新加载。
  • 限制导出器队列,并定义丢弃或背压行为。
  • 使用明确的策略对跟踪进行采样;确保错误和罕见路径可观测,同时避免成功流量成本过高。
  • 在服务关闭期限内刷新或关闭遥测提供程序。
  • 避免导出器通过同一条已插桩的网络路径递归产生遥测。
6. 验证遥测行为

测试字段名称、级别、错误类别、上下文传播、脱敏、基数、禁用订阅器时的行为、导出器故障、队列饱和和关闭时刷新。使用测试订阅器或内存导出器,不要断言不稳定的格式化行。

在诊断构建中使用 tokio-console 查找长时间轮询、资源等待和泄漏的任务;不要公开其控制端点。阅读运行时与运维。

完成标准

  • 将每个信号关联到一个运维问题或 SLO。
  • 使用结构化 span 和事件,字段保持稳定并明确进行脱敏。
  • 限制指标标签的基数,并定义直方图单位。
  • 在受支持的入站、出站和消息传递边界传播跟踪上下文。
  • 限制导出器成本、队列、采样和关闭时间。
  • 将遥测作为行为进行测试,不与特定文本格式化工具或供应商耦合。

资源

上游来源

数据隐私

此技能不会收集、存储或传输用户数据。遥测变更可能会传输生产数据;启用导出器前,请确认授权、目标位置、保留期限、脱敏方式和访问控制。

评论

支持 Markdown