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 |
存活、就绪、启动探针 |