Amazon CloudWatch 功能

​概述

Amazon CloudWatch 是一种监控和管理服务,可提供有关 AWS、本地、混合和其他云应用程序和基础设施资源的数据和可行洞察。您可以从一个平台收集和访问以日志和指标形式提供的所有性能和运营数据,而不是在孤岛(服务器、网络或数据库)中监控它们。通过 CloudWatch,您可以监控整个堆栈(应用程序、基础设施、网络和服务),并利用告警、日志和事件数据来执行自动操作并缩短解决问题的平均时间(MTTR)。这释放了重要的资源,使您可以专注于构建应用程序和创造业务价值。

CloudWatch 可为您提供可行洞察,有助于您优化应用程序性能,管理资源利用率并了解整个系统的运营状况。CloudWatch 提供频率高达 1 秒的指标和日志数据可见性,可保留 15 个月的数据(指标)并针对指标执行计算。这使您可以执行历史分析以便优化成本,并获得实时见解以优化应用程序和基础设施资源。 您可以使用 CloudWatch Container Insights 监控、排查容器化应用程序和微服务并发出相关提示。CloudWatch 收集、汇总和总结计算使用率信息(如 CPU、内存、磁盘和网络数据)以及诊断信息(如容器重启故障),以帮助 DevOps 工程师隔离问题并快速解决问题。Container Insights 为您提供来自 Amazon ECS for Kubernetes(EKS)、Amazon Elastic Container Service(ECS)、AWS Fargate 和独立 Kubernetes(k8s)等容器管理服务的洞察。 

收集

Amazon CloudWatch Logs 服务允许您近乎实时地收集和存储来自资源、应用程序和服务的日志。日志分为三个主要类别:

1)公开日志这些是由 AWS 服务代表您在本地发布的日志。目前支持两类日志:Amazon VPC 流日志和 Amazon Route 53 日志。

2)由 AWS 服务发布的日志。目前有超过 30 种 AWS 服务会向 CloudWatch 发送日志。这些服务包括 Amazon API Gateway、AWS Lambda、AWS CloudTrail 以及许多其他服务。

3)自定义日志。这些是来自您自己的应用程序和本地资源以及其他云端的日志。

您可以使用 AWS Systems Manager 安装 CloudWatch 代理,也可以使用 PutLogData API 操作轻松发布日志。

借助 Amazon CloudWatch,您无需执行任何操作即可从超过 70 种 AWS 服务(例如 Amazon Elastic Compute Cloud (Amazon EC2)、Amazon DynamoDB、Amazon Simple Storage Service (Amazon S3)、Amazon ECS、AWS Lambda 和 Amazon API Gateway)收集基础设施指标。例如,Amazon EC2 实例会自动发布 CPU 利用率、数据传输和磁盘使用情况指标,以帮助您了解状态更改。您可以使用 API Gateway 的内置指标来检测延迟,也可以利用 AWS Lambda 的内置指标来检测错误或限制。同样,Amazon CloudWatch 还允许您从您的应用程序收集应用程序指标(例如用户活动、错误指标或已用内存),以监控运营性能,排查问题和发现趋势。您可以使用 CloudWatch 代理或通过 PutMetricData API 服务调用将这些指标发布到 CloudWatch。除了原定设置基础设施指标外,如果您需要更详细的指标(如分区级 Amazon Kinesis Data Streams 指标),只需为每项资源选择相应指标即可。同样,应用程序指标可在高达 1 秒的频率下用于统计数据、图形和高分辨率告警。

Container Insights 简化了辅助指标和容器生态系统日志的收集和汇总。它从每个容器中收集计算性能指标(如 CPU、内存、网络和磁盘信息)作为性能事件,并自动生成用于监控和告警的自定义指标。性能事件摄取为 CloudWatch Logs 提供有关运行环境的元数据,例如 Amazon EC2 实例 ID、服务、Amazon Elastic Block Store (Amazon EBS) 卷挂载和 ID 等,以简化监控和故障排除。从这些摄取的日志中自动提取 CloudWatch 自定义指标,并使用 CloudWatch Logs Insights 的高级查询语言对这些指标做进一步分析。Container Insights 还提供了收集应用程序日志 (stdout/stderr)、自定义日志、预定义 Amazon EC2 实例日志、Amazon EKS/k8s 数据层面日志和 Amazon EKS 控制面板日志的选项。对于 Amazon EKS 和 k8s 集群,可以使用预配置的 FluentD 代理收集日志。有关更多详细信息,请参阅 Container Insights 日志设置文档。对于 Amazon ECS,可以使用 Amazon CloudWatch Logs 日志记录驱动程序Fluent Bit 收集应用程序日志。

