name: qa-observability description: “实现和验证质量工程的可观测性:OpenTelemetry日志/指标/追踪、W3C追踪上下文传播、SLI/SLO + 错误预算发布门禁、燃尽率告警、基于追踪的测试失败调试、采样/基数/成本控制、性能剖析(CPU/内存/连续)、合成/RUM信号,以及APM堆栈集成(Prometheus/Grafana/Jaeger/Tempo/Loki/Datadog/New Relic)。”
QA可观测性与性能工程
使用遥测(日志、指标、追踪、剖析)作为QA信号和调试基础。
核心参考:
- OpenTelemetry: https://opentelemetry.io/docs/
- W3C追踪上下文: https://www.w3.org/TR/trace-context/
- Google SRE SLOs: https://sre.google/sre-book/service-level-objectives/
默认QA立场
- 将遥测视为验收标准的一部分(特别是对于集成/E2E测试)。
- 要求关联:request_id + trace_id(traceparent)跨边界。
- 偏好基于SLO的发布门禁和燃尽率告警,而非原始基础设施阈值。
- 预算开销:采样、基数、保留和成本是质量约束。
- 默认情况下,对PII/秘密进行编辑(日志和属性)。
核心工作流程
- 建立最低标准(日志 + 指标 + 追踪 + 关联)。
- 使用OpenTelemetry进行仪表化(首先自动仪表化,然后为关键路径添加手动跨度)。
- 验证跨服务边界的上下文传播(traceparent输入/输出)。
- 定义SLI/SLO和错误预算策略;设置燃尽率告警。
- 使失败可诊断:每次测试失败时捕获追踪链接 + 关键日志。
- 只有在遥测可靠后,才进行剖析和负载测试;与基线进行验证。
快速参考
| 任务 | 推荐默认 | 备注 |
|---|---|---|
| 追踪 | OpenTelemetry + Jaeger/Tempo | 尽可能通过Collector使用OTLP导出器 |
| 指标 | Prometheus + Grafana | 使用直方图处理延迟;注意基数 |
| 日志记录 | 结构化JSON + 关联ID | 切勿记录秘密/PII;积极编辑 |
| 可靠性门禁 | SLOs + 错误预算 + 燃尽率告警 | 基于持续燃烧/回归门禁发布 |
| 性能 | 剖析 + 负载测试 + 预算 | 为间歇性问题添加连续剖析 |
| 零代码可见性 | eBPF(OpenTelemetry零代码)+ 连续剖析(Parca/Pyroscope) | 当代码更改不可行时使用 |
导航
需要时打开这些指南:
| 如果用户需要… | 阅读 | 同时使用 |
|---|---|---|
| 一个最小化、生产就绪的基线 | references/core-observability-patterns.md |
assets/checklists/template-observability-readiness-checklist.md |
| Node/Python仪表化设置 | references/opentelemetry-best-practices.md |
assets/opentelemetry/nodejs/opentelemetry-nodejs-setup.md, assets/opentelemetry/python/opentelemetry-python-setup.md |
| 跨服务的工作追踪传播 | references/distributed-tracing-patterns.md |
assets/checklists/template-observability-readiness-checklist.md |
| SLOs、燃尽率告警和发布门禁 | references/slo-design-guide.md |
assets/monitoring/slo/slo-definition.yaml, assets/monitoring/slo/prometheus-alert-rules.yaml |
| 基于证据的剖析/负载测试 | references/performance-profiling-guide.md |
assets/load-testing/load-testing-k6.js, assets/load-testing/template-load-test-artillery.yaml |
| 成熟度模型和路线图 | references/observability-maturity-model.md |
assets/checklists/template-observability-readiness-checklist.md |
| 应避免的事项以及如何修复 | references/anti-patterns-best-practices.md |
assets/checklists/template-observability-readiness-checklist.md |
实施指南(深度探讨):
references/core-observability-patterns.mdreferences/opentelemetry-best-practices.mdreferences/distributed-tracing-patterns.mdreferences/slo-design-guide.mdreferences/performance-profiling-guide.mdreferences/observability-maturity-model.mdreferences/anti-patterns-best-practices.md
模板(复制/粘贴):
assets/checklists/template-observability-readiness-checklist.mdassets/opentelemetry/nodejs/opentelemetry-nodejs-setup.mdassets/opentelemetry/python/opentelemetry-python-setup.mdassets/monitoring/slo/slo-definition.yamlassets/monitoring/slo/prometheus-alert-rules.yamlassets/monitoring/grafana/grafana-dashboard-slo.jsonassets/monitoring/grafana/template-grafana-dashboard-observability.jsonassets/load-testing/load-testing-k6.jsassets/load-testing/template-load-test-artillery.yamlassets/performance/frontend/template-lighthouse-ci.jsonassets/performance/backend/template-nodejs-profiling-config.js
精选来源:
data/sources.json
范围边界(交接)
- 纯基础设施监控(Kubernetes, Docker, CI/CD):
../ops-devops-platform/SKILL.md - 数据库查询优化(SQL调优、索引):
../data-sql-optimization/SKILL.md - 应用程序级调试(堆栈追踪、断点):
../qa-debugging/SKILL.md - 测试策略设计(覆盖率、测试金字塔):
../qa-testing-strategy/SKILL.md - 弹性模式(重试、断路器):
../qa-resilience/SKILL.md - 架构决策(微服务、事件驱动):
../software-architecture-design/SKILL.md
工具选择说明(2026)
- 默认情况下,尽可能使用OpenTelemetry + OTLP + Collector。
- 偏好基于SLO的燃尽率告警,而非原始基础设施指标告警。
- 将采样、基数和保留视为质量的一部分(而不是事后考虑)。
- 当被要求选择供应商/工具时,从
data/sources.json开始,并在环境允许的情况下使用当前文档/发布验证时间敏感声明。