如何监控 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 来分析原始性能日志事件,从而查看其他指标和额外的粒度级别。