跳至主要内容

Amazon CloudWatch 文档

Amazon CloudWatch 是一种监控和管理服务,旨在提供有关 AWS、混合及本地应用程序和基础设施资源的数据和可行洞察。借助 CloudWatch,您可以从一个平台收集和访问以日志和指标形式提供的所有性能和运行数据。这有助于您解决监控孤立环境(服务器、网络和数据库等)中的单个系统和应用程序面临的挑战。CloudWatch 有助于您监控堆栈(应用程序、基础设施和服务),并利用警报、日志和事件数据来执行操作并缩短解决问题的平均时间(MTTR)。这释放了重要资源,让您可以专注于构建应用程序和创造业务价值。CloudWatch 旨在为您提供可行洞察,有助于您优化应用程序性能,管理资源利用率并了解整个系统的运营状况。CloudWatch 提供指标和日志数据可见性,可保留数据(指标)并针对指标执行计算。这让您可以执行历史分析以便优化成本,并获得实时洞察以优化应用程序和基础设施资源。您可以使用 CloudWatch Container Insights 监控、排查容器化应用程序和微服务并发出相关警报。您可以收集、汇总和总结计算利用率信息(如 CPU、内存、磁盘和网络数据)以及诊断信息(如容器重启故障),以帮助 DevOps 工程师隔离问题并解决问题。Container Insights 为您提供来自 Amazon ECS for Kubernetes(Amazon EKS)、Amazon Elastic Container Service(Amazon ECS)、AWS Fargate 和独立 Kubernetes(k8s)等容器管理服务的洞察。

收集

CloudWatch 日志类 – 有两个日志类:
1.Amazon CloudWatch Logs 不频繁访问类日志(IA 类日志)。
2.Amazon CloudWatch Logs 标准类日志。

收集和存储日志:Amazon CloudWatch Logs 服务有助于您收集和存储来自资源、应用程序和服务的日志。日志分为三个主要类别:1) 公开日志。这些是由 AWS 服务代表客户在本地发布的日志。2) 由 AWS 服务发布的日志。目前有超过 30 种 AWS 服务会向 CloudWatch 发布日志。3) 自定义日志。这些是来自您自己的应用程序和本地资源的日志。

内置指标:从分布式应用程序(例如使用微服务架构构建的应用程序)收集指标非常耗时。借助 Amazon CloudWatch,您无需执行任何操作即可从超过 70 种 AWS 服务(例如 Amazon EC2、Amazon DynamoDB、Amazon S3、Amazon ECS、AWS Lambda 和 Amazon API Gateway)收集默认指标。

自定义指标:Amazon CloudWatch 有助于您从自己的应用程序收集自定义指标,以监控运行性能,排查问题和发现趋势。用户活动是您可以在一段时间内收集和监控的自定义指标的示例。您可以使用 CloudWatch 代理或 PutMetricData API 操作,将这些指标发布到 CloudWatch。

收集和聚合容器指标与日志:Container Insights 旨在简化精选指标和容器生态系统日志的收集和聚合。借助该功能,您可以从每个容器收集计算性能指标(如 CPU、内存、网络和磁盘信息)作为性能事件,并生成用于监控和发出警报的自定义指标。性能事件摄取为 CloudWatch 日志,包含有关运行环境的元数据,例如 Amazon EC2 实例 ID、服务、Amazon EBS 卷挂载和 ID 等,以协助监控和排查问题。CloudWatch 自定义指标可以从这些摄取的日志提取,并可使用 CloudWatch Logs Insights 的高级查询语言对这些指标做进一步分析。Container Insights 还提供了收集应用程序日志(stdout/stderr)、自定义日志、预定义 Amazon EC2 实例日志、Amazon EKS/k8s 数据面板日志和 Amazon EKS 控制面板日志的选项。

收集和聚合 Lambda 指标和日志:CloudWatch Lambda Insights 可帮助从 AWS Lambda 函数收集和聚合精选指标与日志。您可以从每个 Lambda 函数收集 CPU、内存和网络等计算性能指标作为性能事件,同时生成用于监控和发出警报的自定义指标。性能事件作为 CloudWatch 日志摄取,以简化监控和问题排查。CloudWatch 自定义指标可从这些摄取的日志提取,并可使用 CloudWatch Logs Insights 的高级查询语言对这些指标做进一步分析。

流式传输指标:Amazon CloudWatch Metric Streams 有助于您创建连续的指标流,并将其发送到您选择的目的地。Metrics Streams 简化了使用 Amazon Kinesis Data Firehose HTTP 端点向常用的第三方服务提供商发送 CloudWatch 指标的流程。您还可以将指标传输到 AWS 上的数据湖。

 

监控

