安装 CloudWatch 使用 Systems Manager 分销商和状态管理器 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

安装 CloudWatch 使用 Systems Manager 分销商和状态管理器

您可以使用 Systems Manager 状态管理器状态管理器和系统管理器分发器自动安装 CloudWatch 服务器和 EC2 实例上的代理。分销商包括AmazonCloudWatchAgent AWS安装最新 CloudWatch 代理版本的托管软件包。

此安装方法包含以下先决条件:

以下列表提供了使用 Systems Manager 分销商和状态管理器方法安装和维护 CloudWatch 代理:

  • 自动安装多个操作系统— 您无需为每个操作系统编写和维护脚本即可下载和安装 CloudWatch 代理。

  • 自动更新检查— 州经理会自动定期检查每个 EC2 实例是否具有最新的 CloudWatch 版本。

  • 合规性报告— Systems Manager 合规性仪表板显示哪些 EC2 实例未能成功安装分销商软件包。

  • 自动安装新启动的 EC2 实例— 启动到您账户中的新 EC2 实例会自动接收 CloudWatch 代理。

但是,在选择此方法之前,您还应考虑以下三个方面:

  • 与现有关联发生冲突— 如果另一个关联已经安装或配置了 CloudWatch 代理人,那么这两个关联可能会相互干扰,并可能导致问题。使用此方法时,应删除安装或更新 CloudWatch 代理和配置的所有现有关联。

  • 更新自定义代理配置文件— 分销商使用默认配置文件执行安装。如果你使用自定义配置文件或多个 CloudWatch 配置文件,您必须在安装后更新配置。

  • 多区域或多账户设置— 必须在每个账户和地区建立州长关联。必须更新多账户环境中的新账户以包括州经理关联。你需要集中或同步 CloudWatch 配置,以便多个账户和区域可以检索并应用所需的标准。

设置州经理和分销商 CloudWatch 代理部署和配置

您可以使用Systems Manager 快速设置快速配置 Systems Manager 功能,包括自动安装和更新 CloudWatch EC2 实例上的代理。快速安装程序部署了AWS CloudFormation根据您的选择部署和配置 Systems Manager 资源的堆栈。

以下列表提供了快速安装程序执行的两项重要操作以实现自动化 CloudWatch 代理安装和更新:

  1. 创建 Systems Manager 定制文档— 快速安装程序创建以下 Systems Manager 文档以供状态管理器一起使用 文档名称可能会有所不同,但内容保持不变:

    • CreateAndAttachIAMToInstance— 创建AmazonSSMRoleForInstancesQuickSetup角色和实例配置文件(如果不存在)并附加AmazonSSMManagedInstanceCore策略角色。这不包括必需的CloudWatchAgentServerPolicyIAM 策略。您必须更新此策略并更新此 Systems Manager 文档以包括此策略,如下一节所述。

    • InstallAndManageCloudWatchDocument— 安装 CloudWatch 使用分销商代理,并使用默认设置一次性配置每个 EC2 实例 CloudWatch 使用AWS-ConfigureAWSPackageSystems Manager 文档。

    • UpdateCloudWatchDocument— 更新 CloudWatch CloudWatchAWS-ConfigureAWSPackageSystems Manager 文档。更新或卸载代理程序不会删除现有的 CloudWatch EC2 实例中的配置文件。

  2. 创建状态管理器关联— 创建状态管理器关联并配置为使用自定义创建的 Systems Manager 文档。州管理员关联名称可能会有所不同,但配置保持不变:

    • ManageCloudWatchAgent— 运行InstallAndManageCloudWatchDocumentSystems Manager 为每个 EC2 实例记录一次。

    • UpdateCloudWatchAgent— 运行UpdateCloudWatchDocumentSystems Manager 每 30 天为每个 EC2 实例记录一次。

    • 运行CreateAndAttachIAMToInstanceSystems Manager 为每个 EC2 实例记录一次。

您必须增加和自定义已完成的快速安装配置,以包括 CloudWatch 权限和支持自定义 CloudWatch 配置。具体而言,CreateAndAttachIAMToInstanceInstallAndManageCloudWatchDocument将需要更新文档。您可以手动更新快速设置创建的 Systems Manager 文档。此外,也可以使用自己的 CloudFormation 模板以配置相同的资源并提供必要的更新,以及配置和部署其他 Systems Manager 资源,而不是使用快速设置。

重要

创建快速设置AWS CloudFormation堆栈以根据您的选择部署和配置 Systems Manager 资源。如果更新快速安装选项,则可能需要手动重新更新 Systems Manager 文档。

