知识文档


AWS提供的CloudWatch中,没有提供内存使用率和磁盘使用率的信息,因此需要手动添加cron
不过,AWS提供了官方的脚本,可以直接下载安装;环境以Amazon Linux 2 或 Amazon Linux AMI 为例

Role权限

首先确保用户权限中有操作权限,没有的话,用户界面添加:

  • cloudwatch:PutMetricData
  • cloudwatch:GetMetricStatistics
  • cloudwatch:ListMetrics
  • ec2:DescribeTags

依赖包的安装

1
sudo yum install -y perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA.x86_64

安装监控脚本

下载、安装和配置监控脚本:

1
curl https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.2.zip -O

执行以下命令安装监控脚本:

1
2
3
unzip CloudWatchMonitoringScripts-1.2.2.zip && \
rm CloudWatchMonitoringScripts-1.2.2.zip && \
cd aws-scripts-mon

配置IAM访问认证

您需要提供一个 IAM 角色或 awscreds.conf 文件。否则,您必须使用 –aws-access-key-id 和 –aws-secret-key 参数为这些命令提供凭证。

1
cp awscreds.template awscreds.conf

sudo vim awscreds.conf,配置认证信息:

1
2
AWSAccessKeyId = my-access-key-id
AWSSecretKey = my-secret-access-key

收集信息发送到CloudWatch

测试使用:
以下示例执行简单的测试运行而不将数据发布到 CloudWatch。

1
./mon-put-instance-data.pl --mem-util --verify --verbose

以下示例收集所有可用内存指标并将其发送到 CloudWatch,将缓存和缓冲区内存计为“已用”

1
./mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --mem-used --mem-avail

crontab -e,添加定时任务:
以下示例收集指定将内存和磁盘空间使用率报告到 CloudWatch:

1
*/5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --disk-space-util --disk-path=/ --from-cron --aws-credential-file=/root/aws-scripts-mon/awscreds.conf

创建CloudWatch控制面板

创建一个自定义监控面板

搜索并添加你想要监控的指标

创建小部件保存控制面板

添加报警

  • 方式一:通过CloudWatch控制台主页的“警报”入库,添加警报
  • 方式二:通过控制面板中创建的图表,进入选择对应的指标,点击“小铃铛”,添加警报

SNS

在配置报警前,创建一个用于接收和发送告警信息的SNS主题,配置方法参考Amazon SNS 主题
服务简介(more)
Amazon Simple Notification Service (Amazon SNS) 是一项 Web 服务,用于协调和管理向订阅终端节点或客户端交付或发送消息的过程。在 Amazon SNS 中,有两类客户端—发布者和订阅者—也称为创建者和用户。发布者通过创建消息并将消息发送至主题与订阅者进行异步交流,主题是一个逻辑访问点和通信渠道。订阅者(即 Web 服务器、电子邮件地址、Amazon SQS 队列、AWS Lambda 函数)在其订阅主题后通过受支持协议(即 Amazon SQS、HTTP/S、电子邮件、SMS、Lambda)之一使用或接收消息或通知

配置报警


触发报警后,会通过SNS发出邮件提醒:

1
2
3
4
5
6
7
8
9
Alarm Details:
- Name: EC2-Diskspace-Alarm
- Description: 磁盘空间不足20%告警
- State Change: OK -> ALARM
- Reason for State Change: Threshold Crossed: 1 out of the last 1 datapoints [30.8640807993983 (13/11/20 06:01:00)] was greater than or equal to the threshold (18.0) (minimum 1 datapoint for OK -> ALARM transition).
- Timestamp: Friday 13 November, 2020 06:06:29 UTC
- AWS Account: 845089424886
- Alarm Arn: arn:aws:cloudwatch:us-east-1:845089424886:alarm:EC2-Diskspace-Alarm