可观测性与监控 observability-monitoring

本技能提供全面的可观测性实施框架,涵盖结构化日志记录、系统指标收集、分布式请求追踪和智能告警策略。适用于微服务架构监控、生产环境故障排查、性能优化和系统可靠性保障。关键词:可观测性、监控、日志、指标、追踪、告警、Prometheus、OpenTelemetry、DevOps、云原生

Docker/K8s 0 次安装 0 次浏览 更新于 3/2/2026

name: observability-monitoring description: 结构化日志、指标、分布式追踪和告警策略 version: 1.0.0 category: 运维与可靠性 agents: [backend-system-architect, code-quality-reviewer, ai-ml-engineer] keywords: [observability, monitoring, logging, metrics, tracing, alerts, Prometheus, OpenTelemetry]

可观测性与监控技能

实现可观测性的综合框架,包括结构化日志、指标、分布式追踪和告警。

何时使用

  • 设置应用监控
  • 实现结构化日志
  • 添加指标和仪表板
  • 配置分布式追踪
  • 创建告警规则
  • 调试生产问题

可观测性三大支柱

┌─────────────────┬─────────────────┬─────────────────┐
│      日志       │      指标       │      追踪       │
├─────────────────┼─────────────────┼─────────────────┤
│ 特定时间点发生  │ 系统随时间      │ 请求如何流经    │
│ 了什么          │ 表现如何        │ 各服务          │
└─────────────────┴─────────────────┴─────────────────┘

结构化日志

日志级别

级别 使用场景
ERROR 未处理的异常、失败的操作
WARN 弃用的API、重试尝试
INFO 业务事件、成功的操作
DEBUG 开发调试

最佳实践

// 好:结构化并带上下文
logger.info('用户操作完成', {
  action: 'purchase',
  userId: user.id,
  orderId: order.id,
  duration_ms: 150
});

// 不好:字符串插值
logger.info(`用户 ${user.id} 完成购买`);

查看 templates/structured-logging.ts 获取Winston设置和请求中间件

指标收集

RED方法(速率、错误、持续时间)

任何服务的基本指标:

  • Rate - 每秒请求数
  • Errors - 每秒失败请求数
  • Duration - 请求延迟分布

Prometheus分桶

// HTTP请求延迟
buckets: [0.01, 0.05, 0.1, 0.5, 1, 2, 5]

// 数据库查询延迟
buckets: [0.001, 0.01, 0.05, 0.1, 0.5, 1]

查看 templates/prometheus-metrics.ts 获取完整指标配置

分布式追踪

OpenTelemetry设置

自动检测常见库:

  • Express/HTTP
  • PostgreSQL
  • Redis

手动跨度

tracer.startActiveSpan('processOrder', async (span) => {
  span.setAttribute('order.id', orderId);
  // ... 工作
  span.end();
});

查看 templates/opentelemetry-tracing.ts 获取完整设置

告警策略

严重级别

级别 响应时间 示例
严重 (P1) < 15分钟 服务宕机、数据丢失
高 (P2) < 1小时 主要功能损坏
中 (P3) < 4小时 错误率增加
低 (P4) 次日 警告

关键告警

告警 条件 严重级别
ServiceDown up == 0 持续1分钟 严重
HighErrorRate 5xx > 5% 持续5分钟 严重
HighLatency p95 > 2秒 持续5分钟
LowCacheHitRate < 70% 持续10分钟

查看 templates/alerting-rules.yml 获取Prometheus告警规则

健康检查

Kubernetes探针

探针 目的 端点
Liveness 应用是否在运行? /health
Readiness 是否准备好接收流量? /ready
Startup 是否完成启动? /startup

就绪状态响应

{
  "status": "healthy|degraded|unhealthy",
  "checks": {
    "database": { "status": "pass", "latency_ms": 5 },
    "redis": { "status": "pass", "latency_ms": 2 }
  },
  "version": "1.0.0",
  "uptime": 3600
}

查看 templates/health-checks.ts 获取实现

可观测性检查清单

实施

  • [ ] JSON结构化日志
  • [ ] 请求关联ID
  • [ ] RED指标(速率、错误、持续时间)
  • [ ] 业务指标
  • [ ] 分布式追踪
  • [ ] 健康检查端点

告警

  • [ ] 服务中断告警
  • [ ] 错误率阈值
  • [ ] 延迟阈值
  • [ ] 资源利用率告警

仪表板

  • [ ] 服务概览
  • [ ] 错误分析
  • [ ] 性能指标

扩展思考触发器

使用Opus 4.5扩展思考用于:

  • 事件调查 - 关联日志、指标、追踪
  • 告警调优 - 减少噪音、捕捉真实问题
  • 架构决策 - 选择监控解决方案
  • 性能调试 - 跨服务延迟分析

模板参考

模板 目的
structured-logging.ts 带请求中间件的Winston日志记录器
prometheus-metrics.ts HTTP、数据库、缓存指标及中间件
opentelemetry-tracing.ts 分布式追踪设置
alerting-rules.yml Prometheus告警规则
health-checks.ts 存活、就绪、启动探针