feat: 完善服务监控与下游重投

This commit is contained in:
hectorzhao
2026-08-14 17:21:29 +08:00
parent d30d9ea4d0
commit 1ef4380422
50 changed files with 1279 additions and 82 deletions
@@ -192,3 +192,48 @@ type InfrastructureOverview = {
8. Prometheus/Exporter 只监听本机,公网不能连接 9090/9100。
9. 页面在桌面和移动宽度下无重叠、截断和横向溢出,控制台无相关错误。
10. TypeScript、API专项测试、生产构建、配置校验和 `git diff --check`通过。
## 9. 服务内部指标扩展(V1.1)
### 9.1 采集边界
- API使用独立回环端口`127.0.0.1:9464/metrics`,采集进程内存、堆内存、事件循环P99、请求量、状态码和延迟直方图。
- Gateway在已有回环控制端口`127.0.0.1:8090/metrics`暴露Go运行时、上下游连接总数、Submit成败和耗时、Redis Stream pending/lag/最旧年龄。
- PostgreSQL、Redis、Nginx使用发行版ExporterMinIO使用原生Prometheus端点。全部Exporter只监听回环地址。
- 指标标签只允许方法、路由模板、HTTP状态、结果类别和固定服务名。禁止手机号、短信ID、CMPP Msg_Id、任务ID、通道凭据、短信正文、原始URL和SQL文本进入标签。
- 监控页只查询`cmpp:service_*`固定Recording Rules,不为每张卡片执行一条高代价PromQL。
### 9.2 默认阈值
| 领域 | Warning | Critical | 持续窗口 |
|---|---:|---:|---:|
| CPU | >80% | >90% | 10m / 5m |
| 内存 | >85% | >95% | 10m / 5m |
| 磁盘或inode | >80% | >90% | 15m / 5m |
| API 5xx | >1%且至少5次 | >5%且至少5次 | 5m |
| API P95 | >1s | >3s | 10m / 5m |
| API事件循环P99 | >200ms | >1s | 10m / 5m |
| Gateway提交队列最旧pending | >30s | >120s | 2m |
| Gateway实际上游连接 | — | 少于期朖2m | 2m |
| PostgreSQL连接使用率 | >70% | >85% | 10m / 5m |
| PostgreSQL死锁 | 15m内>0 | 15m内重复出现 | 1m |
| Redis内存/maxmemory | >70% | >85% | 10m / 5m |
| Redis淘汰或拒绝连接 | — | 5m内>0 | 1m |
| 任一核心Exporter失联 | — | >2m | 2m |
| Prometheus采集耗时/周期 | >80% | >100% | 5m |
| Prometheus规则计算失败 | — | 5m内>0 | 1m |
比例告警必须带最低样本量,不得把单次失败误报为100%错误率。短信最终回执可由运营商延迟数小时,不纳入Gateway基础设施短窗口Critical,仍由72小时业务终结机制和短信质量看板处理。
### 9.3 告警收敛与校准
- 主机或Node Exporter失联时,抑制其CPU、内存和磁盘派生告警;API/Gateway指标端点失联时,抑制对应延迟和错误率告警。
- Critical表示需立即处理;Warning表示当日检查;趋势指标未达到可操作条件时只展示,不生成告警。
- 上线后保留7至14天基线,核对业务高峰P95/P99、正常连接数和队列年龄。阈值调整必须同步修改设计、用例、规则和进度记录。
### 9.4 性能预算
- 全局采集周期保持15秒,无排障需求不降到1秒。
- API和Gateway请求路径只做内存计数、有界直方图和原子计数,不在业务请求中写PostgreSQL或Redis。
- PostgreSQL Exporter只使用发行版默认低代价查询,不采集SQL原文或扫描业务大表。
- 时序仍受30天和8GB双重上限约束;时序增长时先缩短实际保留期,不允许无界占满业务盘。