使用 Amazon CloudWatch 可观测性访问管理器进行集中监控 - AWS Prescriptive Guidance

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

使用 Amazon CloudWatch 可观测性访问管理器进行集中监控

由 Anand Krishna Varanasi (AWS)、Jimmy Morgan ()、Ashish Kumar (AWS)、Balaji Vedagiri (AWS)、()、Sarat Chandra Pothula (AWS) 和 Vivek Thangamuthu JAGDISH KOMAKULA (AWS) 创作 AWS AWS

摘要

可观测性对于监控、理解应用程序和排除应用程序故障至关重要。跨多个账户的应用程序(如 AWS Control Tower 或 landing zone 实现)会生成大量日志和跟踪数据。为了快速解决问题或了解用户分析或业务分析,您需要一个跨所有账户的通用可观测性平台。Amazon CloudWatch Observability 访问管理器允许您从一个中心位置访问和控制多个账户日志。

您可使用可观测性访问管理器来查看和管理源账户生成的可观测性数据日志。源账户是为其资源生成 AWS 账户 可观测性数据的个人。源账户与监控账户共享其可观测性数据。共享的可观察性数据可以包括 Amazon 中的指标 CloudWatch、Amazon Logs 中的 CloudWatch 日志以及中的 AWS X-Ray跟踪。有关更多信息,请参阅 Observability Access Manager 文档

这种模式适用于拥有多个应用程序或基础架构 AWS 账户 并需要在公共位置查看日志的用户。它解释了如何使用 Terraform 设置 Observability Access Manager,以监控这些应用程序或基础设施的状态和运行状况。您可以通过多种方式安装此解决方案:

操作说明部分中的说明涵盖了手动实现。有关AFT安装步骤,请参阅 Obs GitHub ervability Access Manager 存储库的README文件。

先决条件和限制

先决条件

  • 在您的系统或自动管道中安装或引用 Terraform。(我们建议您使用最新版本。)

  • 可用作中央监控账户的账户。其他账户创建到中央监控账户的链接以便查看日志。

  • (可选)源代码存储库,例如 GitHub、 AWS CodeCommit、Atlassian Bitbucket 或类似系统。如果您使用的是自动化 CI/CD 管道,则不需要源代码存储库。

  • (可选)在中创建用于代码审查和代码协作的拉取请求 (PRs) 的权限 GitHub。

限制

Observability Access Manager 具有以下服务限额,且该限额不可更改。部署此功能之前,请考虑这些配额。有关更多信息,请参阅 CloudWatch 文档中的CloudWatch 服务配额

  • 源账户关联:您最多可以将每个源账户关联到五个监控账户。

  • S ink AWS 区域 s:您可以为一个账户创建多个接收器,但每个账户只允许生成一个接收器。

此外:

  • 汇和链接必须在同一位置创建 AWS 区域;它们不能是跨区域的。

跨区域和跨账户监控

对于跨区域、跨账户监控,您可以选择以下选项之一:

  • 为警报和指标创建跨账户和跨区域 CloudWatch 仪表板。此选项不支持日志和跟踪。

  • 使用 Amazon OpenSearch 服务实现集中日志

  • 从所有租户账户中为每个区域创建一个接收器,将指标推送到集中式监控账户(如本模式中所述),然后使用CloudWatch 指标流将数据发送到公共外部目标或第三方监控产品,例如 Datadog、Dynatrace、Sumo Logic、Splunk 或 New Relic。

架构

组成部分

CloudWatch Observability Access Manager 由两个主要组件组成,可实现跨账户可观察性:

  • 接收器使源账户能够将可观测性数据发送到中央监控账户。接收器基本上为源账户提供了一个连接的网关连接。只能有一个接收器网关或连接,并且可以有多个账户连接到它。

  • 每个源账户都有一个到接收器网关连接的链接,可观测性数据通过此链接发送。必须先创建接收器,然后才能从每个源账户创建链接。

架构

下图说明了 Observability Access Manager 及其组件。

带有接收器和链接的跨账户可观察性架构。

工具

AWS 服务

  • Amazon CloudWatch 可帮助您实时监控您的 AWS 资源和运行的应用程序 AWS 的指标。

  • AWS Organizations是一项账户管理服务,可帮助您将多个账户整合 AWS 账户 到一个由您创建和集中管理的组织中。

  • AWS Identity and Access Management (IAM) 通过控制谁经过身份验证并有权使用 AWS 资源,从而帮助您安全地管理对资源的访问权限。

工具

代码存储库

此模式的代码可在 Obs GitHub ervability 访问管理器存储库中找到。

最佳实践

  • 在 AWS Control Tower 环境中,将日志帐户标记为中央监控帐户(接收器)。

  • 如果您有多个组织中有多个账户 AWS Organizations,我们建议您在配置策略中加入组织而不是个人账户。如果您的账户数量较少,或者这些账户不属于接收器配置策略中的组织,则您可能会决定包含个人账户。

操作说明

任务描述所需技能

克隆存储库。

克隆 GitHub 可观测性访问管理器存储库:

git clone https://github.com/aws-samples/cloudwatch-obervability-access-manager-terraform
AWS DevOps、云管理员、AWS管理员

为接收器模块指定属性值。

