使用SSM部署CloudWatch Agent
- 日期:2 Jul 2025
- 作者:Marlowe
- Ubuntu 24
默认SSM Agent以root运行,因此,需要在root主目录下创建配置文件。也可以使用变量的方式。快速部署SSM Agent
默认Ubuntu映像已经封装了SSM Agent,启动它即可。直接在创建实例的时候,在用户数据中填入以下代码:
#!/bin/bash
# 创建用户凭据sudo -smkdir /root/.awscat > /root/.aws/credentials << EOF[default]aws_access_key_id = AKIA6D4***aws_secret_access_key = H4hBblC0ObhDbfl***EOF
# 启动Agentsudo snap start amazon-ssm-agent创建一个角色同时包含CloudWatch Agent和SSM Agent。
IAM控制台->角色->创建角色:
- 授信实体:AWS服务
- 使用案例:EC2
- 权限策略:
- CloudWatchAgentServerPolicy
- AmazonSSMManagedInstanceCore
- CloudWatchAgentAdminPolicy
- 角色名称:CloudWatchAgentServerRoleWithSSM
附加角色到EC2
Section titled “附加角色到EC2”EC2控制台 -> 选中实例 -> 操作 -> 安全 -> 修改IAM角色-> CloudWatchAgentServerRoleWithSSM -> 更新IAM角色。
在SSM控制台查看实例
Section titled “在SSM控制台查看实例”SSM控制台->节点工具->队列管理器中,可以看到刚刚添加的实例。
!!! tip 如果是首次打开队列管理器,则可能需要在“账户配置->配置默认主机管理配置->启用默认主机管理配置”,这会让SSM自动创建一个符合权限的角色。点击配置即可。
创建Parameter Store
Section titled “创建Parameter Store”SSM控制台->应用程序工具->Parameter Store->创建参数
- 名称:CloudWatch-Linux
- 层:标准
- 类型:String
- 数据类型:text
- 值:将之前生成的config.json文件粘贴进来。CloudWatch Agent部署-手动部署
- 创建参数
SSM控制台安装CloudWatch Agent
Section titled “SSM控制台安装CloudWatch Agent”- 转到节点工具->运行命令:
- 命令文档:AWS-ConfigureAWSPackage
- 文档版本:运行时的最新版本
- 命令参数:
- Action:Install
- Installation Type:Uninstall and reinstall
- Name:AmazonCloudWatchAgent
- Version:latest
- 目标->手动选择实例
- 运行
在目标与输出中观测命令下发的状态。
配置Agent
Section titled “配置Agent”转到节点工具->运行命令:
- 命令文档:AmazonCloudWatch-ManageAgent
- 命令参数:
- Action:configure
- Model:ec2
- Optional Configuration Source:ssm
- Optional Configuration Location:CloudWatch-Linux
- (Parameter Store参数库的参数名称)
- Optional Restart:Yes
- 目标:手动选择实例
修改凭据配置文件
Section titled “修改凭据配置文件”一开始在创建实例的时候,在用户数据中创建了凭据文件,现在让它生效。
转到节点工具->运行命令:
- 命令文档:
转到节点工具->运行命令
- 命令文档:AWS-RunShellScript
- 命令参数:
cd /opt/aws/amazon-cloudwatch-agent/etc/sudo sed -i '$a\shared_credential_file = "/root/.aws/credentialscredentials"' common-config.toml!!! warning 遇到了下发任务的bug,错误显示平台类型为Windows,但是其实实例是Ubuntu。暂时终止实验,日期 2 Jul 2025
方法2-上传到SSM的参数仓库(二选一)
Section titled “方法2-上传到SSM的参数仓库(二选一)”可以跟随配置向导上传到SSM参数仓库,或者手动上传配置文件到参数仓库。
你希望将配置文件存储到哪个参数仓库下?(如果使用AWS的策略的话,将以AmazonCloudWatch-作为命名前缀。)
如果选择上传,则跟随步骤继续往下走。需要准备访问密钥。上传成功后,在ssm->应用程序工具->Parameter Store下就可以看到。
What parameter store name do you want to use to store your config? (Use 'AmazonCloudWatch-' prefix if you use our managed AWS policy)default choice: [AmazonCloudWatch-linux]尝试获取从EC2的默认区域获取元数据。检测到默认区域,你希望将配置文件存储在这个区域吗?选择你希望的区域。
Trying to fetch the default region based on ec2 metadata...I! imds retry client will retry 1 timesWhich region do you want to store the config in the parameter store?default choice: [ap-southeast-5]请输入访问密钥和访问密钥密码
Please provide credentials to upload the json config file to parameter store.AWS Access Key:AWS Secret Key:程序已经成功将配置文件推送到AmazonCloudWatch-Linux参数仓库。程序退出。
Successfully put config to parameter store AmazonCloudWatch-linux.Program exits now.查看配置文件在Parameter Store
Section titled “查看配置文件在Parameter Store”SSM控制台->应用程序工具->Parameter Store。可以看到AmazonCloudWatch-linux命名的参数集。
写入到 Parameter Store 的权限提供了广泛的访问。此角色不应附加到您的所有服务器,只有管理员才能使用它。在创建代理配置文件并将其复制到 Parameter Store 后,应将该角色从实例中分离并改用
CloudWatchAgentServerRole。