跨账户跨区域的 CloudWatch 控制台 - Amazon CloudWatch

跨账户跨区域的 CloudWatch 控制台

为了赋予您的指标、日志和跟踪记录最丰富的跨账户可观测性和发现体验,我们建议您使用 CloudWatch 跨账户可观测性。有关更多信息,请参阅CloudWatch 跨账户可观测性

CloudWatch 还提供了跨账户、跨区域的 CloudWatch 控制面板。利用此功能,您可以跨账户查看控制面板、告警、指标和自动控制面板。它不针对日志或跟踪记录提供跨账户可见性。

如果您还使用了 CloudWatch 跨账户可观测性,则此跨账户 CloudWatch 控制面板的一个使用案例是让您的一个 CloudWatch 跨账户可观测性源账户查看另一个源账户的指标。

本节的其余部分介绍了跨账户、跨区域的控制面板。您可以使用它来创建控制面板,将来自多个 AWS 账户和多个 AWS 区域的 CloudWatch 数据汇总到单个控制面板中。您还可以在某个账户中创建告警,以监控不同账户中的指标。

许多组织都将其 AWS 资源部署到多个账户中来提供账单和安全边界。在这种情况下,我们建议您将一个或多个账户指定为监控账户,并在这些账户中构建跨账户控制面板。

跨账户功能与 AWS Organizations 集成,可帮助您高效地构建跨账户控制面板。

跨区域功能

跨区域功能现已自动内置。您无需执行任何额外步骤即可在同一图表或同一控制面板上的单个账户中显示来自不同区域的指标。由于告警不支持跨区域功能,您无法在某个区域中创建用以监视其他区域内指标的告警。

在 CloudWatch 中启用跨账户功能

要在 CloudWatch 控制台中设置跨账户功能,请使用 CloudWatch 控制台设置您的共享账户和监控账户。

设置共享账户

您必须在每个账户中启用共享,以使数据对监控账户可用。

这将向所有在您共享的账户中查看跨账户控制面板的用户授予您在步骤 5 中选择的只读权限(如果该用户在您共享的账户中具有相应权限)。

使您的账户能够与其他账户共享 CloudWatch 数据
  1. 访问 https://console.aws.amazon.com/cloudwatch/ 打开 CloudWatch 控制台。

  2. 在导航窗格中,选择设置

  3. 对于 Share your CloudWatch data(共享 CloudWatch 数据),选择 Configure(配置)。

  4. 对于 Sharing (共享),选择 Specific accounts (特定账户),然后输入要与之共享数据的账户的 ID。

    您在此处指定的任何账户都可以查看您的账户的 CloudWatch 数据。仅指定您知道并信任的账户的 ID。

  5. 对于 Permissions (权限),使用下列选项之一来指定共享数据的方式:

    • Provide read-only access to your CloudWatch metrics, dashboards, and alarms(提供对 CloudWatch 指标、控制面板和告警的只读访问权限)。此选项使监控账户能够创建跨账户控制面板,这些控制面板具有包含您账户中的 CloudWatch 数据的小组件。

    • 包括 CloudWatch 自动控制面板。如果选择此选项,则监控账户中的用户还可以查看此账户的自动控制面板中的信息。有关更多信息,请参阅Amazon CloudWatch 入门

    • 包括对 X-Ray 跟踪视图的 X-Ray 只读访问 如果选择此选项,监控账户中的用户还可以查看 X-Ray 跟踪视图,以及此账户中的 X-Ray 跟踪信息。有关更多信息,请参阅 Using the X-Ray Trace Map

    • Full read-only access to everything in your account (对账户中所有内容的完全只读访问权)。此选项使您用于共享的账户能够创建跨账户控制面板,这些控制面板具有包含您账户中的 CloudWatch 数据的小组件。它还使这些账户能够更深入地查看您的账户,并在其他 AWS 服务的控制台中查看您账户的数据。

  6. 选择 Launch CloudFormation template (启动 CloudFormation 模板)

    在确认屏幕中,键入 Confirm,并选择 Launch template (启动模板)

  7. 选中 I acknowledge...(我确认...) 复选框,然后选择 Create stack (创建堆栈)

与整个企业共享

通过完成上述过程,创建一个 IAM 角色来使您的账户能够与某个账户共享数据。您可以创建或编辑一个 IAM 角色,该角色将与企业中所有的账户共享您的数据。仅在您知道并信任组织中所有的账户的情况下执行此操作。

如果用户在与您共享的帐户中具有相应权限,这将向在您的共享账户中查看跨账户控制面板的所有用户授予在上一过程第 5 步所示策略中列出的只读权限。

与企业中所有的账户共享您的 CloudWatch 账户数据
  1. 如果尚未执行此操作,请完成上述过程来与某个 AWS 账户共享您的数据。

  2. 登录 AWS Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  3. 在导航窗格中,选择角色

  4. 在角色列表中,选择 CloudWatch-CrossAccountSharingRole

  5. 选择信任关系,然后选择编辑信任关系

    您将看到与以下内容类似的策略:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": "sts:AssumeRole" } ] }
  6. 将策略更改为以下内容,并将 org-id 替换为您组织的 ID。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "org-id" } } } ] }
  7. 选择更新信任策略

设置监控帐户

如果要查看跨账户 CloudWatch 数据,请启用每个监控账户。

完成以下过程后,CloudWatch 将创建一个服务相关角色,CloudWatch 在监控账户中使用该角色来访问从其他账户共享的数据。此服务相关角色称为 AWSServiceRoleForCloudWatchCrossAccount。有关更多信息,请参阅 为 CloudWatch 使用服务相关角色

