监控告警

完善的监控和告警是保证分布式 ID 系统稳定运行的关键。

监控指标

1. 核心指标

QPS(每秒查询数)

QPS = 每秒生成的 ID 数量

阈值:
- 正常:> 10,000
- 警告:< 10,000
- 严重:< 1,000

延迟(Latency)

P50:50% 的请求延迟
P99:99% 的请求延迟
P999:99.9% 的请求延迟

阈值:
- 优秀:P99 < 1ms
- 良好:P99 < 10ms
- 警告:P99 < 100ms
- 严重:P99 ≥ 100ms

错误率(Error Rate)

错误率 = 失败请求数 / 总请求数 × 100%

阈值:
- 优秀:< 0.01%
- 良好:< 0.1%
- 警告:< 1%
- 严重:≥ 1%

可用性(Availability)

可用性 = (总时间 - 停机时间) / 总时间 × 100%

阈值:
- 优秀:≥ 99.99%
- 良好:≥ 99.9%
- 警告:≥ 99%
- 严重:< 99%

2. 资源指标

CPU 使用率

阈值:
- 正常:< 70%
- 警告:70-90%
- 严重:> 90%

内存使用率

阈值:
- 正常:< 70%
- 警告:70-90%
- 严重:> 90%

网络带宽

阈值:
- 正常:< 70%
- 警告:70-90%
- 严重:> 90%

3. 业务指标

Buffer 使用率

Buffer 使用率 = 已分配 ID / Buffer 总容量 × 100%

阈值:
- 正常:< 50%
- 警告:50-80%
- 严重:> 80%

号段获取频率

号段获取频率 = 每秒获取号段次数

阈值:
- 正常:< 10 次/秒
- 警告:10-50 次/秒
- 严重:> 50 次/秒

监控实现

1. 使用 Prometheus

配置

配置要点

  • 配置表达的是环境差异和运行参数,不是业务规则本身。

Java 实现


2. 使用 Micrometer

配置


告警策略

1. 告警级别

P0 - 严重告警

- 系统完全不可用
- QPS = 0
- 错误率 > 10%

响应时间:立即处理(< 5分钟)

P1 - 高级告警

- 系统部分故障
- QPS < 1,000
- 错误率 > 1%

响应时间:1小时内处理

P2 - 中级告警

- 性能下降
- QPS < 10,000
- 延迟 P99 > 100ms

响应时间:24小时内处理

P3 - 低级告警

- 资源使用率偏高
- Buffer 使用率 > 50%

响应时间:持续观察

2. 告警规则

Prometheus 告警规则

配置要点

  • 配置表达的是环境差异和运行参数,不是业务规则本身。

告警通知

1. 通知方式

邮件


短信


钉钉/企业微信


2. 告警聚合

聚合策略

同一类型的告警在 5 分钟内只发送一次
严重告警立即发送
其他告警批量发送

日志追踪

1. 结构化日志

实现


2. 分布式追踪

使用 Sleuth + Zipkin


监控面板

1. Grafana 面板

关键指标

  • QPS 趋势图
  • 延迟分布图
  • 错误率趋势图
  • 资源使用率图
  • Buffer 使用率图

2. 自定义面板

示例

配置要点

  • 配置表达的是环境差异和运行参数,不是业务规则本身。
  • 队列、缓存、存储和服务参数决定系统在高峰期的缓冲能力。

最佳实践

1. 完善的监控

✅ 监控所有核心指标
✅ 设置合理的阈值
✅ 实现多级告警
✅ 支持多种通知方式

2. 及时的告警

✅ P0 告警立即处理
✅ P1 告警 1 小时内处理
✅ P2 告警 24 小时内处理
✅ P3 告警持续观察

3. 完整的日志

✅ 结构化日志
✅ 分布式追踪
✅ 日志聚合
✅ 日志分析

总结

完善的监控和告警系统是保证分布式 ID 系统稳定运行的关键。


课程总结

恭喜你完成了《系统设计 - 分布式 ID 生成器》课程!

你学到了: ✅ 分布式 ID 的多种方案 ✅ 各方案的优缺点和适用场景 ✅ 生产级系统的设计原则 ✅ 完整的系统架构 ✅ 监控和告警策略

下一步

建议继续学习:

  • 系统设计其他主题
  • 分布式系统设计
  • 微服务架构
  • 高可用系统设计

感谢学习!🎉