跨多个 AWS 账户的跨账户可观测性:借助 CloudWatch 中的跨账户可观测性,您可以监控跨越一个区域内多个账户的应用程序并对其进行问题排查。您可以从中央视图搜索跨多个账户存储的日志组,运行跨账户 Logs Insights 查询,并跨账户创建 Contributor Insights 规则以识别生成日志条目的前 N 个贡献者。此外,您还可以在整合的视图中直观地查看来自多个账户的指标,并创建警报来评估来自其他账户的指标,以便收到异常和趋势问题的通知。CloudWatch 中的跨账户可观测性旨在提供使用 ServiceLens 查看跨账户应用程序的交互式地图,并一步深入到相关指标、日志和跟踪。CloudWatch 中的跨账户可观测性无需额外的数据管道即可提供操作视图。

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

监控 AWS、本地和其他云上的指标:Amazon CloudWatch 支持从多个数据来源进行查询,包括您的自定义数据来源。  Amazon CloudWatch 多数据来源查询允许您使用 AWS Lambda 函数设置您的数据来源。

复合警报:Amazon CloudWatch 复合警报让您可以组合多个警报并减少警报噪音。如果应用程序问题影响应用程序中的多个资源,您可以设置接收一个针对整个应用程序的警报通知,而不是针对每个受影响的服务组件或资源分别接收一个通知。这有助于您专注于查找潜在运行问题的根本原因,减少应用程序的停机时间。您还可以为应用程序、AWS 区域或可用区等资源分组提供一个整体状态。

高分辨率警报:Amazon CloudWatch 警报有助于您设置指标阈值并触发操作。您可以创建高分辨率警报,将百分位数设置为统计数据,并在认为合适的情况下选择指定或忽略操作。

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

Application Insights:Amazon CloudWatch Application Insights 为企业应用程序提供可观测性设置,以便您直观了解此类应用程序的运行状况。该功能可帮助跨应用程序资源和技术堆栈 [即数据库、Web(IIS)和应用程序服务器、操作系统、负载均衡器、队列等] 识别和设置关键指标和日志。您可以持续监控这些遥测数据,检测和关联异常和错误,并向您通知应用程序中的任何问题。Application Insights 旨在帮助排查问题,可创建控制面板来呈现检测到的问题,包括相关的指标异常和日志错误,以及可帮助您确定潜在根本原因的其他洞察。这有助于您快速采取补救措施来管理应用程序的运行状况并评测对最终用户的影响。

容器监控洞察:Container Insights 在 CloudWatch 控制台中提供多个控制面板。这些控制面板按集群、容器组(pod)/任务和服务总结计算性能、错误和警报。每个控制面板按所选时间段的 CPU 和内存总结运行容器组(pod)/任务或容器的列表,并允许您基于时间段和所选容器组(pod)/任务或容器按照上下文深入了解应用程序日志、AWS X-Ray 跟踪和性能事件。

网络监测仪:网络监测仪旨在帮助您了解网络问题如何影响托管在 AWS 上的应用程序与最终用户之间的性能和可用性。网络监测仪可帮助您探索不同时间段和不同地理粒度的测量结果,并可视化问题的影响。如果此问题由 AWS 网络所致,网络监测仪会自动向您发送一则 AWS Health Dashboard 通知,告知您 AWS 为缓解问题将要采取的措施。网络监测仪旨在向 CloudWatch 指标和 CloudWatch Logs 提供测量结果,以支持集成特定于您应用程序的地理位置和网络的运行状况信息。网络监测仪还会旨在将运行状况事件发送到 Amazon EventBridge,因此您可以设置通知。网络监测仪旨在通过 Amazon Virtual Private Clouds(VPC)、Amazon CloudFront 分配和 Amazon WorkSpaces 目录监控您的应用程序。

Lambda 监控洞察:Lambda Insights 在 CloudWatch 控制台中提供多个控制面板。这些控制面板可总结计算性能和错误。每个控制面板包括所选时间段的指标列表,并根据时间段和所选函数允许您按照上下文深入了解应用程序日志、AWS X-Ray 跟踪和性能事件。

异常检测:Amazon CloudWatch 异常检测应用机器学习算法来帮助您连续分析指标数据并识别异常行为。您可以创建警报,根据自然指标模式自动调整阈值。您还可以在控制面板上使用异常检测范围将指标可视化。这有助于您监控、隔离度量指标中的意外变化并进行问题排查。

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

Synthetics:Amazon CloudWatch Synthetics 有助于您监控应用程序端点。您可以在端点上运行测试,如果应用程序端点的行为不符合预期,您会收到提醒。可以自定义测试,在应用程序中检查可用性、延迟、交易、坏链接或死链接、分步任务的完成情况、页面加载错误、UI 资产加载延迟、复杂的向导流或检出流。您还可以使用 CloudWatch Synthetics 隔离警报应用程序端点,并将它们映射回底层基础设施问题,缩短解决问题的平均时间。借助这项新功能,CloudWatch 现在可以收集金丝雀流量,这可以帮助您验证客户体验,从而发现问题。CloudWatch Synthetics 支持对 REST API、URL 和网站内容进行监控,并检查网络钓鱼、代码注入和跨站点脚本未经授权的更改。