CloudWatch Lambda Insights 简化了从 AWS Lambda 函数收集及汇总辅助指标和日志。它从每个 Lambda 函数中收集 CPU、内存和网络等计算性能指标作为性能事件,同时自动生成用于监控和报警的自定义指标。性能事件作为 CloudWatch Logs 摄取,以简化监控和故障排除。从这些摄取的日志中自动提取 CloudWatch 自定义指标,并使用 CloudWatch Logs Insights 的高级查询语言对这些指标做进一步分析。参阅 Lambda Insights 入门文档了解更多详情。

Amazon CloudWatch Metric Streams 支持您向选择的目的地,创建连续、近乎实时的指标流。这简化了使用 Amazon Kinesis Data Firehose HTTP 端点向常用的第三方服务提供商发送 CloudWatch 指标的流程。您可以创建包含最新的 CloudWatch 指标数据的连续、可扩展的流式传输,为控制面板、告警和其他依赖于准确及时指标数据的工具提供支持。您可以轻松将指标传输到 AWS 上的数据湖(例如 Amazon S3),并开始使用 Amazon Athena 等工具分析使用情况或性能。

监控

您可以使用 CloudWatch 中的跨账户可观测性来观测多个 AWS 账户中的资源。首先,通过将带有要监控的资源的账户指定为源账户来确定这些账户。CloudWatch 开始收集源账户内资源的指标、日志和跟踪,并将数据共享到监控账户,即您指定用于查看源账户生成的可观测性数据并与之交互的中央 AWS 账户。收集日志和指标数据并将其共享到监控账户,无需额外付费。对于跟踪数据,CloudWatch 会将第一个跟踪副本传送到第一个监控账户,无需额外付费。如果您选择将跟踪副本发送到其他监控账户以获得汇总的跨账户视图,则您的源账户需要根据标准 AWS X-Ray 和 Amazon CloudWatch 定价付费。可以将跟踪副本从每个源账户发送到最多五个监控账户

通过 Amazon CloudWatch 控制面板,您可以在统一视图中创建可重复使用的图表并可视化云资源和应用程序。您可以在单个控制面板中并排绘制指标和日志数据,从而快速获知具体情况,诊断问题并了解根本原因。例如,您可以可视化关键指标,如 CPU 利用率和内存,并将它们与容量进行比较。您还可以关联特定指标的日志模式,并设置告警以接收性能和运营问题提示。这让您能够全面了解整个系统的运行状况,并快速排查问题,以缩短解决问题的平均时间 (MTTR)。

Amazon CloudWatch 复合告警使您能够组合多个告警并减少告警噪音。如果应用程序问题影响应用程序中的多个资源,您将收到一个针对整个应用程序的告警通知,而不是针对每个受影响的资源分别收到一个告警。这有助于您专注于查找运营问题的根本原因,以减少应用程序的停机时间。您可以为应用程序、AWS 区域或可用区等资源分组提供一个整体状态。

Amazon CloudWatch 告警允许您设置指标阈值并触发操作。您可以创建高精度警报,将百分位数设置为统计数据,并根据需要指定或忽略操作。例如,您可以创建针对 Amazon EC2 指标的警报,设置通知,并采取一项或多项操作来检测和关闭未使用或未充分利用的实例。实时发出针对指标和事件的警报这项功能使您能够最大限度地减少停机时间和潜在的业务影响。

应用程序和基础设施资源会以日志和指标的形式生成大量运营和监控数据。除了让您能够在一个平台中访问和可视化这些数据集之外,Amazon CloudWatch 还能让您轻松将它们相互关联。这有助于您快速诊断问题并了解根本原因。例如,您可以将某个日志模式(例如错误)与特定指标关联,并设置告警以接收性能和运营问题提示。

Amazon CloudWatch Application Insights 为企业应用程序提供可观测性的自动化设置,以便您直观了解此类应用程序的运行状况。该功能有助于跨应用程序资源和技术堆栈(例如数据库、Web (IIS) 和应用程序服务器、操作系统、负载均衡器、队列等)识别和设置关键指标和日志。它会持续监控这些遥测数据,以检测和关联异常和错误,并向您通知应用程序中的任何问题。为帮助排查问题,它会创建自动化控制面板来呈现检测到的问题,包括相关的指标异常和日志错误,以及可帮助您分析潜在根源的其他洞察。这样您就可以迅速采取补救操作,确保应用程序在良好的运行状况下运行,并且不会影响到终端用户。