main.tf 文件中 (在存储库的 deployments/aft-account-customizations/LOGGING/terraform/ 文件夹中),为以下属性指定值:

  • sink_name: CloudWatch 水槽的名称。

  • allowed_oam_resource_types: 可观察性访问管理器目前支持 CloudWatch 指标、日志组和 AWS X-Ray 跟踪。

  • allowed_source_accounts:允许向中央 CloudWatch 接收器帐户发送日志的源帐户。

  • allowed_source_organizations:允许向中央 CloudWatch 接收器账户发送日志的来源 AWS Control Tower 组织。

有关更多信息,请参阅文档中的AWS:: Oam:: Sink。 AWS CloudFormation

AWS DevOps、云管理员、AWS管理员

安装接收器模块。

导出您选择作为监控账户的凭据 AWS 账户 ,然后安装 Observability Access Manager 接收器模块:

Terraform Init Terrafom Plan Terraform Apply
AWS DevOps、云管理员、AWS管理员
任务描述所需技能

为链接模块指定属性值。

main.tf 文件中(在存储库的 deployments/aft-account-customizations/LOGGING/terraform/ 文件夹中),为以下属性指定值:

  • account_label:使用下列值之一:

    • $AccountName:账户的名称。

    • $AccountEmail:全球唯一的电子邮件地址,包括电子邮件域(例如 hello@example.com)

    • $AccountEmailNoDomain:没有域名的电子邮件地址。

  • allowed_oam_resource_types: 可观察性访问管理器目前支持 CloudWatch 指标、日志组和 AWS X-Ray 跟踪。

有关更多信息,请参阅文档中的AWS:: Oam:: Link。 AWS CloudFormation

AWS DevOps、云管理员、云架构师

为个人账户安装链接模块。

导出个人账户凭证,并安装 Observability 访问管理器链接模块:

Terraform Plan Terraform Apply

您可以为每个账户单独设置链接模块,也可以使用AFT在大量账户中自动安装此模块。

AWS DevOps、云管理员、云架构师
任务描述所需技能

状态消息。

  1. 登录到监控账户。

  2. 打开 CloudWatch 管理控制台

  3. 在左侧导航窗格中,选择 设置

在右侧,您应该会看到带有绿色勾号的监控账户已启用状态消息。这意味着监控账户有一个 Observability Access Manager 接收器,其他账户的链接将连接到该接收器。

批准 link-to-sink连接。

  1. 选择状态消息下方的关联账户资源选项。该信息确认这是监控账户,列出了从租户源帐户共享的数据(日志指标、跟踪),并将账户标签显示为 $ AccountName。

    此屏幕提供了两个用于将租户账户链接到监控账户的选项:组织级批准或账户级批准。对于每个选项,您可以选择下载审批 AWS CloudFormation 模板或单独批准每个账户。

  2. 为简单起见,在每个账户级别选择要批准的任意账户。此选项为账户提供批准的链接。

  3. 选择 “制” URL 以复制链接。

  4. 登录到源账户。

  5. 在浏览器窗口,粘贴链接,然后选择批准接收器链接

  6. 对于其他源账户,重复此操作。

有关更多信息,请参阅 CloudWatch 文档中的将监控账户与源账户关联起来

AWS DevOps、云管理员、云架构师
任务描述所需技能

查看跨账户数据。

  1. 登录到监控账户。

  2. 打开 CloudWatch 管理控制台

  3. 在左侧导航窗格,选择选项以查看跨账户日志、指标和跟踪。

AWS DevOps、云管理员、云架构师
任务描述所需技能

查看其他账户的指标、控制面板、日志、小部件和警报。

作为一项附加功能,您可以与其他账户共享 CloudWatch 指标、仪表板、日志、小组件和警报。每个账户都使用一个名为 CloudWatch-CrossAccountSharingRole 的IAM角色来访问这些数据。

与中央监控账户有信任关系的源账户可以承担该角色并查看监控账户的数据。

CloudWatch 提供了用于创建角色的示例 CloudFormation 脚本。选择 “管理角色”IAM,然后在要查看数据的帐户中运行此脚本。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::XXXXXXXXX:root", "arn:aws:iam::XXXXXXXXX:root", "arn:aws:iam::XXXXXXXXX:root", "arn:aws:iam::XXXXXXXXX:root" ] }, "Action": "sts:AssumeRole" } ] }

有关更多信息,请参阅 CloudWatch 文档 CloudWatch中的启用跨账户功能

AWS DevOps、云管理员、云架构师
任务描述所需技能

设置跨账户、跨区域访问。

在中央监控账户中,您可以选择添加账户选择器,以便在账户之间轻松切换并查看其数据,而无需进行身份验证。

  1. 登录到监控账户。

  2. 打开 CloudWatch 管理控制台

  3. 在左侧导航窗格中,选择 设置

  4. 查看跨账户跨区域部分中,选择配置

  5. 选择启用,然后选中显示控制台选择器复选框。

  6. 选择以下选项之一:

    • 账户 ID 输入:当您想要更改账户以查看跨账户数据时,此选项会提示您手动输入账户 ID。

    • AWS组织账户选择器:如果您已 CloudWatch 与集成 AWS Organizations,则此选项会提供一个下拉选择器,其中包含组织中账户的完整列表。

    • 自定义账户选择器:此选项允许您手动输入账户列表IDs以填充选择器。

  7. 选择 Save changes(保存更改)

有关更多信息,请参阅文档中的跨账户跨区域 CloudWatch 控制台。 CloudWatch

AWS DevOps、云管理员、云架构师

相关资源