如何将 EC2 实例的内存和磁盘指标发送到 CloudWatch?
上次更新日期:2022 年 4 月 5 日
我想将 Amazon Elastic Compute Cloud (Amazon EC2) 实例的内存和磁盘指标发送到 Amazon CloudWatch 指标。我该如何操作?
简短描述
默认情况下,Amazon EC2 会在 AWS/EC2 命名空间中将一组与实例相关的指标发送到 CloudWatch。这包括 CPU 利用率、一组磁盘读取和写入指标以及一组 NetworkIn 和 NetworkOut 指标。但是,EC2 不会提供与操作级别内存使用情况或磁盘使用量指标相关的指标。
要查找这些指标并将它们作为自定义指标传输到 CloudWatch,请安装统一的 CloudWatch 代理。然后,在代理配置文件中定义这些指标。
重要提示:自定义指标将按照其存储量和 API 使用量收费。
解决方法
注意:如果您在运行 AWS Command Line Interface (AWS CLI) 命令时收到错误消息,请确保您使用的是最新版本的 AWS CLI。
您可以使用 AWS CLI 手动下载并安装 CloudWatch 代理,或者您可以将它与 AWS Systems Manager Agent (SSM Agent) 集成。CloudWatch 代理在 Linux 和 Windows 系统上均受支持。请使用以下步骤安装 CloudWatch 代理:
1. 创建 IAM 角色或用户,以支持代理从服务器收集指标,也可选择与AWS Systems Manager 集成。将此 IAM 角色附加到您想要在其上面安装代理的 EC2 实例。
2. 下载并安装代理安装包。
3. 创建 CloudWatch 代理配置文件并指定您想要收集的指标。
此示例所示为基本的代理配置文件,可报告 Linux 系统上的内存使用情况和磁盘使用量指标:
{
"metrics": {
"metrics_collected": {
"mem": {
"measurement": [
"mem_used_percent"
]
},
"disk": {
"measurement": [
"used_percent"
],
"resources": [
"*"
]
}
},
"append_dimensions": {
"InstanceId": "${aws:InstanceId}"
}
}
}
以下是 Windows 系统的基本代理配置文件的示例:
{
"metrics": {
"metrics_collected": {
"LogicalDisk": {
"measurement": [
"% Free Space"
],
"resources": [
"*"
]
},
"Memory": {
"measurement": [
"% Committed Bytes In Use"
]
}
},
"append_dimensions": {
"InstanceId": "${aws:InstanceId}"
}
}
}
4. 在 EC2 示例上启动代理。
默认情况下,当代理正在运行时,它会将实例的指标报告给 CloudWatch 内的 CWAgent 命名空间。如果遇到问题,请参阅排查 CloudWatch 代理问题。