Abheenash/cloud-observability-sre
GitHub: Abheenash/cloud-observability-sre
该项目旨在为 AWS 上运行的实时 Serverless 服务构建完整的可观测性与运维体系,涵盖仪表板、分布式追踪、SLO 管理、自动化告警及事件响应演练。
Stars: 0 | Forks: 0
# 云端可观测性与事件响应 — 在 AWS 上运营实时 Serverless 服务
选择一个**真实且正在运行的生产服务** —— 我的 [serverless-file-share](https://github.com/Abheenash/serverless-file-share) 应用(已在 `share.abheenash.com` 上线)—— 并使其变得**可观测且可运维**:包含黄金指标仪表板、分布式追踪、带有错误预算的 SLO、自动化告警,以及一份记录详尽的事件响应手册 —— 最后通过一个演示来总结:引发真实故障、捕获故障并恢复。
**状态:** 🚧 公开构建中 — **阶段 0(设置)**。以下路线图是目前的计划;只有当每个阶段实际完成时,才会勾选相应的复选框。
## 为什么做这个项目
*构建*事物的项目很常见;但证明你能在生产环境中*运营*它们的项目却很少见 —— 这正是本项目要填补的空白。这是一个由三个项目组成的系列中的第三个:
- **[serverless-file-share](https://github.com/Abheenash/serverless-file-share)** — *安全地构建*
- **[secure-container-pipeline](https://github.com/Abheenash/secure-container-pipeline)** — *安全地发布*
- **本项目** — *可靠地运营*
被观测的服务**已经上线**,因此这是真正的“运营你所构建的东西” —— 而不是为了被观察而临时启动的玩具。
## 观测对象
serverless-file-share 技术栈:**API Gateway → Lambda (issue-url / download / reaper) → S3 + DynamoDB**,使用 KMS 加密。
## 目标架构
```
serverless-file-share (LIVE)
API Gateway · Lambda · DynamoDB · S3
│ │ │
structured custom X-Ray
logs metrics traces
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────┐
│ CloudWatch │
│ Logs Insights · Dashboards │
│ Alarms (golden signals + SLOs) │
└─────────────────────────────────────┘
│ ▲
breach │ synthetics canary
▼ (probes the live API)
SNS ──> email
│
▼
Runbook (docs/runbook.md) + failure-injection demo
```
## 工作原理(计划中)
1. 线上服务发出**结构化日志**、**自定义 + 内置指标**以及 **X-Ray 追踪**(在 Lambda 和 API Gateway 上启用了主动追踪)。
2. **CloudWatch** 将它们聚合到一个**黄金指标仪表板**中 —— 延迟、流量、错误、饱和度 —— 适用于 API Gateway、Lambda 和 DynamoDB。
3. **SLO**(例如 99% 的可用性,p95 延迟目标)通过**错误预算**进行跟踪;在发生违规和达到黄金指标阈值时触发告警。
4. **CloudWatch Synthetics 金丝雀**持续探测线上 API,进行由外向内的正常运行时间检查。
5. 告警通过 **SNS → 电子邮件** 进行通知,并且每个告警都对应手册中的一个步骤。
6. 最终演示:**注入故障**(例如撤销 issue-url Lambda 的 KMS 权限导致上传失败),观察仪表板 + 告警如何捕获它,按照手册操作并进行恢复。
## 服务及其用途
| 服务 | 此处的作用 |
|---|---|
| CloudWatch (Logs, Metrics, Dashboards, Alarms) | 核心可观测性 + 告警 |
| CloudWatch Logs Insights | 查询结构化的 Lambda 日志 |
| X-Ray | 跨 API Gateway → Lambda → DynamoDB 的分布式追踪 |
| CloudWatch Synthetics | 针对线上 API 的由外向内正常运行时间金丝雀 |
| SNS | 告警通知(电子邮件) |
| Terraform | 将所有可观测性基础设施作为代码 |
| GitHub Actions (OIDC) | CI,无密钥 —— 与之前项目的模式相同 |
## 路线图
- [ ] **阶段 0** — 仓库,复用账号基础配置 + OIDC 角色,预算告警;目标 = 已上线的 serverless-file-share 技术栈
- [ ] **阶段 1** — 结构化日志记录 + 针对 Lambda 日志的 CloudWatch Logs Insights 查询
- [ ] **阶段 2** — 自定义指标 + **黄金指标仪表板**(API Gateway / Lambda / DynamoDB)
- [ ] **阶段 3** — 跨请求路径的 **X-Ray** 追踪;发现并记录瓶颈
- [ ] **阶段 4** — **SLO + 错误预算**,告警 → SNS,以及 **Synthetics 金丝雀**
- [ ] **阶段 5** — **事件响应手册** + **故障注入演示**(注入 → 告警 → 手册 → 恢复);README + 仪表板证据
核心展示证据:**事件发生期间的仪表板** —— 指标激增且告警变红 —— 随后恢复。
## 成本
大部分属于免费套餐:CloudWatch 指标/日志/仪表板、X-Ray 和 SNS 都有宽裕的免费额度;被观测的服务已经在以约 $0 的成本运行。**Synthetics 金丝雀**每次运行会消耗少量费用 —— 保持较低的执行频率即可。预算告警会保护该账户。
由 Rajolu Abheenash 构建 — [github.com/Abheenash](https://github.com/Abheenash)
标签:API集成, AWS, DPI, Serverless, 可观测性, 库, 应急响应, 漏洞探索, 监控告警, 运维