运行时监控疑难解答常见问题 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

运行时监控疑难解答常见问题

您可能需要排除故障或验证运行时监控是否已启用并在您的任务和容器上运行。

如何判断我的账户是否处于运行时监控状态?

在 Amazon ECS 控制台中,信息位于 “账户设置” 页面上。

您也可以list-account-settings使用该effective-settings选项运行。

aws ecs list-account-settings --effective-settings

输出

名称设置为guardDutyActivate设置为的设置on表示账户已配置。您必须向 GuardDuty 管理员核实管理是自动还是手动管理。

{ "setting": { "name": "guardDutyActivate", "value": "enabled", "principalArn": "arn:aws:iam::123456789012:root", "type": "aws-managed" } }

如何判断集群上的运行时监控是否处于活动状态?

在 Amazon ECS 控制台中,信息位于集群详细信息页面的标签选项卡上。

您也可以describe-clusters使用该TAGS选项运行。

以下示例显示了默认集群的输出

aws ecs describe-clusters --cluster default --include TAGS

输出

密钥设置为GuardDutyManaged设置为的标签true表示集群已配置运行时监控。

{ "clusters": [ { "clusterArn": "arn:aws:ecs:us-east-1:1234567890:cluster/default", "clusterName": "default", "status": "ACTIVE", "registeredContainerInstancesCount": 0, "runningTasksCount": 1, "pendingTasksCount": 0, "activeServicesCount": 0, "statistics": [], "tags": [ { "key": "GuardDutyManaged", "value": "true" } ], "settings": [], "capacityProviders": [], "defaultCapacityProviderStrategy": [] } ], "failures": [] }

如何判断 GuardDuty 安全代理是否正在执行 Fargate 任务?

GuardDuty 安全代理作为 Fargate 任务的边车容器运行。

在 Amazon ECS 控制台中,边车显示在任务详情页面的容器下。

您可以运行describe-tasks并查找名称设置为、LastStat us 设置为aws-gd-agent的容器。RUNNING

以下示例显示了任务的默认集群的输出aws:ecs:us-east-1:123456789012:task/0b69d5c0-d655-4695-98cd-5d2d5EXAMPLE

aws ecs describe-tasks --cluster default --tasks aws:ecs:us-east-1:123456789012:task/0b69d5c0-d655-4695-98cd-5d2d5EXAMPLE

输出

名为的容器gd-agent处于RUNNING状态。

"containers": [ { "containerArn": "arn:aws:ecs:us-east-1:123456789012:container/4df26bb4-f057-467b-a079-96167EXAMPLE", "taskArn": "arn:aws:ecs:us-east-1:123456789012:task/0b69d5c0-d655-4695-98cd-5d2d5EXAMPLE", "lastStatus": "RUNNING", "healthStatus": "UNKNOWN", "memory": "string", "name": "aws-gd-agent" } ]

如何判断 GuardDuty 安全代理是否在 EC2 容器实例上运行?

运行以下命令查看状态:

sudo systemctl status amazon-guardduty-agent

日志文件位于以下位置:

/var/log/amzn-guardduty-agent

如果集群上运行的任务没有任务执行角色,会发生什么?

对于 Fargate 任务,任务在没有 GuardDuty 安全代理 sidecar 容器的情况下启动。 GuardDuty 仪表板将在覆盖率统计信息仪表板中显示任务缺少保护。

如何判断我是否有为集群添加标签以进行运行时监控的正确权限?

要标记集群,必须同时对CreateClusterecs:TagResource执行操作UpdateCluster

以下是示例策略的片段。

{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "ecs:CreateAction" : "CreateCluster", "ecs:CreateAction" : "UpdateCluster", } } } ] }

如果没有连接 Amazon ECR 会发生什么?

对于 Fargate 任务,任务在没有 GuardDuty 安全代理 sidecar 容器的情况下启动。 GuardDuty 仪表板将在覆盖率统计信息仪表板中显示任务缺少保护。

启用运行时监控后,如何解决 Fargate 任务中的内存不足错误?

GuardDuty 安全代理是一个轻量级进程。但是,该过程仍会根据工作负载的大小消耗资源。我们建议使用容器资源跟踪工具(例如 Container Insights)在集群中暂存 GuardDuty部署。 Amazon CloudWatch 这些工具可帮助您发现应用程序 GuardDuty 的安全代理的使用情况。然后,您可以根据需要调整 Fargate 任务大小,以避免可能出现的内存不足情况。