RUM

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

操作

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

使用 CloudWatch Events 响应操作更改:CloudWatch Events 旨在提供近乎实时的系统事件流,描述 AWS 资源的更改。它可帮助您快速响应操作更改并采取纠正措施。您可以编写规则以指明哪些事件与您的应用程序有关,以及当规则与事件匹配时要执行哪些操作。

在 EKS、ECS 和 k8s 集群上发出警报和执行操作:对于 Amazon EKS 和 k8s 集群,CloudWatch Container Insights 有助于您发出计算指标警报,以触发 Amazon EC2 Auto Scaling 组上的自动扩缩策略,并为您提供停止、终止、重启和恢复任何 Amazon EC2 实例的功能。

分析

分析日志:Amazon CloudWatch Logs Insights 让您能够在 AWS 管理控制台中查询发送到 CloudWatch 的日志,或使用聚合、筛选条件和正则表达式编写查询。此外,您还可以可视化时间序列数据,深入查看各个日志事件以及将查询结果导出到 CloudWatch 控制面板。

CloudWatch Logs 异常检测使用机器学习算法,而这些算法已从 Amazon.com 和 AWS 运行数据中学习。借助此功能,CloudWatch 可以识别日志记录之间的共享结构,提取主要内容和趋势,并发现异常。

使用 CloudWatch Logs Live Tail,您可以从中央视图分析流式传输日志数据。您可以启动上下文查询,从日志监控过渡到更深入的日志分析以及事件调查和解决。

分析指标:Amazon CloudWatch Metrics Insights 是一个基于 SQL 的查询引擎,让您能够通过灵活的查询和指标聚合,在数百万运营指标内确定趋势和模式。

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

对指标进行自定义操作:Amazon CloudWatch Metric Math 可帮助您对多个指标执行计算以进行实时分析,这样您就可以从现有的 CloudWatch 指标中获得洞察。您可以在 AWS 管理控制台中可视化这些计算指标,将它们添加到 CloudWatch 控制面板,或使用 GetMetricData API 操作检索它们。Metric Math 支持算术运算(例如 +、-、/、*)和数学函数(例如总和、平均值、最小值、最大值和标准偏差)。

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

分析容器和 Lambda 遥测:CloudWatch Container Insights 和 Lambda Insights 使用 CloudWatch Logs Insights 高级查询语言,简化从自动控制面板到精细性能事件、应用程序日志(stdout/stderr)和自定义日志的深度链接,进而帮助您简化对指标、日志和跟踪的可观测数据的分析。Container Insights 还考虑了预定义的 Amazon EC2 实例日志、Amazon EKS/k8s 数据面板日志和 Amazon EKS 控制面板日志

分析时间序列数据:Amazon CloudWatch 现已包含 Contributor Insights,让您能够分析时间序列数据,了解影响系统性能的几大因素。Contributor Insights 可帮助您了解是谁或什么影响了您的系统和应用程序性能,如特定资源、客户账户或 API 调用。这让您能够找出异常值,找到最繁忙的流量模式,并对最常用的系统进程进行排序。您可以创建 Contributor Insights 规则,评估发送到 CloudWatch Logs 的结构化日志事件中的模式,包括 AWS 服务的日志、您的服务或本地服务器以及其他云端发送的自定义日志。Contributor Insights 旨在评估这些日志事件并显示报告。报告会列出数据集中的重要贡献者,以及唯一贡献者的数量。贡献者是一个聚合指标,它基于 CloudWatch Logs 中包含的日志字段(例如 VPC 流日志中的 account-id 或 interface-id)的维度,或者基于任何其他自定义的维度集。您可以根据自己的自定义指标对贡献者数据进行排序和过滤。Contributor Insights 报告数据可以在 CloudWatch 控制面板上显示,可以与 CloudWatch 指标一起用来绘制图表,还可以将其添加到 CloudWatch 警报中。

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

合规性与安全性

Amazon CloudWatch 与 AWS Identity and Access Management(IAM)集成,旨在帮助您配置哪些用户和资源有权访问您的数据及其访问方式。

系统会对数据进行静态和动态加密。您还可以使用 AWS KMS 加密功能来加密日志组,以提高合规性与安全性。

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

其他信息

有关服务控制、安全特征和功能的更多信息,包括有关存储、检索、修改、限制和删除数据的信息(如适用),请参阅 https://docs.aws.amazon.com/index.html。对于 http://aws.amazon.com/agreement 上的《AWS 客户协议》或者您与 AWS 之间签订的用于管理您使用 AWS 服务的其他协议而言,这些其他信息并不构成此文档的一部分。