AWS CloudWatch 是亚马逊云生态系统中的一项核心服务,主要用于记录和监控亚马逊云中的各项服务。它能汇集并追踪各种指标数据和日志文件,并针对从中提取的活动设定预警。
通过它,您可以全面掌握应用程序的性能、资源的使用情况以及服务的健康状态。 此外,AWS CloudWatch 还能助您检测环境中不寻常的行为,执行自动化操作,解决存在的问题,并从日志中挖掘出有价值的见解,从而促进您对系统或运营进行优化改进。
监控日志对于发现安全威胁和识别潜在漏洞至关重要。 通过监测可疑活动和异常行为,您可以及时响应可疑事件,并采取措施预防未来的攻击。
此外,出于合规性的考虑,维护日志和监控系统通常是必须执行的活动。 AWS CloudWatch 可以帮助您满足这些要求。
以上是使用 AWS CloudWatch 所能直接带来的益处。接下来,我们来了解一下如何开始使用它。
为您的服务配置 AWS CloudWatch
来源:aws.amazon.com
配置过程既可以简单快捷,也可以花费数周时间来微调日志记录和监控系统的各个方面,但仍然无法完全完成(这可以看作是一个持续改进的过程)。
简而言之,您可以按如下步骤开始:
- 假设您已拥有 AWS 账户,请进入 CloudWatch 控制台,并点击“开始”按钮启用 CloudWatch。
- 创建日志组以收集您服务的日志。 日志组是一系列日志流的集合,它们共享相同的保留、监控和访问控制设置。 您可以通过点击 CloudWatch 控制台中的“创建日志组”按钮来完成此操作。
- 创建日志流,将来自同一来源(服务)的日志事件归纳到一起。您可以在 CloudWatch 控制台中通过点击“创建日志流”按钮来创建日志流。
- 如果您计划从 EC2 实例收集日志,则需要安装 CloudWatch 代理。该代理是在您的实例上运行的软件,负责将日志数据发送到 CloudWatch。您可以选择使用 AWS Systems Manager 或在实例上运行脚本来安装此代理。
- 创建指标过滤器,根据定义的匹配模式从日志中提取指标。 您可以通过点击 CloudWatch 控制台中的“创建指标过滤器”按钮来创建指标过滤器。
- 最后,将所有提取的数据汇总并以可视化形式展示——创建一个仪表板。 仪表板是各种小部件的集合,用于显示您放置其中的指标和其他数据。 您可以通过点击 CloudWatch 控制台中的“创建仪表板”按钮来创建仪表板。
利用 AWS CloudWatch 进行监控
正如前面提到的,您可以使用 AWS CloudWatch 监控亚马逊云中的任何服务。为了更详细地了解此类监控的具体实施,以下将介绍如何针对系统中最常用的 AWS 服务进行监控。
来源:docs.aws.amazon.com
EC2 实例
您可以通过收集 CPU 利用率、网络流量、磁盘使用率和内存使用率等指标来监控 EC2 实例。此外,您还可以监控 EC2 实例的状态,并在实例停止或终止时收到通知。
要监控 EC2 实例,请在实例上安装 CloudWatch 代理并将其配置为将指标发送到 CloudWatch。接下来,您可以创建警报,以便在指标超过特定阈值时收到警报。
RDS 数据库
您可以通过收集数据库的 CPU 利用率、内存使用率或磁盘使用率等指标来监控 Amazon RDS 数据库。同时,您可以监控数据库的状态,并在数据库停止、暂停或终止时收到通知。
要监控 RDS 数据库,请启用增强监控并将其配置为将指标发送到 CloudWatch。同样,您也可以创建警报,以便在指标超出阈值时收到提醒。
Lambda 函数
您可以通过收集 Lambda 调用计数、持续时间和错误率等指标来监控 AWS Lambda 函数。 您还可以监视函数的状态,并在函数失败时接收通知。
要监控 Lambda 函数,您需要启用 CloudWatch Logs,并配置您的函数将日志发送到 CloudWatch。然后,您可以创建指标过滤器,从日志中提取指标,并根据提取的信息采取相应的操作。
弹性负载均衡器
对弹性负载均衡器的监控通过收集请求计数、延迟和 HTTP 响应代码等指标来实现。您还可以监视负载均衡器的状态,并在负载均衡器出现故障时收到通知。
要监控负载均衡器,您需要启用访问日志,并配置负载均衡器将日志发送到 CloudWatch。然后,您可以创建指标过滤器,从日志中提取指标,并在指标偏离您定义的健康状态时创建警报。
自动伸缩组
通过收集组大小、CPU 利用率和网络流量,您可以监控自动伸缩组。 您还可以监控组的状态,并在组扩大或缩小时接收通知。
要监控自动伸缩组,您需要启用详细监控并将其配置为将指标发送到 CloudWatch。 接下来,您可以创建警报,以便在指标超过特定阈值时收到提醒。
弹性 Beanstalk 应用程序
您可以通过收集 CPU 利用率和请求计数等指标来监控 AWS Elastic Beanstalk 应用程序。 您还可以监控应用程序的状态,并在应用程序失败时接收通知。
要监控 Elastic Beanstalk 应用程序,您需要启用增强的运行状况报告并将其配置为将指标发送到 CloudWatch。然后,您可以创建警报,以便在指标超出预定义阈值时收到警报。
管理 CloudWatch 警报
针对关键指标和每项服务,都有可用的 CloudWatch 警报。这些警报可以按照最佳实践进行预配置,在出现问题时帮助您及时解决问题。
通过有效管理警报,您可以在关键问题发生时收到提醒,并采取适当的措施维护 AWS 资源和应用程序的运行状况和性能。
来源:aws.amazon.com
#1. 为指标设置警报
要设置警报,首先选择您要监控的指标。然后,通过指定阈值和比较运算符,基于该指标创建警报。
例如,您可以创建一个警报,当 CPU 利用率超过 80% 持续 5 分钟时触发。 创建警报后,配置触发警报时要执行的操作。例如,向特定的收件人列表发送电子邮件、发送短信通知,甚至扩展系统资源。
#2. 配置警报操作
配置警报操作时,您可以从多种选项中选择,包括向 SNS 主题发送通知、触发 AWS Lambda 函数(反过来,该函数可以在 Python 脚本中执行您希望执行的任何操作)、停止或终止 EC2 实例。
您还可以为每个警报配置多个操作,并根据警报的严重程度采取不同的操作。例如,对于轻微的警报发送电子邮件通知,但对于严重的警报则终止实例。
#3. 警报最佳实践
遵循最佳实践以确保警报有效且可靠至关重要。 一些最佳实践包括:
- 根据历史数据设置适当的阈值,
- 并行使用多个指标来检测问题,
- 定期测试您的警报以确保其正常工作。
避免创建过多警报,这可能会导致警报疲劳,使监控系统变得混乱,并使实际识别真正的关键问题变得困难。
如果您遇到 CloudWatch 警报问题,您可以采取以下故障排除步骤:
- 检查警报历史记录,了解触发警报时是否执行了任何操作。
- 检查指标数据,看看是否存在任何可能触发警报的异常或峰值。
- 如果问题仍然存在,您可以尝试调整警报阈值或向警报添加其他指标以提高其准确性。
使用 CloudWatch 仪表板分析和可视化指标
来源:docs.aws.amazon.com
通过仪表板分析和可视化指标,您可以深入了解 AWS 资源和应用程序的运行状况和性能。 CloudWatch 控制面板提供可自定义的指标视图。
您可以在其中放置各种图表、图形和其他可视化效果,以显示随时间变化的趋势,并突出显示系统中可能存在的问题。最终目标是从日志文件数据中抽象出来,并以更易读和用户友好的格式提供重要信息,供任何需要检查和监控系统状态的人使用。
要创建 CloudWatch 控制面板,您可以使用 CloudWatch 控制台或 CloudWatch API。然后,只需将小部件添加到仪表板,以显示您希望在仪表板上可见的指标。您还可以添加文本和图像,以提供上下文或附加信息。
创建仪表板后,您可以对其进行自定义以满足您的特定需求。您可以调整小部件的大小和重新排列小部件、更改显示数据的时间范围以及添加注释以突出显示重要事件或更改。您还可以与其他用户共享您的仪表板,以便他们能够查看相同的指标和可视化效果。
最后,您可以在各种 AWS 账户和环境中轻松部署相同的仪表板。
收集和分析日志
分析日志通常需要使用 CloudWatch 的 Logs Insights 功能。
在 CloudWatch Logs 中收集日志数据后,您可以使用 Logs Insights。CloudWatch Logs Insights 允许您使用简单而强大的查询语言来查询和可视化日志数据。它与 SQL 选择语言非常相似,但结果非常相似。
您可以使用 Insights 搜索特定的日志事件、根据特定条件过滤日志数据,并创建图表和表格等可视化效果。通过这种方式,您可以深入了解应用程序和基础设施的行为,从而解决问题、优化性能或提高安全性。
另请阅读:如何利用 AWS Logs Insights 从 AWS 服务日志查询仪表板指标
使用 CloudWatch Events 自动执行任务
如果您在 CloudWatch 中拥有足够的日志数据信息,则可以根据 AWS 资源和应用程序中发生的事件来触发操作。CloudWatch Events 提供了一种调度和自动化任务的方法,例如,只要实例的利用率超出正常使用范围(例如在夜间停止实例并在工作日再次启动),就启动或停止 EC2 实例。
要使用 CloudWatch Events 自动执行任务,请创建一个规则以指定要匹配的事件模式以及事件发生时要执行的操作。您可以使用 CloudWatch 控制台或 CloudWatch Events API 来执行此操作。然后为该规则配置一个或多个目标,例如 AWS Lambda 函数、SNS 主题或 EC2 实例。
CloudWatch Events 支持广泛的事件源,例如 AWS 服务、自定义应用程序和第三方服务。因此,每当您需要扩展资源、触发备份或响应安全事件时,都可以使用 CloudWatch Events 来自动执行任务。
通过自动化任务,您可以减少系统中的人工干预,并确保您的 AWS 资源和应用程序始终以最佳水平运行。
高级 CloudWatch 功能
您可以设置各种高级 CloudWatch 功能来更深入地了解 AWS 资源。其中之一就是已经提到的日志见解。 以下是一些关键的高级功能:
- CloudWatch Contributor Insights 可以识别资源利用率的最大贡献者(例如 EC2 实例或 Lambda 函数)。您可以使用 Contributor Insights 来识别资源密集型操作,并据此优化资源。
- CloudWatch 异常检测使用机器学习算法自动检测指标中的异常行为。利用异常检测来识别指标中的异常峰值或下降,并采取措施解决这些问题。
- CloudWatch Synthetics 创建模拟用户行为的金丝雀,可以测试应用程序的可用性和性能。在业务用户之前,使用 Synthetics 主动发现和检测问题。
- CloudWatch Logs Insights 查询加速可以将您的日志查询速度提高高达 10 倍。使用查询加速可以快速高效地分析大量的日志数据。
将 CloudWatch 与 AWS 服务集成
来源:aws.amazon.com
在构建 AWS 系统时,Clodwatch 集成始终是您的首要任务。只有通过这种深度集成,您才能收集和监控所有服务或系统组件的指标和日志。它易于设置和使用,并且集成是大多数 AWS 服务的本机功能。因此,没有理由不利用这种优势来构建您的 AWS 云系统。
您将可以全面了解您的 AWS 资源和应用程序,并能够监控其运行状况、性能和可用性。然后,在收集完所有信息后,只需使用现有数据来设置警报,并根据 AWS 环境中发生的事件自动执行任务。
结语
AWS CloudWatch 是一项全面的云服务,能够满足您的项目在日志记录、监控和系统状态可视化方面的所有需求。
在您的架构中包含这样的组件,正是您主动管理系统并确保其可靠性的方法。我建议您不要将此项工作放在后续阶段进行,而是从 Sprint 1 就开始构建一个强大的监控系统。 稍后您将会感激它的价值。
接下来,您可以了解一下最佳的 AWS 监控工具。