以下各节介绍了如何手动更新快速安装程序创建的 Systems Manager 资源,以及如何使用自己的资源AWS CloudFormation模板来执行更新的快速设置。建议使用自己的AWS CloudFormation模板,以避免手动更新快速安装程序创建的资源和AWS CloudFormation.

使用 Systems Manager 快速设置并手动更新创建的 Systems Manager 资源

必须更新快速设置方法创建的 Systems Manager 资源,以包括所需的 CloudWatch 代理权限和支持多个 CloudWatch 配置文件。本节介绍如何更新 IAM 角色和 Systems Manager 文档以使用包含 CloudWatch 可从多个账户访问的配置。创建 S3 存储桶以存储 CloudWatch 配置文件在管理 CloudWatch配置本指南部分。

更新CreateAndAttachIAMToInstanceSystems Manager 文档

此 Systems Manager 文档由快速安装程序创建,检查 EC2 实例是否附加了现有的 IAM 实例配置文件。如果确实如此,它会附加AmazonSSMManagedInstanceCore对现有角色的策略。这可以保护您的现有 EC2 实例不会丢失AWS可能通过现有实例配置文件分配的权限。你需要在本文档中添加一个步骤才能附加CloudWatchAgentServerPolicy针对已附加实例配置文件的 EC2 实例的 IAM 策略。如果 IAM 角色不存在且 EC2 实例没有附加实例配置文件,则 Systems Manager 文档还会创建该角色。您必须更新文档的这一部分才能同时包含CloudWatchAgentServerPolicyIAM 策略。

查看完成创建我并将其附加到实例。YAML示例文档并将其与快速安装程序创建的文档进行比较。编辑现有文档以包括所需的步骤和更改。根据您的快速设置选择,快速安装程序创建的文档可能与提供的示例文档不同,因此请确保进行必要的调整。该示例文档包括快速设置选项,用于每天扫描实例以查找缺失的补丁程序,因此包括了 Systems Manager 补丁管理器的策略。

更新InstallAndManageCloudWatchDocumentSystems Manager 文档

快速安装程序创建的此 Systems Manager 文档将安装 CloudWatch 代理并使用默认值对其进行配置 CloudWatch 代理配置。默认 CloudWatch 配置与基本的、预定义的指标集保持一致。您必须替换默认配置步骤并添加步骤才能下载 CloudWatch 来自您的配置文件 CloudWatch 配置 S3 存储桶。

查看完成安装和管理 CloudWatch 文档 .YAML更新了文档并将其与快速安装程序创建的文档进行比较。快速设置创建的文档可能会有所不同,因此请确保您已进行了必要的调整。编辑现有文档以包含必要的步骤和更改。

使用AWS CloudFormation而不是快速设置

您可以使用,而不是使用快速设置AWS CloudFormation以配置 Systems Manager。使用此方法,您可以根据自己的具体要求自定义 Systems Manager 配置。此方法还可以避免手动更新快速安装程序为支持自定义而创建的配置的 Systems Manager 资源 CloudWatch 配置。

快速设置功能还使用AWS CloudFormation然后创建AWS CloudFormation堆栈设置为根据您的选择部署和配置 Systems Manager 资源。在你可以使用之前AWS CloudFormation堆栈集,您必须创建AWS CloudFormation StackSets 以支持跨多个账户或区域的部署。快速安装程序创建支持多区域或多账户部署所需的角色AWS CloudFormationStackSets。您必须完成的先决条件AWS CloudFormation StackSets 如果要在多个区域或单个账户和区域中配置和部署多个账户中的 Systems Manager 资源。有关此问题的更多信息,请参阅堆栈集操作的先决条件中的AWS CloudFormation文档中)。

查看AWS-Quicksetup-ssmhostmgmt.YAML AWS CloudFormation自定义快速设置模板。

您应该查看AWS CloudFormation模板并根据您的要求进行调整。你应该使用版本控制AWS CloudFormation模板,您可以使用该模板并以增量方式测试更改以确认所需结果。此外,您应该执行云安全审查,以确定是否根据组织的要求进行任何政策调整。

您应该部署AWS CloudFormation堆叠在单个测试账户和区域中,然后执行任何必要的测试用例来自定义和确认所需的结果。然后,您可以在单个账户中将部署重新部署到多个区域,然后再升至多个账户和多个区域。

在单个账户和区域中使用AWS CloudFormation堆