使您的账户能够查看跨账户 CloudWatch 数据
  1. 访问 https://console.aws.amazon.com/cloudwatch/ 打开 CloudWatch 控制台。

  2. 在导航窗格中,选择 Settings(设置),然后在 Cross-account cross-region(跨账户跨区域)部分中,选择 Configure(配置)。

  3. View cross-account cross-region(查看跨账户跨区域)部分,选择 Enable(启用),然后选择 Show selector in the console(在控制台中显示选择器)复选框以在您绘制指标图表或创建告警时,让账户选择器显示在 CloudWatch 控制台中。

  4. View cross-account cross-region (跨账户跨区域查看) 中,选择下列选项之一:

    • Account Id Input (账户 ID 输入)。在查看跨账户的数据时,每当您要切换账户时,此选项都会提示您手动输入账户 ID。

    • AWS Organization account selector(Amazon Organizations 账户选择器)。此选项可显示您在完成与 Organizations 的跨账户集成时指定的账户。在您下次使用控制台时,CloudWatch 会为您显示这些账户的下拉列表,供您在查看跨账户数据时进行选择。

      为此,您必须已先使用企业管理账户允许 CloudWatch 查看组织中的账户列表。有关更多信息,请参阅(可选)与 AWS Organizations 集成

    • Custom account selector (自定义账户选择器)。此选项提示您输入账户 ID 的列表。在您下次使用控制台时,CloudWatch 会为您显示这些账户的下拉列表,供您在查看跨账户数据时进行选择。

      此外,您可为其中每个账户输入一个标签,以便在选择要查看的账户时帮助您识别它们。

      用户在此处进行的账户选择器设置仅为该用户保留,而不为监视账户中的所有其他用户保留。

  5. 选择启用

完成此设置后,您可以创建跨账户控制面板。有关更多信息,请参阅跨账户跨区域的控制面板

(可选)与 AWS Organizations 集成

如果要将跨账户功能与 AWS Organizations 集成,您必须使组织中的所有账户对监控账户可用。

启用跨账户 CloudWatch 功能以访问企业中的所有账户
  1. 登录到企业的管理账户。

  2. 访问 https://console.aws.amazon.com/cloudwatch/ 打开 CloudWatch 控制台。

  3. 在导航窗格中,选择 Settings (设置),然后选择 Configure (配置)

  4. 对于 Grant permission to view the list of accounts in the organization (授予查看组织中账户列表的权限),选择要提示输入账户 ID 列表的 Specific accounts (特定账户)。您组织中的账户列表仅与您在此处指定的账户共享。

  5. 选择 Share organization account list (共享组织账户列表)

  6. 选择 Launch CloudFormation template (启动 CloudFormation 模板)

    在确认屏幕中,键入 Confirm,并选择 Launch template (启动模板)

对 CloudWatch 跨账户设置问题进行故障排除

这部分包含有关 CloudWatch 中跨账户控制台部署的故障排除提示。

我在显示跨账户的数据时收到访问被拒绝错误

请检查以下事项:

  • 您的监控账户应具有一个名为 AWSServiceRoleForCloudWatchCrossAccount 的角色。如果没有此角色,则需要创建它。有关更多信息,请参阅Set Up a Monitoring Account

  • 每个共享账户应具有一个名为 CloudWatch-CrossAccountSharingRole 的角色。如果没有此角色,则需要创建它。有关更多信息,请参阅Set Up A Sharing Account

  • 此共享角色必须信任监控账户。

确认是否已为 CloudWatch 跨账户控制台正确设置您的角色
  1. 登录 AWS Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择角色

  3. 在角色列表中,确保需要的角色已存在。在共享账户中,查找 CloudWatch-CrossAccountSharingRole。在监控账户中,查找 AWSServiceRoleForCloudWatchCrossAccount

  4. 如果您正在使用共享账户,并且 CloudWatch-CrossAccountSharingRole 已存在,请选择 CloudWatch-CrossAccountSharingRole

  5. 选择信任关系,然后选择编辑信任关系

  6. 确认策略已列出监控账户的账户 ID 或监控账户所属组织的组织 ID。

控制台中未显示账户下拉菜单

首先,检查您是否已创建正确的 IAM 角色,如前面的故障排除部分中所述。如果已正确设置这些角色,请确保您已启用此账户来查看跨账户的数据,如Enable Your Account to View Cross-Account Data中所述。

使用跨账户后禁用和清理

要禁用 CloudWatch 的跨账户功能,请执行下列步骤。

步骤 1:删除跨账户堆栈或角色

最佳方法是删除用于启用跨账户功能的 AWS CloudFormation 堆栈。

  • 在每个共享账户中,删除 CloudWatch-CrossAccountSharingRole 堆栈。

  • 如果您使用 AWS Organizations 为企业中的所有账户启用跨账户功能,请删除企业管理账户中的 CloudWatch-CrossAccountListAccountsRole 堆栈。

如果您没有使用 AWS CloudFormation 堆栈以启用跨账户功能,请执行以下操作:

  • 在每个共享账户中,删除 CloudWatch-CrossAccountSharingRole IAM 角色。

  • 如果您使用 AWS Organizations 为企业中的所有账户启用跨账户功能,请删除企业管理账户中的 CloudWatch-CrossAccountSharing-ListAccountsRole IAM 角色。

步骤 2:删除服务相关角色

在监控账户中,删除 AWSServiceRoleForCloudWatchCrossAccount 服务相关的 IAM 角色。