REL 6: 如何监控工作负载资源?
日志和指标是用于了解工作负载运行状况的强大工具。您可以配置工作负载以监控日志和指标,并在超出阈值或发生重大事件时发送通知。监控让您的工作负载可以发现超出低性能阈值和发生故障的情形,从而在响应中自动恢复。
资源
Using Amazon CloudWatch Metrics
Publishing Custom Metrics
Using Amazon CloudWatch Dashboards
Using Canaries (Amazon CloudWatch Synthetics)
Amazon CloudWatch Logs Insights Sample Queries
AWS Systems Manager Automation
What is AWS X-Ray?
Debugging with Amazon CloudWatch Synthetics and AWS X-Ray
The Amazon Builders' Library: Instrumenting distributed systems for operational visibility
最佳实践:
-
为工作负载监控全部组件(生成): 使用 Amazon CloudWatch 或第三方工具监控工作负载组件。使用 Personal Health Dashboard 监控 AWS 服务
-
定义与计算指标(聚合): 存储日志数据并在必要时应用筛选条件以计算指标,例如,特定日志事件的数量,或从日志事件时间戳计算得到的延迟
-
发送通知(实时处理和警报): 发生重大事件时,需要知晓的组织会收到通知
-
自动响应(实时处理和警报): 检测到事件后,利用自动化功能执行操作;例如,更换故障组件
-
存储与分析: 收集日志文件和指标历史,并对其进行分析以获得更广泛的趋势和工作负载见解
-
定期进行审核: 经常审核工作负载监控的实施情况,并根据重大事件和变更加以更新
-
对通过系统的请求的端到端跟踪进行监控: 利用 AWS X-Ray 或第三方工具,使开发人员可以更轻松地分析与调试分布式系统,理解他们的应用程序及其底层服务的表现
改进计划
为工作负载监控全部组件(生成)
- 明确您正在使用的所有 AWS 服务
- 针对所有服务启用日志记录功能: AWS 的许多服务都具有日志记录功能。如果服务无法提供符合您期望的日志记录,您可以从工作负载添加日志记录
- 启用 Amazon S3 的日志记录功能
Amazon S3 Server Access Logging - 启用 Elastic Load Balancing 的日志记录功能
Access logs for your application load balancer
Access Logs for Your Network Load Balancer
Enable Access Logs for Your Classic Load Balancer - 启用 VPC 流日志
VPC Flow Logs - 启用 CloudTrail 日志
Creating a trail - 使用 Amazon CloudWatch 代理将日志数据从实例流式传输到 CloudWatch Logs
Install the CloudWatch agent on an Amazon EC2 instance - 使用 awslogs Log Drive 和 Amazon ECS 将日志数据流式传输到 CloudWatch Logs
Using CloudWatch Logs with container instances - AWS Lambda 自动将日志数据流式传输到 CloudWatch Logs
Accessing Amazon CloudWatch Logs for AWS Lambda
- 启用 Amazon S3 的日志记录功能
AWS Services That Publish CloudWatch Metrics
- 可以评估单个指标,也可以多个指标一起评估
- 转到 CloudWatch 控制台查看收集到的指标
- 请参阅相关文档查看收集到的指标和维度
Amazon CloudWatch Logs Insights Sample Queries
Publish custom metrics
- 如果您需要了解内存使用量或磁盘使用情况,可以使用 CloudWatch 代理或 PutMetricData API
Monitoring memory and disk metrics for Amazon EC2 linux instances
- 将 CloudWatch Logs 用于常见日志文件
- 您可以将 CloudWatch Logs 用于最常见的日志聚合使用案例
What are Amazon CloudWatch Logs?
- 您可以将 CloudWatch Logs 用于最常见的日志聚合使用案例
- 将所有日志存储在 Amazon S3 或 Amazon S3 Glacier 中,以便长期保存
- 您可以将 CloudWatch Logs 的数据导出到 Amazon S3。系统会将 CloudTrail 和 Elastic Load Balancing 日志发送到
Amazon S3
Exporting log data to Amazon S3
- 您可以将 CloudWatch Logs 的数据导出到 Amazon S3。系统会将 CloudTrail 和 Elastic Load Balancing 日志发送到
Amazon S3
定义与计算指标(聚合)
- 指标筛选条件可定义在将日志数据发送到 CloudWatch Logs 时在其中查找的术语和模式。CloudWatch Logs 使用指标筛选条件将日志数据转变为 CloudWatch
数字指标,您可以对该指标绘制图形或设置警报
Searching and Filtering Log Data - 使用受信任第三方来聚合日志
- 遵循第三方的说明。大多数第三方产品可以与 CloudWatch 和 Amazon S3 集成
- 某些 AWS 服务可以直接向 Amazon S3 发布日志。这样,如果您对日志的主要需求是 Amazon S3 中的存储,则可以将生成日志的服务轻松发送至 Amazon
S3,无需安装额外的基础设施
Sending Logs Directly to Amazon S3
发送通知(实时处理和警报)
- Amazon CloudWatch 控制面板是 CloudWatch 控制台中的可自定义主页,方便您通过单一视图监控您的资源,即使是分布在不同区域的资源也同样如此
Using Amazon CloudWatch Dashboards - 创建指标超过限制时发出的警报
Using Amazon CloudWatch Alarms
自动响应(实时处理和警报)
AWS Systems Manager Automation
- 创建和使用 Systems Manager Automation 文档。它们可定义当运行自动化执行时,Systems Manager 对托管实例和其他 AWS 资源执行的操作
Working with Automation Documents (Playbooks)
Creating an EventBridge Rule That Triggers on an Event from an AWS Resource
- 盘点所有警报响应程序: 您必须在对任务排名之前制定警报响应计划
- 盘点所有必须执行特定操作的任务: 大多数操作均已记录在运行手册中。您还必须具有意外事件的警报行动手册
- 检查所有可自动化操作的运行手册和行动手册: 一般而言,可定义的操作很可能实现自动化
- 将容易出错或耗时的活动排在前列: 删除错误源并减少解决问题的时间最有利
- 制定计划,完成自动化: 维护有效计划,以自动执行并更新自动化
- 检查手动要求,寻找自动化机会: 挑战手动流程,发现自动化机会
存储与分析
Analyzing Log Data with CloudWatch Logs Insights
Amazon CloudWatch Logs Insights Sample Queries
How do I analyze my Amazon S3 server access logs using Athena?
- 为服务器访问日志存储桶创建 S3 生命周期策略。配置生命周期策略以定期删除日志文件。这样做可以减少 Athena 针对每次查询分析的数据量
How Do I Create a Lifecycle Policy for an S3 Bucket?
定期进行审核
Using Amazon CloudWatch Dashboards
- 检查指标中的趋势: 对比指标值与历史值,了解是否有趋势表明需要调查某些情况。这种情况的示例包括:增加延迟、减少主要业务功能并增加故障响应
- 检查指标中的离群值/异常值: 平均值或中值可以隐藏异常值。查看时间范围内的最高值和最低值,调查出现这些极值的原因。当你继续消除这些原因时,降低对极值的定义可以使您继续提高工作负载性能的一致性
- 查找清晰的行为变化: 指标数量或方向的立即更改可能表示应用程序出现更改,或者您需要添加额外指标进行跟踪
对通过系统的请求的端到端跟踪进行监控
What is AWS X-Ray?
Debugging with Amazon CloudWatch Synthetics and AWS X-Ray