如何监控 Fargate 上的 Amazon ECS 任务的高内存利用率问题?

上次更新时间:2020 年 11 月 12 日

我想监控 AWS Fargate 上运行的 Amazon Elastic Container Service (Amazon ECS) 任务的高内存利用率问题。

解决方法

要监控 Fargate 上的 Amazon ECS 任务的高内存利用率问题,请尝试以下选项:

查看 Amazon CloudWatch 指标

在 Amazon ECS 控制台或 CloudWatch 控制台中查看 Amazon CloudWatch指标。

注意:系统会自动为 Amazon CloudWatch 内存和 CPU 利用率指标启用任何使用 Fargate 启动类型的 Amazon ECS 服务。

为 Fargate 任务启用 CloudWatch 日志

1.启用 awslogs 日志驱动程序。

2.将所需的日志配置参数添加到任务定义中。

3.向您的 Amazon ECS 任务执行 AWS Identity and Access Management (IAM) 角色授予向 Amazon CloudWatch Logs 发送日志的权限。

4.在 CloudWatch 控制台中查看您的日志。

注意:您的任务必须进入 Running(正在运行)状态,然后才能查看日志。

使用 Container Insights 来监控内存利用率

您可以使用 CloudWatch Container Insights 来监控 Fargate 任务中每个容器的内存利用率。

1.打开 CloudWatch 控制台。

2. 在导航窗格的 Container Insights 部分,选择 Resources(资源)。

3. 要获取有关某个资源的更多信息,请选择该资源的名称。

注意:任务按每个集群的任务定义进行分组。

4.选择您要了解更多信息的任务定义的名称。

5.在 Container Performance(容器性能)部分,选择 Actions(操作),然后选择 View performance logs(查看性能日志)。这将为您的 ECS 集群打开 CloudWatch Logs Insights 。

6.在查询框中,输入以下查询,然后选择 Run query(运行查询):

stats avg(MemoryUtilized) by bin (30m) as period, TaskDefinitionFamily, TaskDefinitionRevision
                | filter Type = "Task" | sort period desc, TaskDefinitionFamily |  limit 10
使用 Container Insights 设置高内存利用率警报

1. 打开 CloudWatch 控制台。

2. 在导航窗格的 Container Insights 部分,选择 Performance Monitoring(性能监控)。

3. 从下拉菜单中,选择 ECS Tasks(ECS 任务)或 ECS Services(ECS 服务)。

4. 在 Memory Utilization(内存利用率)卡上,选择展开(垂直的点),然后选择 View in Metrics(在指标中查看)。

5. 选择 Graphed metrics(绘成图表的指标)选项卡,然后在 Actions(操作)列中选择您想了解更多信息的任务的钟形图标。

6. 在 Specify metric and conditions(指定指标和条件)页面上,选择所需的值或保留默认值。

7. 在 Conditions(条件)部分,对于 Define the threshold value(定义阈值),输入 70。这会将警报的内存利用率阈值设置为 70%。

8.选择 Next (下一步)

9. 在 Configure actions(配置操作)页面的 Select an SNS topic(选择 SNS 主题)部分,选择 Create new topic(创建新主题)。

10. 对于 Send a notification to(发送通知到),输入要向其发送警报通知的电子邮件 ID。

11.选择下一步

12. 在 Add name and description(添加名称和描述)页面上,对于 Alarm name(警报名称),输入警报的名称。

13. (可选)对于 Alarm description(警报描述),输入警报的描述。

14.选择 Next(下一步),然后选择 Create alarm(创建警报)。

15. 按照从 AWS 收到的确认电子邮件中的说明确认订阅。

注意:为帮助您管理 Container Insights 成本,CloudWatch 不会自动利用日志数据创建所有可能的指标。您可以使用 CloudWatch Logs Insights 来分析原始性能日志事件,从而查看其他指标和额外的粒度级别。