自定义监控 EC2 内存和磁盘使用率
知识文档:
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 | unzip CloudWatchMonitoringScripts-1.2.2.zip && \ |
配置IAM访问认证
您需要提供一个 IAM 角色或 awscreds.conf 文件。否则,您必须使用 –aws-access-key-id 和 –aws-secret-key 参数为这些命令提供凭证。
1 | cp awscreds.template awscreds.conf |
sudo vim awscreds.conf
,配置认证信息:
1 | AWSAccessKeyId = my-access-key-id |
收集信息发送到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 | Alarm Details: |