带有增强 EKS 可观测性的 Container Insights

Container Insights 现在提供详细的 EKS 指标,例如容器级性能指标、Kube 状态指标和 EKS 控制面板指标,协助您直观地深入了解各个容器层,轻松发现个别容器中的内存泄漏等问题。Container Insights 现在会显示耗用大量资源的容器层列表,因此即使您尚未设置警报,也可以识别环境中的风险,并在最终用户体验受到影响之前主动采取措施。带有增强 Amazon EKS 可观测性的 Container Insights 提供简易的入门体验,其中可在集群详细信息控制台上使用面向 EKS 的 CloudWatch 可观测性附加组件自动检测集群,并立即开始提取遥测数据。

未提供增强可观测性的 Container Insights

CloudWatch Container Insights 从您在 Amazon Elastic Container Service(Amazon ECS)、Amazon Elastic Kubernetes Service(Amazon EKS)、Amazon EC2 上的 Kubernetes 平台以及 AWS Fargate(适用于 Amazon ECS 和 Amazon EKS)上运行的容器化应用程序和微服务收集、聚合和汇总指标与日志。Container Insights 即时收集 CPU、内存、磁盘和网络指标等容器指标,并提供更深入的诊断信息,例如容器重新启动失败,以帮助您隔离并快速解决问题。Container Insights 通过自动控制面板提供容器可观测性,可让您轻松监控应用程序的运行状况和性能。您还可以针对 Container Insights 指标设置 CloudWatch 警报,以便在应用程序性能受到影响之前收到异常通知。

 

通过网络监测仪,您可以了解互联网问题如何影响 AWS 托管的应用程序与最终用户之间的性能和可用性,从而将您诊断这些问题所需的时间从几天缩短到几分钟。您可以探索不同时间范围和不同地理粒度的测量结果,快速可视化问题的影响,然后采取措施改善最终用户的体验(例如,通过切换到其他 AWS 服务或通过不同的 AWS 区域将流量重新路由到您的工作负载)。如果此问题由 AWS 网络所致,系统会自动向您发送一则 AWS Health Dashboard 通知,告知您 AWS 为缓解问题将要采取的措施。Internet Monitor 将向 CloudWatch 指标和 CloudWatch Logs 提供测量结果,以轻松支持集成特定于您的应用程序的地理位置和网络的运行状况信息。Internet Monitor 还会将运行状况事件发送到 Amazon EventBridge,因此您可以设置通知。Internet Monitor 通过 Amazon Virtual Private Clouds (VPC)、Amazon CloudFront 分配和 Amazon WorkSpaces 目录监控您的应用程序。

Lambda Insights 在 CloudWatch 控制台中提供自动控制面板。这些控制面板的作用是汇总计算性能和错误。每个控制面板包括所选时间段的指标列表,并允许您(基于时间段和所选函数)按照上下文深入了解应用程序日志、AWS X-Ray 轨迹和性能事件。

Amazon CloudWatch 异常检测应用机器学习 (ML) 算法来连续分析指标数据并识别异常行为。它使您可以创建基于自然指标模式(例如一天中的时间、星期几、季节性或变化的趋势)自动调整阈值的告警。您还可以在控制面板上使用异常检测范围将指标可视化。这使您可以监视、隔离度量指标中的意外变化并进行故障排除。

您可以使用 Amazon CloudWatch ServiceLens 在一个地方直观呈现和分析应用程序的运行状况、性能和可用性。CloudWatch ServiceLens 将 CloudWatch 指标和日志以及来自 AWS X-Ray 的轨迹结合在一起,为您提供应用程序及其依赖关系的完整视图。这能让您快速查明性能瓶颈、找出应用程序问题的根本原因和确定受影响的用户。利用 CloudWatch ServiceLens,您可以从三个主要方面了解应用程序:基础设施监控(使用指标和日志了解支持应用程序的资源)、事务监控(使用轨迹了解资源之间的依赖关系)及终端用户监控(使用 Canary 监控您的端点并在您的终端用户体验降低时通知您)。CloudWatch ServiceLens 提供服务地图(直观呈现所有资源的上下文联系)和直观的界面,让您能深入研究相关的监控数据。

