本文详细介绍设置监控警告的过程,包括控制台手动创建和CLI创建监控警告的两种方法。

1 设置SNS消息通知

设置主题

在创建Cloudwatch警报之前,需要先设置好SNS,在控制台中输入SNS服务


 

SNS服务主要用于发送消息通知用,可以发送邮件,及发送到其他AWS服务中

在进入到SNS服务控制台之后,可以看到我们已经为国民创建了一个主题:

 

自己创建主题也很简单,直接点击创建主题,然后输入主题的名称,其他默认创建即可。

设置订阅

点击订阅,并创建订阅:

 

在创建订阅窗口中,主要输入以下三项:

1) 输入刚才的主题名称

2) 选择协议为电子邮件

3) 选择电子邮件之后,终端节点则需要输入自己的邮箱名称

 

全部输入完之后,创建订阅,则AWS会发送一份确认邮件,到刚才填写的邮箱中。

注:AWS发送的确认邮件,可能会放在垃圾邮件中,或者被拦截

在AWS发送的邮件中点击确认订阅之后,就可以在控制台中,看到订阅成功:

 

 

2 手动创建CloudWatch告警

创建CloudWatch告警的前提

主要有两个:

  • 安装好CloudWatch Agent代理,用于在EC2上监控内存、磁盘指标
  • 已经设置好SNS的主题和订阅,便于CloudWatch将告警信息发送到邮箱

那么前面工作都做好之后,就可以在AWS CloudWatch的控制台中来创建警报:

1)进入到CloudWatch控制台,创建警报

2)点击选择指标

 

3)选择要监控的指标

还是以CPU利用率为例子,在弹出的指标中,我们选择EC2:

 

选择每个实例的指标

 

选择某个要监控实例的CPUUtilization,CPU利用率指标

 

进入到下一步中,需要设置告警的阀值,如下图所示,主要有4个选项要设置:

选择静态:就是指定告警阀值

警报条件:有大于、大于等于、小于等于、小于

定义阀值:因为CPU利用率为% 百分比显示,指定85,就是85%

要报警的数据点:cloudwatch默认是5分钟监控一次,选择2个,那么就是监控10分钟

综合起来,就是在10分钟内,如果CPU利用率一直都是大于85%的话,就告警:

 

然后在警报中,选择刚才创建的SNS主题:

 

最后,输入警报的名称和描述,点击下一步确定之后,即可创建好一个警报

 


3 命令行创建CloudWatch告警

在第二章节中,主要是手动来创建一个CloudWatch的警报,一个实例可能需要监控CPU、内存、磁盘、网络等,那么就要手动创建cloudwath很多次。如果要对几十上百的实例来手动创建CloudWatch的警报,会非常耗时。

那么这时我们就可以通过脚本来创建CloudWatch的警报,可以通过shell脚本,python脚本等其他编程语言来编写脚本实现,而shell脚本里主要就是使用的aws cli命令

3.1 安装AWS CLI

要使用shell脚本来批量创建cloudwatch警报,需要使用到aws cli命令行工具,因此需要在EC2实例上安装好aws cli

执行如下3条命令,即可安装好aws cli命令行工具:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

安装完成后,即可使用aws --version命令来查看aws cli的版本

3.2 设置创建警报的权限

使用aws cloudwatch put-metric-alarm的命令来创建警报,需要拥有cloudwatch:PutMetricAlarm的权限。

因此我们需要创建一个IAM策略,并附加到角色中去:

1)创建IAM策略

进入到IAM服务控制台,选择创建策略:

 

2)复制JSON策略

将以下json信息,复制到json窗口中:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "cloudwatch:PutMetricAlarm",
            "Resource": "*"
        }
     ]
}

3)设置策略名称

在策略名称中输入名称,例如:CloudWatchPutMetricAlarm

 

4)将策略附加到角色

在角色中找到我们之前创建的CloudWatchAgentServerRole角色:

 

点击此角色,进入到此角色信息摘要里,并点击附加策略:

 

在策略中搜索刚才创建的CloudWatchPutMetricAlarm策略名称,并附加策略:

 

附加完成后,就可以看到此角色下有两个策略

 

 

3.3 通过AWS cli创建警报

由于之前已经将CloudWatchAgentServerRole角色附加到了EC2实例上,并且在EC2实例上已经安装了AWS CLI命令行工具,那么就可以把此EC2当作一台控制机器,在其上用如下的命令来创建一个警报:

aws cloudwatch put-metric-alarm --alarm-name dev_ec2_192.168.1.1-CPU>=88% --metric-name CPUUtilization --namespace AWS/EC2 --statistic Average --period 300 --threshold 88 --comparison-operator GreaterThanThreshold --dimensions  Name=InstanceId,Value=i-0897f3c1e32576431 --evaluation-periods 2 --alarm-actions arn:aws-cn:sns:cn-northwest-1:297669174308:lijun-demo --unit Percent --region cn-northwest-1

在以上命令中,标红的部分的参数,需要修改成自己帐号下的信息:

dev_ec2_192.168.1.1-CPU>=88%  是指创建的告警名称

CPUUtilization 是指监控CPU利用率指标

AWS/EC2 是指EC2名称空间

Average 是指监控的平均值

300 是指监控间隔,默认都是300秒,即5分钟

88 是设置的监控阀值

GreaterThanThreshold 是指警报条件为大于等于

i-0897f3c1e32576431 是为具体的实例ID创建告警信息

2 指的是数据点,而每个数据点--period 300指定的是300秒,即2个数据点,为10分钟

arn:aws-cn:sns:cn-northwest-1:297669174308:lijun-demo 是SNS的主题

Percent 为指标的单位,为百分比

cn-northwest-1 指的是区域,即宁夏区

其中SNS的主题ARN,可以在SNS的控制台中的主题部分找到:

aws cloudwatch put-metric-alarm 每个参数的含义,也可以查看官方文档:

https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html


执行完此命令之后,就可以在CloudWatch的控制台中,看到创建的告警信息:

以上命令只是创建一个警报,如果要批量创建警报,就可以编写shell脚本,将其中的每个参数替换为变量,来循环创建。


 

  • No labels