自动安装 CloudWatch 代理

Posted

技术标签:

【中文标题】自动安装 CloudWatch 代理【英文标题】:Automating the installation of CloudWatch agent 【发布时间】:2020-08-29 16:55:21 【问题描述】:

我只是想知道是否有其他方法可以解决这个问题:

我有一个 AWS 多账户设置。 EC2 将对所有帐户进行监控,当通过 sns 触发警报时,将发送一封邮件。对于所有装有 Windows Server 2016 及更高版本、Amazon Linux 和 Ubuntu 16.04 和 18.04 的 EC2,SSM 代理都已预装。这样我就可以通过 System Manager Run Command 将 CloudWatch 代理推送到 EC2 的每个 AWS 账户。

我想知道是否有一种更简单的方法可以强制在 AWS 账户中部署的每个新 EC2 上安装 CloudWatch 代理,而无需在实例上手动安装代理或通过运行命令安装代理?

我正在考虑使用标签,例如:“IsMonitored”,并作为值 true 或 false。例如,每天 17 点,Lambda 函数将遍历该帐户中的所有实例并搜索 IsMonitored = false,获取该实例 ID 并使用(boto3?)脚本推送该实例上的代理。这似乎很复杂,所以我想检查是否有其他简单的解决方案可以做到这一点。

提前致谢,

伊曼

【问题讨论】:

【参考方案1】:

一种更简单的方法是使用预烘焙的 AMI。首先,使用您使用的普通 AMI 启动 EC2。接下来,安装 CloudWatch 代理并创建映像。从现在开始,您可以使用预装了 CloudWatch 代理的新 AMI 启动 EC2。

如果预烘焙的 AMI 不适合您,我建议使用像 Ansible 这样的基础架构即代码 (IaC) 工具来自动化安装过程。

【讨论】:

亚马逊倾向于经常更新他们的标准 AMI,使用这种方法我还需要更新我的 AMI,这会导致大量的手动工作。我希望 Amazon 有一种内置方式来强制在每个实例上安装 CloudWatch 代理。 @Iman.A 另一种方法是在启动时将用户数据 sn-p 添加到 EC2。 我只是在想这个,但我遇到的问题是:创建这些 EC2 的人大多是开发人员或研究人员,如果你理解我的话,他们是牛仔,这就是我尝试创建的原因我不依赖他们的行动的解决方案。使用 userdata,创建 EC2 的人必须在创建时提供该数据,我 100% 确定他们会忘记或其他什么。【参考方案2】:

要在每个实例特定区域安装cloudwatch 代理,您可以通过 shell 脚本实现。

方法是:

手动工作是在参数存储中为实例 a 的类型创建一些默认配置文件。对于窗户 b。基于 linux 的

在 shell 脚本中 针对特定地区

    获取ec2实例id列表的总数 检查使用基于 Windows 或 Linux 的机器类型的平台 如果平台是 Windows,则从参数存储中添加 Windows 类型的配置文件,否则添加 Linux 配置文件

获取平台名称:

platform=$(aws ec2 describe-instances --instance-ids <instance id> --query 'Reservations[*].Instances[*].[Platform]' --output text)

安装包:

aws ssm send-command --instance-ids <instance id> --document-name "AWS-ConfigureAWSPackage" --parameters "name=AmazonCloudWatchAgent,action=Install,installationType=Uninstall and reinstall"  --comment "Install CloudWatch Agent on EC2 Windows/Linux machine" 

开始CWagent

aws ssm send-command  --instance-ids $one_instance --document-name "AmazonCloudWatch-ManageAgent" --parameters "mode=ec2,optionalRestart=yes,optionalConfigurationSource=ssm,action=configure,optionalConfigurationLocation=AmazonLinuxCloudWatchAgentConfig"  --comment "Configure CloudWatch Agent on EC2 Linux machine"

如需更多参考,您可以使用this link。

【讨论】:

以上是关于自动安装 CloudWatch 代理的主要内容,如果未能解决你的问题,请参考以下文章

在私有子网中的EC2上安装Cloudwatch代理

Saltstack批量安装部署Zabbix代理(附zabbix自动注册详解)

CloudWatch 自动警报删除执行多次

自动安装squid+iptables上网代理及上网行为管理脚本。

AWS CloudWatch Logs监控Apache日志文件

手动自动添加自动发现代理