借助 Amazon CloudWatch Synthetics,您可以更加轻松地监控应用程序端点。它全天候对端点运行测试,并在端点运行不正常时发出提示。可以自定义这些测试,以在应用程序中检查可用性、延迟、事务、坏链接或死链接、按步骤完成任务情况、页面加载错误、UI 资产加载延迟、复杂的向导流或检出流。您还可以使用 CloudWatch Synthetics 隔离告警应用程序端点,并将它们映射回底层基础设施问题,以缩短解决问题的平均时间 (MTTR)。有了这项新功能,CloudWatch 现在可以收集 Canary 流量,即使应用程序上没有任何客户体验,它也可以不间断地验证客户体验,让您能够比客户更早地发现问题。CloudWatch Synthetics 支持对 REST API、URL 和网站内容进行监控,并检查网络钓鱼、代码注入和跨站脚本攻击未经授权的更改。

Amazon CloudWatch RUM 使您了解应用程序的客户端性能并缩短解决问题的平均时间 (MTTR)。它使您能够近乎实时地收集关于 Web 应用程序性能的客户端数据,以识别和调试问题。CloudWatch RUM 对 CloudWatch Synthetics 数据进行补充,使您更加了解终端用户体验。您可以将性能异常可视化,并使用相关调试数据(如错误信息、堆栈轨迹和用户会话)来修复性能问题(如 JavaScript 错误、崩溃和延迟)。您还可以了解终端用户影响的范围,包括用户数量、地理位置或浏览器。 CloudWatch RUM 聚合应用程序中关于用户旅程的所有数据,从而帮助您确定要启动哪些功能和优先修复哪些错误。

操作

Auto Scaling 可帮助您自动规划容量和资源。您可以设置阈值,以发出针对关键指标的警报并触发自动的 Auto Scaling 操作。例如,您可以设置 Auto Scaling 工作流,以根据 CPU 利用率指标添加或删除 EC2 实例,并优化资源成本。

CloudWatch Events 提供近乎实时的系统事件流,这些事件描述了 AWS 资源的更改。它让您能够快速响应操作更改并采取纠正措施。您只需编写规则以指明哪些事件与您的应用程序有关,以及当规则与事件匹配时要执行哪些自动化操作。例如,您可以设置一条规则来调用 AWS Lambda 函数或发布一条 Amazon Simple Notification Service (Amazon SNS) 主题通知。

对于 Amazon EKS 和 k8s 集群,Container Insights 允许您发出计算指标告警,以触发 Amazon EC2 Auto Scaling 组上的自动扩缩策略,并为您提供停止、终止、重启和恢复任何 Amazon EC2 实例的功能。对于 Amazon ECS 集群,可以将任务和服务中的计算指标用于服务自动扩缩。 

 

分析

借助 Amazon CloudWatch,您可以使用 15 个月的指标数据(存储和保留)监控趋势和季节性。您可以利用这些数据执行历史分析以优化资源利用率。使用 CloudWatch,您还可以收集频率高达 1 秒的运行状况指标,包括自定义指标(例如来自本地部署应用程序的指标)。精细的实时数据让您能够实现更好的可视化,并发现和监控趋势,从而优化应用程序性能和运行状况。

通过 Amazon CloudWatch 指标数学,您可以跨多个指标执行计算以进行实时分析,以便您可以轻松地从现有 CloudWatch 指标中获取见解,并更好地了解基础设施的运行状况和性能。您可以在 AWS 管理控制台中可视化这些计算指标,将它们添加到 CloudWatch 控制面板,或使用 GetMetricData API 操作检索它们。指标数学支持算术运算(例如 +、-、/、*)和数学函数(例如总和、平均值、最小值、最大值和标准偏差)。

通过 Amazon CloudWatch Logs Insights,您可从日志促进可行的智能以解决操作问题,而无需预配置服务器或管理软件。您可以立即开始使用聚合、筛选器和正则表达式编写查询。此外,您还可以可视化时间序列数据,深入查看各个日志事件以及将查询结果导出到 CloudWatch 控制面板。这将为您带来完整的的运营可见性。只需在 AWS 管理控制台中单击几下,您即可开始使用 Logs Insights 查询发送到 CloudWatch 的日志。您只需为实际运行的查询付费。

借助 Amazon CloudWatch Logs Live Tail,客户可以对他们收集到的日志进行交互式深入挖掘,从而快速开始其在 Amazon CloudWatch Logs 中的数据探索和分析。Live Tail 允许客户从中央控制台或集成到他们每天用于部署、操作或安全调查的工具中查看所有流式日志数据。借助 Live Tail,客户可以在上下文中启动深入查询,这使他们可以从使用 Live Tail 视图检测问题轻松过渡到使用 CloudWatch Logs Insights 查询体验进行深入探究并解决事件。Live Tail 补充了现有的 CloudWatch 分析功能,可帮助客户缩短检测和解决事件的时间。它消除了对多种适用于专业日志记录应用场景的自定义和第三方解决方案的依赖。

