如何使用 AWS Systems Manager 一次性在多个实例上安装 CloudWatch 代理(Linux 和 Windows)
本文讲解了如何使用 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 角色附加到实例
- 进入 EC2 控制台。
- 选择目标实例。
- 选择 操作 → 安全性 → 修改 IAM 角色。
- 选择在步骤 1 中创建的 IAM 角色。
- 点击 更新 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 代理
- 进入 AWS Systems Manager 控制台,选择 Run Command。
- 在 Command document 部分,选择 AWS-ConfigureAWSPackage。
- 在 Command parameters 中,输入
AmazonCloudWatchAgent
到 Name 字段。 - 在 Targets 部分,选择您想要安装代理的实例:
- 您可以手动选择实例或使用实例标签来定位一组实例。
- 请耐心等待,可能需要 10 分钟以上,所有实例才会显示出来。
- (可选)将命令输出保存到 CloudWatch 日志或 S3 存储桶。
- 点击 Run 执行命令。
命令成功执行后,CloudWatch 代理通常会在 1-2 分钟内安装到所有选定的实例上。
查看截图了解更多信息:
步骤 4:在参数存储中创建 CloudWatch 代理配置
现在CloudWatch 代理已安装,您需要为它创建一个CloudWatch代理配置文件。请确保在将配置部署到多个实例之前测试您的 CloudWatch 配置,以确保它按预期工作。
- 在 SSM 控制台,导航到 Parameter Store 并点击 Create parameter。
- 给您的参数命名,例如
AmazonCloudWatch-WinConfig
。 - 在 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 以保存。
查看截图了解更多信息:
步骤 5:启动 CloudWatch 代理
现在,您需要使用刚刚创建的配置文件在实例上启动 CloudWatch 代理服务。
- 返回 SSM 控制台 中的 Run Command。
- 在 Command document 部分,选择 AmazonCloudWatch-ManageAgent。
- 在 Command parameters 部分,指定 可选配置位置(例如,
AmazonCloudWatch-WinConfig
)。 - 选择目标实例。
- (可选)将命令输出保存到 CloudWatch 日志或 S3 存储桶。
- 点击 Run。
查看截图了解更多信息:
命令成功运行后,您应该会在 CloudWatch 的 CWAgent 命名空间中看到这些指标。根据您配置的 metrics_collection_interval,可能需要几分钟,指标才会显示在 CloudWatch 控制台中。
如何编辑或修改 CloudWatch 代理配置
如果您需要修改 CloudWatch 代理的配置文件并将新配置部署到多个实例,请按照以下步骤操作:
- 在 SSM 控制台 中导航到 Parameter Store。
- 点击您要修改的参数上的 Edit。
- 更新 Value 字段中的 JSON 内容并保存更改。
- 转到 Run Command 部分的 Command history 标签页,找到您用于启动代理的命令,或者按照上述步骤创建一个新命令。
- 使用 Rerun 选项将更新后的配置部署到实例。
查看截图了解更多信息:
通过遵循这些步骤,您可以高效地在多个实例上安装、修改和管理 CloudWatch 代理。如果您有任何疑问或需要进一步的帮助,请联系 AWS 支持。
相关内容
- AWS 官方已更新 1 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 7 个月前