如果您只使用单个账户和区域,则可以将完整示例部署为AWS CloudFormation堆栈而非AWS CloudFormation堆栈集。但是,如果可能的话,我们建议您使用多账户、多区域堆栈集方法,即使只使用单个账户和区域。使用AWS CloudFormation StackSets 使 future 更容易扩展到其他账户和地区。

使用以下步骤部署AWS-Quicksetup-ssmhostmgmt.YAML AWS CloudFormation作为一个模板AWS CloudFormation堆叠在单个账户和区域中:

  1. 下载模板并将其签入您首选的版本控制系统(例如,AWS CodeCommit)。

  2. 自定义默认值AWS CloudFormation参数值基于组织的要求。

  3. 自定义州经理关联时间表。

  4. 使用自定义 Systems Manager 文档InstallAndManageCloudWatchDocument逻辑 ID。确认 S3 存储桶前缀与包含 CloudWatch 配置。

  5. 检索并记录包含您的 S3 存储桶的 Amazon 资源名称 (ARN) CloudWatch 配置。有关此问题的更多信息,请参阅管理 CloudWatch配置本指南中的部分。一个示例cloud watch config-s3-bucket.yaml AWS CloudFormation模板可用,其中包括存储桶策略,用于提供读取访问权限AWS Organizations账户。

  6. 部署自定义的快速设置AWS CloudFormation模板与您的 S3 存储桶相同的账户:

    • 对于CloudWatchConfigBucketARN参数中输入 S3 存储桶的 ARN。

    • 根据要为 Systems Manager 启用的功能,对参数选项进行调整。

7. 部署带有和不带 IAM 角色的测试 EC2 实例,以确认 EC2 实例与 CloudWatch 一起使用。

  • 应用AttachIAMToInstanceState Manager 关联。这是 Systems Manager 运行本手册,配置为按计划运行。使用 runbook 的状态管理器关联不会自动应用于新的 EC2 实例,可以配置为按计划运行。有关更多信息,请参阅 。使用 State Manager 使用触发器运行自动化在 Systems Manager 文档中。

  • 确认 EC2 实例附加了所需的 IAM 角色。

  • 通过确认 EC2 实例在 Systems Manager 中可见,确认 Systems Manager 是否正常工作。

  • 确认 CloudWatch 通过查看代理工作正常 CloudWatch 日志和指标基于 CloudWatch S3 存储桶中的配置。

使用多个区域和多个账户中的自定义快速设置AWS CloudFormationStackSets

如果您使用多个账户和区域,则可以部署AWS-Quicksetup-ssmhostmgmt.YAML AWS CloudFormation模板作为堆栈集。你必须完成AWS CloudFormationStackSet 先决条件在使用堆栈集之前。这些要求取决于您是否使用部署堆栈集自行管理要么托管式服务许可.

我们建议您部署具有服务托管权限的堆栈集,以便新帐户自动接收自定义的快速安装程序。您必须从AWS Organizations管理帐户或委托管理员帐户。您应该从具有委派管理员权限的用于自动化的集中帐户部署堆栈集,而不是AWS Organizations管理账户。我们还建议您通过定位在一个区域中拥有单个或少量帐户的测试组织单位 (OU) 来测试堆栈集部署。

  1. 完成从在单个账户和区域中使用AWS CloudFormation堆本指南中的部分。

  2. 登录到AWS Management Console,打开AWS CloudFormation控制台然后选择创建 StackSet

    • 选择模板准备就绪上传模板文件. 上传AWS CloudFormation您根据自己的要求定制的模板。

    • 指定堆栈集详细信息:

      • 输入堆栈集名称,例如,StackSet-SSM-QuickSetup.

      • 根据要为 Systems Manager 启用的功能,对参数选项进行调整。

      • 对于CloudWatchConfigBucketARN参数,输入您的 ARN CloudWatch 配置的 S3 存储桶。

      • 指定堆栈集选项,选择是否将服务管理的权限与AWS Organizations或自行管理的权限。

        • 如果选择自我管理的权限,请输入AWS CloudForms 堆栈集管理角色AWS CloudForms 堆栈集执行角色IAM 角色详细信息。管理员角色必须存在于账户中,且每个目标账户中必须存在执行角色

      • 适用于托管式服务使用的权限AWS Organizations,建议您首先部署到测试 OU 而不是整个组织。

        • 选择是否要启用自动部署。建议您选择Enabled (已启用). 对于账户移除行为,推荐的设置为删除堆栈.

      • 适用于自行管理权限,输入AWS您要设置的账户的账户 ID。如果您使用自我管理的权限,则必须为每个新账户重复此过程。

      • 输入要使用的地区 CloudWatch 和 Systems Manager。

      • 通过查看中的状态来确认部署是否成功操作 堆栈实例堆栈集的选项卡。

      • 测试系 Systems Manager 和 CloudWatch 在已部署的帐户中正常工作,请按照在单个账户和区域中使用AWS CloudFormation堆本指南中的部分。

