如何使用 AWS Systems Manager 一次性在多个实例上安装 CloudWatch 代理(Linux 和 Windows)

3 分钟阅读
内容级别:高级
2

本文讲解了如何使用 AWS Systems Manager 一次性在多个 EC2 实例上安装和配置 CloudWatch 代理,简化监控性能指标的流程。

管理需要监控的大量实例可能具有挑战性,尤其是如果需要手动在每个实例上安装 CloudWatch 代理的话。在没有 AWS Systems Manager (SSM) 的情况下,您通常需要通过 SSH 或 RDP 分别登录到每个实例,这既费时又低效。

使用 AWS Systems Manager,您可以快速高效地在多个实例上一次性安装 CloudWatch 代理。以下步骤详细介绍了如何使用 SSM 在 Linux 和 Windows 实例上安装 CloudWatch 代理。

注意: 安装步骤对 Windows 和 Linux 系统是相同的,唯一的区别在于 CloudWatch 代理配置内容,具体细节我们将在下文中详细介绍。

CloudWatch 代理安装步骤指南:

步骤 1:创建或修改实例的 IAM 角色

为了使实例能够与 CloudWatch 和 Systems Manager 通信,您需要创建一个新的 IAM 角色或修改现有的 IAM 角色,并附加以下两个策略:

  • CloudWatchAgentServerPolicy
  • AmazonSSMManagedInstanceCore

请参考 AWS 文档以获取创建 IAM 角色的详细步骤 点击这里

步骤 2:将 IAM 角色附加到实例

  1. 进入 EC2 控制台。
  2. 选择目标实例。
  3. 选择 操作安全性修改 IAM 角色
  4. 选择在步骤 1 中创建的 IAM 角色。
  5. 点击 更新 IAM 角色

注意: 当前,AWS 控制台不支持一次性将 IAM 角色附加到多个实例。

您也可以使用 AWS CLI 和一个简单的 for 循环来一次性将实例配置文件附加到多个实例。以下是一个示例:

instance_ids=("i-022d145xxxxxx15e6" "i-09a2158xxxxxxd2b2")  # Add more instance IDs
profile_name="your-iam-role-name"  # Set your instance profile name here

for instance_id in "${instance_ids[@]}"; do
  aws ec2 associate-iam-instance-profile \
    --instance-id $instance_id \
    --iam-instance-profile Name=$profile_name
done

步骤 3:使用 SSM 安装 CloudWatch 代理

  1. 进入 AWS Systems Manager 控制台,选择 Run Command
  2. Command document 部分,选择 AWS-ConfigureAWSPackage
  3. Command parameters 中,输入 AmazonCloudWatchAgentName 字段。
  4. Targets 部分,选择您想要安装代理的实例:
    • 您可以手动选择实例或使用实例标签来定位一组实例。
    • 请耐心等待,可能需要 10 分钟以上,所有实例才会显示出来。
  5. (可选)将命令输出保存到 CloudWatch 日志或 S3 存储桶。
  6. 点击 Run 执行命令。

命令成功执行后,CloudWatch 代理通常会在 1-2 分钟内安装到所有选定的实例上。

查看截图了解更多信息:

Enter image description here

步骤 4:在参数存储中创建 CloudWatch 代理配置

现在CloudWatch 代理已安装,您需要为它创建一个CloudWatch代理配置文件。请确保在将配置部署到多个实例之前测试您的 CloudWatch 配置,以确保它按预期工作。

  1. SSM 控制台,导航到 Parameter Store 并点击 Create parameter
  2. 给您的参数命名,例如 AmazonCloudWatch-WinConfig
  3. Value 字段中,粘贴您的 CloudWatch 代理配置文件(JSON 格式)。

以下是 Linux 和 Windows 的示例配置文件:

  • Linux CloudWatch 代理配置
    此示例配置从 Linux 实例中收集磁盘使用率(used_percent)和内存使用率(mem_used_percent)指标,并每 60 秒将其推送到 CloudWatch。
{
    "metrics": {
        "aggregation_dimensions": [
            [
                "InstanceId"
            ]
        ],
        "metrics_collected": {
            "disk": {
                "measurement": [
                    "used_percent"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ]
            },
            "mem": {
                "measurement": [
                    "mem_used_percent"
                ],
                "metrics_collection_interval": 60
            }
        },
        "append_dimensions": {
            "InstanceId": "${aws:InstanceId}"
        }
    }
}
  • Windows CloudWatch 代理配置
    此示例配置从 Windows 实例中收集各种性能指标,包括磁盘使用率(% Free Space)和内存使用率(% Committed Bytes In Use)。这些指标每 60 秒推送到 CloudWatch。
{
    "metrics": {
        "aggregation_dimensions": [
            [
                "InstanceId"
            ]
        ],
        "metrics_collected": {
            "LogicalDisk": {
                "measurement": [
                    "% Free Space"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ]
            },
            "Memory": {
                "measurement": [
                    "% Committed Bytes In Use"
                ],
                "metrics_collection_interval": 60
            }
        },
        "append_dimensions": {
            "InstanceId": "${aws:InstanceId}"
        }
    }
}

4. 点击 Create parameter 以保存。

查看截图了解更多信息:

Enter image description here

步骤 5:启动 CloudWatch 代理

现在,您需要使用刚刚创建的配置文件在实例上启动 CloudWatch 代理服务。

  1. 返回 SSM 控制台 中的 Run Command
  2. Command document 部分,选择 AmazonCloudWatch-ManageAgent
  3. Command parameters 部分,指定 可选配置位置(例如,AmazonCloudWatch-WinConfig)。
  4. 选择目标实例。
  5. (可选)将命令输出保存到 CloudWatch 日志或 S3 存储桶。
  6. 点击 Run

查看截图了解更多信息:

Enter image description here

命令成功运行后,您应该会在 CloudWatch 的 CWAgent 命名空间中看到这些指标。根据您配置的 metrics_collection_interval,可能需要几分钟,指标才会显示在 CloudWatch 控制台中。


如何编辑或修改 CloudWatch 代理配置

如果您需要修改 CloudWatch 代理的配置文件并将新配置部署到多个实例,请按照以下步骤操作:

  1. SSM 控制台 中导航到 Parameter Store
  2. 点击您要修改的参数上的 Edit
  3. 更新 Value 字段中的 JSON 内容并保存更改。
  4. 转到 Run Command 部分的 Command history 标签页,找到您用于启动代理的命令,或者按照上述步骤创建一个新命令。
  5. 使用 Rerun 选项将更新后的配置部署到实例。

查看截图了解更多信息:

Enter image description here


通过遵循这些步骤,您可以高效地在多个实例上安装、修改和管理 CloudWatch 代理。如果您有任何疑问或需要进一步的帮助,请联系 AWS 支持

profile pictureAWS
支持工程师
Tim
已​发布 1 个月前3080 查看次数