如何将 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 代理问题


这篇文章对您有帮助吗?


您是否需要账单或技术支持?