亚马逊AWS官方博客

跨账户跨区域控制面板与 Amazon CloudWatch

AWS 云部署的最佳实践包括使用多账户和/或多区域。多账户提供了安全和计费边界,可隔离资源并减少问题的影响。多区域可确保高隔离度、低最终用户延迟以及应用程序数据弹性。这些最佳实践可能会伴有一些监控和故障排查难题。

集中式运营团队、开发运营工程师和服务拥有者需要对多个区域和多个账户中运行的应用程序进行监控、故障排查和分析。如果收到警报,随叫随到工程师可能需要登录控制面板诊断问题,还可能需要登录到其他账户以查看多应用程序组件或依赖项的其他控制面板。服务拥有者需要了解可能影响服务可用性的应用程序资源、共享资源或跨应用程序依赖项。使用多账户和/或多区域可能会使关联不同组件进行根本原因分析变得极具挑战性,并增加解决问题所需的时间。

今天宣布,Amazon CloudWatch 跨账户跨区域控制面板可供客户创建高水平的运行控制面板,并利用单击操作深挖不同账户中更加具体的控制面板,而不必登录和注销不同的账户或切换区域。跨账户和区域可视化、聚合和汇总性能和运行数据有助于减少冲突,从而帮助缩短解决问题所需的时间。跨账户跨区域还可纯粹用于导航,而不构建控制面板,例如我只对查看其他账户和/或区域中的警报/资源/指标感兴趣的情况。

Amazon CloudWatch 跨账户跨区域控制面板账户设置
上手跨账户跨区域控制面板非常简单,如果我愿意,我还可以选择与 AWS Organizations 集成。借助 Organizations 管理和监管多个 AWS 账户,我可以在本组织的任何账户中使用 CloudWatch 控制台在 Amazon CloudWatch 控制面板、指标和警报之间导航,而无需登录,在本博文我将会具体地演示。当然,我也可以仅为单个账户设置跨区域控制面板。在本博文中,我将使用与 Organizations 的集成为例。

为了支持本博文,我已创建了一个组织,并使用 Organizations 控制台邀请了我的几个其他账户加入。前面提到,使用 Organizations 可让我随后在配置我的控制面板时轻松地选择账户。我还可以选择不使用 Organizations,并且预先填充自定义账户选择器,那样我在构建控制面板时,就不需要记住账户,或在需要时手动输入账户 ID。您可以在《AWS Organizations 用户指南》中阅读更多关于如何设置组织的信息。设置了我的组织后,我就可以随时开始配置账户。

我的第一个任务是识别和配置我将在控制面板中创建的账户 – 这是我的监控账户(我可以拥有多个此类账户)。其次,我需要识别我要监控的账户(在 Organizations 中称为成员账户)– 这些账户将配置为与我的监控账户共享数据。我的监控账户需要有服务链接角色 (SLR),以允许 CloudWatch 充当每个成员账户中的角色。当我启用跨账户跨区域选项时,控制台将自动创建此角色。设置每个成员账户时,我需要从该账户内启用与监控账户的数据共享。

先从我的监控账户开始,从 CloudWatch 控制台主页中,我选择左侧导航面板中的设置跨账户跨区域显示在页面顶部,我可以单击配置开始。


这样,我将进入设置页面,在我的成员账户中也将通过此页面启用数据共享。现在,在我的监控账户中,我想单击编辑选项以查看我的跨账户跨区域选项:


对于我的监控账户,最后一步是启用 AWS Organization 账户选择器选项。这将需要为组织的主账户部署其他角色,以便允许该账户访问组织中的账户列表。控制台将引导我完成主账户的此流程。


我的监控账户的设置到此结束,现在我可以将注意力转到成员账户,并启用数据共享。为此,我将注销我的监控账户,对于每个成员账户,登录并导航到 CloudWatch 控制台,再次单击设置,然后单击跨账户跨区域下的配置,如前文所示。这次,我单击共享数据,输入我要与其共享数据的监控账户的 ID,并设置共享的范围(对我的 CloudWatch 数据的只读访问权限,或对我的账户的完全只读访问权限),然后使用预定义模板启动 CloudFormation 堆栈以完成此流程。请注意,我还可以选择与组织中的所有账户共享我的数据。文档中详细地介绍了如何操作。


那样将完成我的监控账户和成员账户的配置,我的监控账户将能够访问并获取我的资源的 CloudWatch 数据。现在,我可以继续在我的监控账户中创建一个或多个控制面板。

配置跨账户跨区域控制面板
完成账户配置后,就可以创建控制面板了! 在我的成员账户中,我同时运行不同区域中的多个 EC2 实例。一个成员账户拥有在美国西部(俄勒冈)运行的一个 Windows 和一个 Linux 实例。我的第二个成员账户在美国东部(俄亥俄)的 AWS Auto Scaling 组中运行三个 Windows 实例。我想创建一个控制面板,让自己能够查看两个账户和两个区域中的所有这些实例的 CPU 和网络利用率。

首先,我需要使用我的监控账户登录 AWS 控制台,并导航到 CloudWatch 控制台主页,单击控制面板,然后单击创建控制面板。请注意页面顶部的新建账户 ID 和区域字段 – 现在已配置了跨账户跨区域访问权限,我还可以跨账户和/或区域执行临时检查,而无需构建控制面板。


我首先命名控制面板 – 我选择 Compute – 然后选择添加小部件以添加我的第一组 CPU 利用率指标。我选择线小部件,并单击了配置。这样将会显示添加指标图表对话框,我可以选择要从哪些账户和区域将指标提取到我的控制面板。


选择了账户和区域后,我可以继续为我的实例选择相关指标,并可以为我的监控账户添加我在两个不同区域中的所有实例。切换账户和区域,为我的成员账户中的实例重复此流程。然后,我为入站网络流量添加其他小部件,这次是堆叠面积,再次选择我的每个账户和区域中的感兴趣实例。最后,我单击保存控制面板。最终结果是显示我在不同账户和区域中的 4 个实例和一个群集的 CPU 利用率和网络流量(请注意每个小部件右上角的 xa 指示器,指出这代表数据来自多个账户和区域)。


光标悬停在特定实例上将会激活弹出提示,包含其他数据以及将在符合指标的账户和区域中打开 CloudWatch 主页的深层链接:

可用性
Amazon CloudWatch 跨账户跨区域控制面板如今可用于所有商业 AWS 区域,您可以在提供 Organizations 的区域中利用与 AWS Organizations 集成的功能。

– Steve