yashpal9370/aws-cloudwatch-monitoring-automation
GitHub: yashpal9370/aws-cloudwatch-monitoring-automation
该项目演示了基于 AWS CloudWatch 的实时 EC2 监控系统,在 CPU 利用率超过阈值时通过 SNS 发送告警邮件并自动停止实例,实现自动化事件响应。
Stars: 0 | Forks: 0
# CloudWatch 监控与 EC2 自动化事件响应
## 项目概述
本项目演示了如何使用 Amazon Web Services (AWS) 实现实时监控和自动化事件响应系统。
该解决方案使用 Amazon CloudWatch 持续监控 Amazon EC2 实例的 CPU 利用率。当 CPU 利用率超过预定义的阈值时,CloudWatch 会自动触发警报,通过 Amazon SNS 发送电子邮件通知,并通过停止 EC2 实例来执行自动化修复操作。
本项目模拟了真实的云运营场景,利用监控、警报和自动化来提高系统可靠性、优化资源利用率并减少人工干预。
# 架构图

# 业务目标
组织需要持续监控云资源,以识别异常的资源利用率并快速响应事件。
本项目演示了 AWS 监控服务如何:
- 检测资源过度利用
- 生成实时警报
- 自动通知管理员
- 无需人工干预即可触发修复操作
- 提高运营效率和成本管理
# 使用的 AWS 服务
| 服务 | 用途 |
|----------|----------|
| Amazon EC2 | 虚拟服务器 |
| Amazon CloudWatch | 监控和警报 |
| Amazon SNS | 通知服务 |
| Amazon Linux 2023 | 操作系统 |
| Stress 工具 | CPU 负载测试 |
# 项目工作流
## 步骤 1:启动 EC2 实例
- 创建了 Amazon EC2 实例。
- 安装了 Amazon Linux 2023。
- 通过 SSH 安全连接。
## 步骤 2:创建 SNS 主题
- 创建了名为 `global-topic` 的 SNS 主题。
- 添加了电子邮件订阅。
- 通过电子邮件验证确认了订阅。
### SNS 主题与订阅

## 步骤 3:配置 CloudWatch 警报
选择:
- Namespace:AWS/EC2
- Metric:CPUUtilization
- Statistic:Average
配置警报条件:
- 阈值类型:Static
- 条件:Greater Than
- 值:30%
### 警报阈值配置

## 步骤 4:配置警报操作
配置了两个操作:
### 通知操作
- 向 SNS 主题发送通知
### EC2 操作
- 自动停止 EC2 实例
### 警报操作

## 步骤 5:安装 Stress 工具
安装了 Linux Stress 工具:
```
sudo yum install stress -y
```
## 步骤 6:生成 CPU 负载
使用以下命令生成人工 CPU 负载:
```
stress --cpu 50 --io 4 --vm 2 --vm-bytes 128M --timeout 10m &
```
该命令人为地增加 CPU 利用率,以测试监控和警报功能。
### 压力测试


# 测试与验证
Stress 工具生成的 CPU 负载导致 CPU 利用率超过了配置的阈值。
结果:
- CloudWatch 警报进入 ALARM 状态。
- Amazon SNS 发送了电子邮件通知。
- CloudWatch 执行了配置的 EC2 停止操作。
- EC2 实例被自动停止。
### CloudWatch 警报已触发

# CloudWatch 警报详情
| 配置 | 值 |
|--------------|--------|
| 警报名称 | System-Alert |
| Metric | CPUUtilization |
| 阈值 | CPU > 30% |
| Namespace | AWS/EC2 |
| Statistic | Average |
| 通知 | SNS 主题 |
| EC2 操作 | 停止实例 |
# SNS 配置
| 配置 | 值 |
|--------------|--------|
| 主题名称 | global-topic |
| 主题类型 | Standard |
| 协议 | Email |
| 订阅状态 | 已确认 |
# 预期工作流
```
EC2 Instance
│
▼
CloudWatch Monitors CPU Utilization
│
▼
CPU Utilization > 30%
│
▼
CloudWatch Alarm Triggered
│
├──────────────► SNS Notification
│ │
│ ▼
│ Email Alert Sent
│ │
│ ▼
│ Administrator Notified
│
▼
EC2 Stop Action Executed
│
▼
Instance Automatically Stopped
```
# 核心功能
- 实时 EC2 监控
- CloudWatch 警报配置
- SNS 电子邮件通知
- 自动化 EC2 关机
- 基础设施监控
- 事件响应自动化
- 基于 Linux 的压力测试
# 掌握的技能
### 云计算
- Amazon Web Services (AWS)
- Amazon EC2
- Amazon CloudWatch
- Amazon SNS
### Linux 管理
- Amazon Linux 2023
- SSH 连接
- 包管理
- 系统监控
### 云运营
- 监控与可观测性
- 警报管理
- 事件响应
- 基础设施自动化
- 资源优化
# 学习成果
通过本项目,我获得了以下方面的实践经验:
- CloudWatch Metrics 和 Alarms
- SNS 通知
- EC2 监控
- Linux 系统管理
- 基础设施监控
- 自动化事件响应
- 云运营最佳实践
# 未来增强功能
- 集成 AWS Lambda 以实现高级修复。
- 配置 CloudWatch Dashboards。
- 实施 Slack 通知。
- 使用 Terraform 部署基础设施。
- 配置 Auto Scaling Groups。
- 实施集中式日志记录。
# 仓库结构
```
aws-cloudwatch-monitoring-alert-system/
│
├── README.md
│
└── screenshots/
├── architecture-diagram.png
├── sns-subscription.png
├── alarm-threshold.png
├── alarm-actions.png
├── stress-command.png
└── alarm-triggered.png
```
# 项目状态
- 成功完成
- 已测试 CloudWatch 警报
- 已送达 SNS 通知
- 已验证 EC2 自动停止操作
- 已验证端到端工作流
# 作者
**Yashpal Rajput**
云工程师实习生
### 与我联系 - LinkedIn:https://www.linkedin.com/in/yashpal-rajput-2a58a8312/ - GitHub:https://github.com/yashpal9370
### 与我联系 - LinkedIn:https://www.linkedin.com/in/yashpal-rajput-2a58a8312/ - GitHub:https://github.com/yashpal9370
标签:AWS, CloudWatch, DPI, EC2, IaC, SNS, 自动化响应, 运维监控