零基础5分钟上手亚马逊云科技核心云架构知识-云资源监控最佳实践
Amazon CloudWatch 是亚马逊云科技提供的一项全面的监控和管理服务,帮助用户实时收集和跟踪亚马逊云科技资源和应用程序的运行状态。CloudWatch 可以监控各种 AWS 服务的指标、日志文件和事件,并提供告警、自动响应等功能,帮助用户确保其云资源始终处于健康和高效的运行状态。
简介:
欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列,适用于任何无云计算或者亚马逊云科技技术背景的开发者,通过这篇文章大家零基础5分钟就能完全学会亚马逊云科技一个经典的服务开发架构方案。
我会每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿云开发/架构技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS最佳实践,并应用到自己的日常工作里。本次介绍的是如何搭建云资源监控平台,对云服务器状态监控,并在系统宕机时及时通知运维人员。本方案架构图如下:
方案所需基础知识
什么是亚马逊云科技 CloudWatch?
Amazon CloudWatch 是亚马逊云科技提供的一项全面的监控和管理服务,帮助用户实时收集和跟踪亚马逊云科技资源和应用程序的运行状态。CloudWatch 可以监控各种 AWS 服务的指标、日志文件和事件,并提供告警、自动响应等功能,帮助用户确保其云资源始终处于健康和高效的运行状态。
为什么要对云资源进行监控?
确保系统可用性:
通过 CloudWatch 监控云资源,用户可以及时检测到系统的异常情况,如性能下降、资源耗尽或服务中断。及时的告警和响应可以帮助迅速恢复服务,确保系统的高可用性和用户体验。
优化资源使用:
CloudWatch 提供详细的资源使用情况报告,使用户能够识别并优化资源的配置和利用率。通过监控,可以避免资源浪费,确保每个资源都能得到充分利用,从而降低运营成本。
增强安全性:
CloudWatch 还可以监控安全相关的事件,如未经授权的访问、异常流量模式等。通过对安全事件的实时监控,用户可以及时采取措施,保护云环境的安全性。
本方案包括的内容
1. 了解亚马逊云科技EC2服务器的云资源监控功能
2. 创建一个云端监控平台并添加云资源状态图表
3. 为EC2服务器添加CPU使用率报警
4. 为系统报警添加邮件通知,通知系统工程师
项目搭建具体步骤
1. 登录亚马逊云科技控制台,打开EC2服务主页
2. 选择一台EC2服务器,点击Monitoring默认监控功能,我们可以看到监控指标有CPU、Memory、虚拟机状态监测、网络状态等
3. 接下来我们进入云资源监控服务CloudWatch
4. 点击左侧Metric监控指标页面,在指标搜索框中搜索”PowerPlantMetrics“,再点击进入该搜索类别。
5.该搜索类别包括了多个监控指标,我们现在先搜索CPU。
6. 搜索后我们就可以找到服务器CPU状态的指标了,选中三台服务器,我们就可以看到服务器CPU状态曲线。
7. 接下来点击右上角的”Action“ -> "Add to Dashboard"把三个服务器CPU状态添加到监控面板中
8. 为面板起名”Power-Plant-Dashboard“,点击”Create New“创建一个新的CPU面板
9. 图表类型选择Bar柱状图,图表标题输入”Servers Idle CPU usage“,点击左下角Add添加该面板
10. 创建好后我们就可以看到CPU面板了,点击右上角Save保存该面板。
11. 点击左侧边栏,点击Alams报警功能,点击Create Alarm创建一个新的报警
12. 首先选择监控指标,点击”Select Metric“添加指标。
13. 我们选择我们刚刚查看的指标CPU使用率,我们添加server1 EC2服务器的CPU指标数据。
14. 添加CPU指标数据后,我们选择报警触发条件。本测试中我们选择Static静态模式,筛选条件为CPU指标小于(Lower)20%时触发。
15. 接下来我们配置报警通知,首先选择报警触发状态为"In Alarm",表示达到筛选条件时触发。通知将会通过SNS短信/邮件服务送达到系统工程师,我们创建一个新的SNS Topic,起名为”High_CPU_USAGE“,并配置通知送达邮箱。点击Create创建该SNS Topic主题。
16. 最后我们为该警报起名,点击Create创建。
17. 创建成功后我们就可以看到该警报进入了报警状态,并收到了报警邮件通知。
如何通过Python SDK Boto3代码创建监控报警
下面是一个使用 Python boto3
来创建 CloudWatch 警报的代码示例,该警报会监控 EC2 实例的 CPU 使用率是否超过 70%,并在超过阈值时通过 SNS topic 发送短信通知:
import boto3
# 创建 boto3 客户端
cloudwatch = boto3.client('cloudwatch')
sns = boto3.client('sns')
# 定义 SNS topic ARN(你需要先创建一个 SNS topic 并订阅短信号码)
sns_topic_arn = 'arn:aws:sns:us-west-2:123456789012:MySNSTopic'
# 定义 EC2 实例 ID 和报警名称
instance_id = 'i-0abcd1234efgh5678'
alarm_name = 'High-CPU-Utilization-Alarm'
# 创建 CloudWatch 警报
response = cloudwatch.put_metric_alarm(
AlarmName=alarm_name,
AlarmDescription='Alarm when CPU usage exceeds 70%',
ActionsEnabled=True,
AlarmActions=[sns_topic_arn],
MetricName='CPUUtilization',
Namespace='AWS/EC2',
Statistic='Average',
Dimensions=[
{
'Name': 'InstanceId',
'Value': instance_id
},
],
Period=300, # 监控5分钟的平均值
EvaluationPeriods=1,
Threshold=70.0,
ComparisonOperator='GreaterThanThreshold',
TreatMissingData='notBreaching' # 当数据缺失时,不触发报警
)
print(f"Alarm {alarm_name} created successfully.")
代码解释:
cloudwatch
和sns
客户端:创建用于与 CloudWatch 和 SNS 进行交互的 boto3 客户端。
SNS Topic ARN:
sns_topic_arn
是已经存在的 SNS 主题的 Amazon Resource Name (ARN),你需要预先创建 SNS 主题并将电话号码订阅到该主题,以便接收短信通知。
put_metric_alarm
方法:这个方法用于创建一个 CloudWatch 警报。
AlarmName
: 设置警报的名称。
MetricName
: 选择要监控的指标,这里是CPUUtilization
。
Namespace
: 指定指标的命名空间,EC2 的命名空间是AWS/EC2
。
Dimensions
: 指定要监控的 EC2 实例的 ID。
Period
: 指定时间周期(以秒为单位),这里是5分钟(300秒)。
EvaluationPeriods
: 指定警报条件的评估周期数(即多长时间内连续超过阈值才触发警报)。
Threshold
: 设置阈值,这里是 70%。
ComparisonOperator
: 设置比较运算符,这里使用GreaterThanThreshold
,表示当 CPU 使用率大于 70% 时触发警报。
AlarmActions
: 设置在警报触发时采取的操作,这里是 SNS 通知。SNS 短信通知:
在 SNS topic 中订阅你的电话号码,当警报触发时,你将收到一条短信通知。
以上就是在亚马逊云科技上根据系统监控最佳实践,利用CloudWatch对云服务资源状态监控的全部步骤。欢迎大家关注0基础5分钟上手AWS系列,未来获取更多国际前沿的AWS云开发/云架构方案!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)