|
1 | | -好的 ✅ |
2 | | -我帮你整理一个完整的 README 文档,包括模块说明、目录结构、API 示例、数据库设计、以及后续扩展说明。这样团队成员在接手或协作时能快速上手。 |
| 1 | +# Monitoring & Alerting Service |
3 | 2 |
|
4 | | -⸻ |
| 3 | +## 概述 |
5 | 4 |
|
6 | | -Monitoring & Alerting Service |
| 5 | +本模块提供 监控/告警处理能力,实现从告警接收到自动治愈的完整生命周期管理。 |
7 | 6 |
|
8 | | -📌 概述 |
| 7 | +**核心思想:** |
| 8 | +- 告警规则采用 模版 + 服务元数据 (Metadata) 的方式定义,便于统一管理和灵活扩展。 |
| 9 | +- 支持自动化处理、AI 辅助分析和多级告警分级。 |
9 | 10 |
|
10 | | -本服务为 监控 / 告警处理模块,用于统一接收、存储、处理、恢复和记录告警信息。它提供了标准化的 API 接口,支持告警生命周期管理、规则调整、告警元数据管理、周期性健康检查、告警等级计算,以及自动化治愈行为处理。 |
| 11 | +--- |
11 | 12 |
|
12 | | -目标: |
13 | | - • 提高告警处理自动化程度 |
14 | | - • 支持 AI/系统/人工协同处理 |
15 | | - • 为平台提供可追踪的告警问题管理与分析 |
16 | | - |
17 | | -⸻ |
18 | | - |
19 | | -📂 目录结构 |
| 13 | +## 目录结构 |
20 | 14 |
|
| 15 | +``` |
21 | 16 | alerting/ |
22 | | -├── api/ # API 接口层,定义 HTTP handler |
23 | | -├── database/ # 数据库相关定义和 migration |
24 | | -├── model/ # 数据模型 (ORM/DTO) |
| 17 | +├── api/ # API 接口层,提供 RESTful 访问 |
| 18 | +├── database/ # 数据库定义和 migration |
| 19 | +├── model/ # 数据模型 (ORM / DTO) |
25 | 20 | ├── service/ # 核心业务逻辑 |
26 | 21 | │ ├── receiver/ # 告警接收与处理 |
27 | | -│ ├── rules/ # 告警规则调整 |
28 | | -│ ├── metadata/ # 监控与告警元数据 |
| 22 | +│ ├── ruleset/ # 告警规则模版 + metadata |
29 | 23 | │ ├── healthcheck/ # 周期体检任务 |
30 | 24 | │ ├── severity/ # 告警等级计算 |
31 | 25 | │ └── remediation/ # 自动化治愈行为 |
32 | 26 | └── README.md # 项目说明文档 |
| 27 | +``` |
| 28 | + |
| 29 | + |
| 30 | +--- |
33 | 31 |
|
| 32 | +## 数据库设计 |
34 | 33 |
|
35 | | -⸻ |
| 34 | +数据库采用4张核心表设计:告警问题表、评论表、模版表和服务元数据表。 |
36 | 35 |
|
37 | | -🗄 数据库设计 |
| 36 | +详细的表结构设计、索引建议和性能优化方案请参考:**[数据库设计文档](../../docs/alerting/database-design.md)** |
38 | 37 |
|
39 | | -1) alert_issues(告警问题表) |
40 | 38 |
|
41 | | -字段名 类型 说明 |
42 | | -id varchar(255) PK 告警 issue ID |
43 | | -state enum(Closed, Open) 告警状态 |
44 | | -level varchar(32) 告警等级,如 P0/P1/P2/Warning |
45 | | -alertState enum(Restored, AutoRestored, InProcessing) 告警处理状态 |
46 | | -title varchar(255) 告警标题 |
47 | | -label json 标签,格式:[{key, value}] |
48 | | -alertSince timestamp 告警发生时间 |
| 39 | +--- |
49 | 40 |
|
| 41 | +## 告警规则机制 |
50 | 42 |
|
51 | | -⸻ |
| 43 | +告警规则由两部分组成: |
52 | 44 |
|
53 | | -2) alert_issue_comments(告警评论表) |
| 45 | +### 1. 模版 (Template) |
54 | 46 |
|
55 | | -字段名 类型 说明 |
56 | | -issueID varchar(255) FK 对应 alert_issues.id |
57 | | -createAt timestamp 评论创建时间 |
58 | | -content text Markdown 格式,记录 AI/系统/人工动作 |
| 47 | +定义规则逻辑,带占位符: |
59 | 48 |
|
| 49 | +```json |
| 50 | +{ |
| 51 | + "id": "tmpl_apitime", |
| 52 | + "expr": "apitime > {apitime_threshold}", |
| 53 | + "level": "P1" |
| 54 | +} |
| 55 | +``` |
60 | 56 |
|
61 | | -⸻ |
| 57 | +### 2. 服务 Metadata (Service Config) |
62 | 58 |
|
63 | | -🌐 API 接口 |
| 59 | +不同服务定义不同的阈值: |
64 | 60 |
|
65 | | -1. 获取告警列表 |
| 61 | +```json |
| 62 | +{ |
| 63 | + "serviceA": { "apitime_threshold": 100 }, |
| 64 | + "serviceB": { "apitime_threshold": 50 } |
| 65 | +} |
| 66 | +``` |
66 | 67 |
|
67 | | -GET /v1/issues?start=xxxx&limit=10[&state=Closed] |
| 68 | +### 3. 展开后的实际规则 (Resolved Rule) |
68 | 69 |
|
69 | | -Response |
| 70 | +模版 + metadata → 生成实际规则: |
70 | 71 |
|
| 72 | +```json |
71 | 73 | { |
72 | | - "items": [ |
73 | | - { |
74 | | - "id": "xxx", |
75 | | - "state": "Closed", |
76 | | - "level": "P0", |
77 | | - "alertState": "Restored", |
78 | | - "title": "yzh S3APIV2s3apiv2.putobject 0_64K上传响应时间95值:50012ms > 450ms", |
79 | | - "labels": [ |
80 | | - {"key": "api", "value": "s3apiv2.putobject"}, |
81 | | - {"key": "idc", "value": "yzh"} |
82 | | - ], |
83 | | - "alertSince": "2025-05-05 11:00:00.0000Z" |
84 | | - } |
85 | | - ] |
| 74 | + "service": "serviceA", |
| 75 | + "expr": "apitime > 100", |
| 76 | + "level": "P1" |
86 | 77 | } |
| 78 | +``` |
87 | 79 |
|
| 80 | +```json |
| 81 | +{ |
| 82 | + "service": "serviceB", |
| 83 | + "expr": "apitime > 50", |
| 84 | + "level": "P1" |
| 85 | +} |
| 86 | +``` |
88 | 87 |
|
89 | | -⸻ |
90 | 88 |
|
91 | | -2. 获取告警详情 |
| 89 | +--- |
92 | 90 |
|
93 | | -GET /v1/issues/:issueID |
| 91 | +## 流程图 |
94 | 92 |
|
95 | | -Response |
| 93 | +### 规则生成流程 |
96 | 94 |
|
97 | | -{ |
98 | | - "id": "xxx", |
99 | | - "state": "Closed", |
100 | | - "level": "P0", |
101 | | - "alertState": "Restored", |
102 | | - "title": "yzh S3APIV2s3apiv2.putobject 0_64K上传响应时间95值:50012ms > 450ms", |
103 | | - "labels": [ |
104 | | - {"key": "api", "value": "s3apiv2.putobject"}, |
105 | | - {"key": "idc", "value": "yzh"} |
106 | | - ], |
107 | | - "alertSince": "2025-05-05 11:00:00.0000Z", |
108 | | - "comments": [ |
109 | | - { |
110 | | - "createAt": "2024-01-03T03:00:00Z", |
111 | | - "content": "markdown content" |
112 | | - } |
113 | | - ] |
114 | | -} |
| 95 | +```mermaid |
| 96 | +flowchart TD |
| 97 | + TPL[告警模版<br/>(Templates)<br/>例: apitime > {apitime_threshold}] --> META |
| 98 | + META[服务 Metadata<br/>(Service Config)<br/>例: serviceA=100, serviceB=50] --> RESOLVED |
| 99 | + RESOLVED[实际告警规则<br/>(Resolved Rules)<br/>例: serviceA: apitime>100<br/>serviceB: apitime>50] --> ALERT |
| 100 | + ALERT[告警触发<br/>(Alert Trigger)<br/>生成 Issue & 进入处理流程] |
| 101 | +``` |
| 102 | + |
| 103 | + |
| 104 | +--- |
| 105 | + |
| 106 | +## API 接口 |
115 | 107 |
|
| 108 | +服务提供 RESTful API 接口,支持告警列表查询、详情获取等核心功能。 |
116 | 109 |
|
117 | | -⸻ |
| 110 | +主要接口包括: |
| 111 | +- `GET /v1/issues` - 获取告警列表 |
| 112 | +- `GET /v1/issues/{issueID}` - 获取告警详情 |
118 | 113 |
|
119 | | -⚙️ Service 模块功能 |
| 114 | +完整的接口文档、请求参数、响应格式和使用示例请参考:**[API 文档](../../docs/alerting/api.md)** |
120 | 115 |
|
121 | | -1. receiver/ 告警接收与处理 |
122 | | - • 统一接收外部监控系统告警(如 Prometheus、Grafana、内部 SDK) |
123 | | - • 将原始告警写入数据库 |
124 | | - • 触发告警处理流程 |
125 | 116 |
|
126 | | -2. rules/ 告警规则调整 |
127 | | - • 支持动态调整告警触发规则(如阈值、持续时间、条件组合) |
128 | | - • 提供规则存储、加载与热更新 |
| 117 | +--- |
129 | 118 |
|
130 | | -3. metadata/ 监控与告警元数据 |
131 | | - • 存储告警相关上下文(服务信息、监控指标、依赖关系) |
132 | | - • 便于查询与告警溯源 |
| 119 | +## 模块功能说明 |
133 | 120 |
|
134 | | -4. healthcheck/ 周期体检任务 |
135 | | - • 定时扫描核心服务,生成健康报告 |
136 | | - • 与告警系统集成,主动发现潜在风险 |
| 121 | +- **receiver/**:统一接收告警,写入数据库,触发处理流程 |
| 122 | +- **ruleset/**:管理告警模版 & 服务 metadata,生成实际规则 |
| 123 | +- **healthcheck/**:周期性体检,提前发现潜在问题 |
| 124 | +- **severity/**:计算告警等级 = 原始等级 + 影响范围 |
| 125 | +- **remediation/**:自动化治愈动作(回滚),并记录处理日志 |
137 | 126 |
|
138 | | -5. severity/ 告警等级计算 |
139 | | - • 综合 告警原始等级 + 影响范围(服务/用户/地区) |
140 | | - • 动态调整告警优先级(如 P2 → P1) |
| 127 | +## 相关文档 |
141 | 128 |
|
142 | | -6. remediation/ 自动化治愈行为 |
143 | | - • 提供预定义自动修复动作(重启服务、扩容、流量切换) |
144 | | - • 支持 AI 推荐修复方案 |
145 | | - • 记录执行结果到 alert_issue_comments |
| 129 | +- [数据库设计文档](../../docs/alerting/database-design.md) - 详细的表结构和索引设计 |
| 130 | +- [API 文档](../../docs/alerting/api.md) - RESTful API 接口规范 |
0 commit comments