CloudWatch 在集中式或分布式账户中使用 - AWS 规范性指导

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

CloudWatch 在集中式或分布式账户中使用

尽管 CloudWatch 旨在监控一个账户和区域中的 AWS 服务或资源,但您可以使用中央账户来捕获来自多个账户和地区的日志和指标。如果您使用多个账户或区域,则应评估是使用集中账户方法还是使用个人账户来捕获日志和指标。通常,多账户和多区域部署需要采用混合方法,以支持安全、分析、运营和工作负载所有者的需求。

下表提供了选择使用集中式、分布式或混合方法时需要考虑的方面。

账户结构 您的组织可能有多个单独的帐户(例如,用于非生产和生产工作负载的帐户),或者在特定环境中为单个应用程序设置数千个帐户。我们建议您在运行工作负载的账户中维护应用程序日志和指标,这样工作负载所有者就可以访问日志和指标。这使他们能够在日志和监控中发挥积极作用。我们还建议您使用单独的日志记录帐户来汇总所有工作负载日志,以进行分析、聚合、趋势和集中操作。单独的日志帐户也可以用于安全、存档和监控以及分析。

访问要求 团队成员(例如工作负载所有者或开发人员)需要访问日志和指标才能进行故障排除和改进。应将日志保存在工作负载的帐户中,以便于访问和故障排除。如果日志和指标保存在与工作负载不同的账户中,则用户可能需要定期在账户之间切换。

使用集中式帐户可向授权用户提供日志信息,而无需授予工作负载帐户访问权限。这可以简化分析工作负载的访问要求,在这些工作负载中,需要对在多个账户中运行的工作负载进行聚合。集中式日志账户还可以有其他搜索和聚合选项,例如 Amazon S OpenSearch ervice 集群。Amazon S OpenSearch ervice 为您的日志提供精细的访问控制,直至字段级别。当您的敏感或机密数据需要专门的访问权限和权限时,精细的访问控制非常重要。

操作 许多组织都有集中的运营和安全团队或外部组织来提供运营支持,需要访问日志进行监控。集中式日志和监控可以更轻松地识别所有账户和工作负载的趋势、搜索、汇总和执行分析。如果您的组织使用 “你构建,你运行” 的方法 DevOps,那么工作负载所有者需要在其账户中记录和监控信息。除了分布式工作负载所有权外,可能需要采用混合方法来满足中央运营和分析需求。

环境

根据安全要求和账户架构,您可以选择将生产账户的日志和指标托管在中心位置,并将其他环境(例如开发或测试)的日志和指标保存在相同或单独的账户中。这有助于防止生产过程中创建的敏感数据被更广泛的受众访问。

CloudWatch 提供了多个选项,可使用 CloudWatch 订阅过滤器实时处理日志。您可以使用订阅过滤器将日志实时流式传输到 AWS 服务,以进行自定义处理、分析和加载到其他系统。如果您采用混合方法,除了集中式账户和区域外,还可以在个人账户和区域中查看日志和指标,这可能特别有用。以下列表提供了可用于此目的的 AWS 服务示例:

  • Amazon Data Firehos e — Firehose 提供了一种流媒体解决方案,可根据生成的数据量自动扩展和调整大小。您无需管理 Amazon Kinesis 数据流中的分片数量,无需额外编码即可直接连接到亚马逊简单存储服务 (Amazon S3) OpenSearch 、亚马逊服务或 Amazon Redshift。如果您想将日志集中在这些服务中,Firehose 是一个有效的解决方案。 AWS

  • Amazon Kinesis Data Streams — Kinesis Data Streams — 如果你需要与 Firehose 不支持的服务集成并实现额外的处理逻辑,那么Kinesis Data Streams是一个合适的解决方案。您可以在您的账户和区域中创建 Amazon CloudWatch Logs 目标,在中央账户中指定 Kinesis 数据流,并指定一个 AWS Identity and Access Management (IAM) 角色,该角色授予其在流中放置记录的权限。Kinesis Data Streams 为您的日志数据提供了一个灵活的开放式着陆区,然后可以通过不同的选项使用这些数据。您可以将 Kinesis Data Streams 日志数据读入您的账户,执行预处理,然后将数据发送到您选择的目的地。

    但是,您必须为流配置分片,使其大小适合生成的日志数据。Kinesis Data Streams 充当日志数据的临时中介或队列,您可以在 Kinesis 流中将数据存储一到 365 天。Kinesis Data Streams 还支持重播功能,这意味着你可以重播未消耗的数据。

  • Amazon S OpenSearch ervic e — CloudWatch 日志可以将日志组中的日志流式传输到个人账户或集中账户中的 OpenSearch 集群。当您将日志组配置为将数据流式传输到 OpenSearch 集群时,将在与您的日志组相同的账户和区域中创建 Lambda 函数。Lambda 函数必须与集群建立网络连接。 OpenSearch 您可以自定义 Lambda 函数以执行额外的预处理,此外还可以对 Amazon Service 进行自定义提取。 OpenSearch 使用 Amazon S OpenSearch ervice 进行集中日志记录可以更轻松地分析、搜索和解决云架构中多个组件的问题。

  • Lambda — 如果您使用 Kinesis Data Streams,则需要预配置和管理使用流中数据的计算资源。为避免这种情况,您可以将日志数据直接流式传输到 Lambda 进行处理,然后根据您的逻辑将其发送到目的地。这意味着您无需预置和管理计算资源即可处理传入的数据。如果您选择使用 Lambda,请确保您的解决方案与 Lambda 配额兼容。

您可能需要以文件格式处理或共享存储在 CloudWatch 日志中的日志数据。您可以创建导出任务,将特定日期或时间范围内的日志组导出到 Amazon S3。例如,您可以选择每天将日志导出到 Amazon S3 以进行分析和审计。Lambda 可用于自动执行此解决方案。您还可以将此解决方案与 Amazon S3 复制相结合,将您的日志从多个账户和区域发送并集中到一个集中账户和区域。

CloudWatch 代理配置还可以在该部分中指定一个credentialsagent。这指定了向其他账户发送指标和日志时要使用的 IAM 角色。如果指定,则此字段包含role_arn参数。当您只需要在特定的集中式账户和地区进行集中记录和监控时,可以使用此字段。

您还可以使用 AWS SDK 以自己选择的语言编写自己的自定义处理应用程序,读取账户中的日志和指标,并将数据发送到中央账户或其他目标以进行进一步处理和监控。