AWS EC2 监控内存使用
AWS
EC2
的监控页面默认没有显示内存使用率,需要搭配 CloudWatch
配置使用。
由于需要在 EC2
上安装 CloudWatch agent
来上报监控数据到 CloudWatch
,所以需要先为 EC2
配置 IAM
角色来授予需要的权限。创建 IAM
角色时,在第一步的 Trusted entity type
选择 AWS service
,Use case
选择 EC2
;在第二步的 Permissions policies
添加 CloudWatchAgentServerPolicy
即可。更多细节可参考 Create IAM roles and users for use with CloudWatch agent。
接着,在 Download and configure the CloudWatch agent using the command line 中根据实际 EC2
的操作系统下载和安装 CloudWatch agent
,这里以 ARM64
的 Ubuntu
系统为例:
1 | wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/arm64/latest/amazon-cloudwatch-agent.deb |
然后,为 CloudWatch agent
创建一个配置文件,例如 cloudwatch.json
,写入如下内容:
1 | { |
这表示每隔60秒收集一次内存使用率,接着启动 CloudWatch agent
:
1 | sudo amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:$HOME/cloudwatch.json -s |
可以通过 amazon-cloudwatch-agent-ctl -a status
来查看 CloudWatch agent
的状态:
1 | { |
此时 CloudWatch agent
的状态为运行中。
如果一切正常,那么在 AWS
控制台中 CloudWatch
的 All metrics
下会多出一项 CWAgent
(如果原来没有添加过的话):
点击进入后选择相应的 EC2
,点击 Add to graph
:
在当前页面上方就会显示对应的内存使用率的监控:
之后也可以创建一个 Dashboard
,将这个监控加入到自定义的 Dashboard
中。
如果在 AWS
控制台没有看到 CWAgent
项目,那么可以查看 EC2
上 CloudWatch agent
的日志是否有异常,日志保存在 /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log
。例如,如果忘记为 EC2
配置 IAM
角色,同时 EC2
上又没有其他的权限访问信息,CloudWatch agent
就无法上报监控数据,会提示如下类似的异常:
1 | 2022-10-09T13:27:36Z E! WriteToCloudWatch failure, err: NoCredentialProviders: no valid providers in chain |
最后,如果想要添加更多的监控指标,可以参考 Metrics collected by the CloudWatch agent 添加相应的指标。
参考: