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 实例来执行自动化修复操作。 本项目模拟了真实的云运营场景,利用监控、警报和自动化来提高系统可靠性、优化资源利用率并减少人工干预。 # 架构图 ![架构图](/images/Architecture.png) # 业务目标 组织需要持续监控云资源,以识别异常的资源利用率并快速响应事件。 本项目演示了 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 主题与订阅 ![SNS 订阅](/images/Sns_subscription.PNG) ## 步骤 3:配置 CloudWatch 警报 选择: - Namespace:AWS/EC2 - Metric:CPUUtilization - Statistic:Average 配置警报条件: - 阈值类型:Static - 条件:Greater Than - 值:30% ### 警报阈值配置 ![警报阈值](/images/alarm-threshold.PNG) ## 步骤 4:配置警报操作 配置了两个操作: ### 通知操作 - 向 SNS 主题发送通知 ### EC2 操作 - 自动停止 EC2 实例 ### 警报操作 ![警报操作](/images/actions.PNG) ## 步骤 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 利用率,以测试监控和警报功能。 ### 压力测试 ![压力测试](/images/strees-command.PNG) ![](/images/strees.PNG) # 测试与验证 Stress 工具生成的 CPU 负载导致 CPU 利用率超过了配置的阈值。 结果: - CloudWatch 警报进入 ALARM 状态。 - Amazon SNS 发送了电子邮件通知。 - CloudWatch 执行了配置的 EC2 停止操作。 - EC2 实例被自动停止。 ### CloudWatch 警报已触发 ![警报已触发](/images/alarm-triggered.PNG) # 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
标签:AWS, CloudWatch, DPI, EC2, IaC, SNS, 自动化响应, 运维监控