Container Insights 通过使用 CloudWatch Logs Insights 的高级查询语言简化从自动控制面板到精细性能事件、应用程序日志(stdout/stderr)、自定义日志、预定义 Amazon EC2 实例日志、Amazon EKS/k8s 数据面板日志和 Amazon EKS 控制面板日志的深层链接,进而简化了对指标、日志和轨迹的可观察数据的分析。

Lambda Insights 通过使用 CloudWatch Logs Insights 的高级查询语言简化从自动控制面板到精细性能事件、应用程序日志和自定义日志的深层链接,进而简化了对指标、日志和轨迹的可观察数据的分析。

Amazon CloudWatch 现已包含 Contributor Insights,它可以分析时间序列数据,帮助您了解影响系统性能的几大因素。安装完成后,Contributor Insights 将持续运行,用户无需干预。这有助于开发人员和运营商在事件运营期间更快地隔离、诊断和补救问题。Contributor Insights 可帮助您了解是谁或什么影响了您的系统和应用程序性能,如特定资源、客户账户或 API 调用。这使您能够找出异常值,找到最繁忙的流量模式,并对最常利用的系统进程进行排序。您可以创建 Contributor Insights 规则来评估发送到 CloudWatch Logs 的结构化日志事件中的模式,包括来自 AWS CloudTrail、Amazon Virtual Private Cloud(Amazon VPC)、Amazon API Gateway 等 AWS 服务的日志,以及服务或本地部署服务器发送的任何自定义日志,例如 Apache 访问日志,以及其他云发送的日志。Contributor Insights 近乎实时地评估这些日志事件并显示报告。报告会列出数据集中的重要贡献者并列出独特贡献者的数量。贡献者是一个聚合指标,它基于 CloudWatch Logs 中包含的日志字段(例如 VPC 流日志中的 account-id 或 interface-id)的维度,或者基于任何其他自定义的维度集。您可以根据自己的自定义指标对贡献者数据进行排序和过滤。Contributor Insights 报告数据可以在 CloudWatch 控制面板上显示,可以与 CloudWatch 指标一起用来绘制图表,还可以将其添加到 CloudWatch 告警中。

Amazon CloudWatch Metrics Insights 是一个快速、灵活并基于 SQL 的查询引擎,使您能够近乎实时地在数百万计运营指标内确定趋势和模式。利用 Metrics Insights,您可以通过灵活查询和即时指标聚合,获得基础设施和大规模应用程序性能的更好可见性。Metrics Insights 查询可用于创建强大可视化,帮助您主动监控和快速查明问题,并缩短解决问题的平均时间 (MTTR)。 

借助 Amazon CloudWatch Evidently,应用程序开发人员可以在推出新功能供普遍使用之前进行实验,以提前发现意外后果,从而减少与推出新功能有关的风险。 Evidently 能够使您在发布新功能之前在整个应用程序堆栈中验证这些功能,确保所发布的功能更加安全。启动新功能时,您可以向小用户群公开这些功能,监控关键指标(例如页面加载时间或转换),然后调高流量。Evidently 还允许您试用不同的设计方案,收集用户数据,并在生产中发布最有效的设计。 

 

合规性与安全性

Amazon CloudWatch 与 AWS Identity and Access Management(IAM)集成,因此您可以控制哪些用户和资源有权访问您的数据及其访问方式。

Amazon CloudWatch Logs 也符合 PCI 和 FedRamp 标准。对数据进行静态和动态加密。您还可以使用 AWS Key Management Service (AWS KMS) 加密功能来加密日志组,以提高合规性和安全性。

Amazon CloudWatch Logs 数据保护可帮助您定义数据保护策略,以发现和保护系统和应用程序记录的敏感数据。此功能根据您定义的策略,使用 ML 和模式匹配自动识别和屏蔽日志中的敏感信息。数据保护可以通过从应用程序中卸载数据保护逻辑来帮助您简化架构,同时帮助支持您的合规性目标。您可以定义数据保护策略以在日志被摄取时对其进行扫描,从而确定它们包含多少敏感数据并屏蔽检测到的敏感数据。安全工程师也可以通过 IAM 的提升权限来揭示被屏蔽的数据以供验证。