配置本地服务器的注意事

这些区域有: CloudWatch 本地服务器和虚拟机的代理是通过使用与 EC2 实例类似的方法来安装和配置的。但是,下表提供了在安装和配置 CloudWatch 本地服务器和虚拟机上的代理。

指向 CloudWatch 代理到用于 Systems Manager 的同一临时凭证。

当您在包含本地服务器的混合环境中设置 Systems Manager 时,您可以使用 IAM 角色激活系统管理器。您应该使用为 EC2 实例创建的角色,其中包括CloudWatchAgentServerPolicyAmazonSSMManagedInstanceCore政策。

这将导致 Systems Manager 代理检索临时证书并将其写入本地凭证文件。你可以指出你的 CloudWatch 代理配置到同一个文件。你可以使用这个过程将使用 Systems Manager 代理和统一 CloudWatch 代理的本地服务器配置为仅使用临时证书中的AWS知识中心。

您还可以通过定义单独的 Systems Manager Automation Runbook 和状态管理器关联以及使用标签定位本地实例来自动执行此过程。创建时激活 Systems Manager对于本地实例,您应包括一个标签,用于将实例标识为本地实例。

考虑使用拥有 VPN 的帐户和地区或AWS Direct Connect访问和AWSPrivateLink。 您可以使用AWS Direct Connect要么AWS Virtual Private Network(AWS VPN) 在本地网络和您的虚拟私有云 (VPC) 之间建立私有连接。AWSPrivateLink 建立私有连接 CloudWatch 使用接口 VPC 终端节点进行日志。如果您有限制阻止数据通过公共互联网发送到公共服务终端节点,则此方法非常有用。
所有指标必须包含在 CloudWatch 配置文件。 Amazon EC2 包括标准指标(例如 CPU 利用率),但必须为本地实例定义这些指标。您可以使用单独的平台配置文件为本地服务器定义这些指标,然后将配置附加到标准 CloudWatch 平台的指标配置。

临时 EC2 实例的注意事项

EC2 实例是临时的,或者短暂的,如果它们是 Amazon EC2 Auto Scaling 配置的,则 Amazon EMR,Amazon EC2 Spot 实例,或者AWS Batch. 临时 EC2 实例可能会导致大量 CloudWatch 没有关于其运行时源的其他信息的公共日志组下的流。

如果您使用临时 EC2 实例,请考虑在日志组和日志流名称中添加其他动态上下文信息。例如,您可以包括竞价型实例请求 ID、Amazon EMR 集群名称或 Auto Scaling 组名称。对于新启动的 EC2 实例,此信息可能会有所不同,您可能必须在运行时检索和配置它。您可以通过编写 CloudWatch 启动时的代理配置文件,然后重新启动代理以包含更新的配置文件。这样可以使用动态运行时信息向 CloudWatch 交付日志和指标。

您还应确保指标和日志是由 CloudWatch 在临时 EC2 实例终止之前代理。这些区域有: CloudWatch 代理商包括flush_interval参数,可以配置为定义刷新日志和指标缓冲区的时间间隔。您可以根据工作负载降低此值并停止 CloudWatch 并强制缓冲区在 EC2 实例终止之前刷新。

使用自动化解决方案部署 CloudWatch 代理人

如果您使用自动化解决方案(例如 Ansible 或 Chef),则可以利用它自动安装和更新 CloudWatch 代理。如果使用此方法,则必须评估以下注意事项:

  • 验证自动化是否涵盖了您支持的操作系统和操作系统版本。如果自动化脚本不支持组织的所有操作系统,则应为不受支持的操作系统定义替代解决方案。

  • 验证自动化解决方案是否定期检查 CloudWatch 代理更新和升级. 您的自动化解决方案应定期检查 CloudWatch 代理,或者定期卸载并重新安装代理。您可以使用计划程序或自动化解决方案功能定期检查和更新代理程序。

  • 验证是否可以确认代理安装和配置合规性. 自动化解决方案应使您能够确定系统何时没有安装代理程序或代理程序何时无法正常工作。您可以在自动化解决方案中实施通知或警报,以便跟踪失败的安装和配置。