运行时监控故障排除常见问题
您可能需要排查或验证运行时监控是否已启用并在您的任务和容器上运行。
主题
如何判断我的账户上是否激活了运行时监控?
在 Amazon ECS 控制台中,信息位于账户设置页面上。
您也可以使用 effective-settings
选项运行 list-account-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 控制台中,信息位于集群详细信息页面的标签选项卡上。
您也可以使用 TAGS
选项运行 describe-clusters
。
以下示例显示默认集群的输出
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
并查找名称设置为 aws-gd-agent
、lastStatus 设置为 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 安全代理附加容器的情况下启动。GuardDuty 控制面板将在覆盖率统计信息面板中显示任务缺少保护。
如何判断我是否拥有标记集群以进行运行时监控的正确权限?
为了标记集群,您必须同时对 CreateCluster
和 UpdateCluster
执行 ecs:TagResource
操作。
以下是示例策略的代码片段。
{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "ecs:CreateAction" : "CreateCluster", "ecs:CreateAction" : "UpdateCluster", } } } ] }
如果没有连接 Amazon ECR 会发生什么情况?
对于 Fargate 任务,任务在没有 GuardDuty 安全代理附加容器的情况下启动。GuardDuty 控制面板将在覆盖率统计信息面板中显示任务缺少保护。
启用运行时监控后,如何解决 Fargate 任务中的内存不足错误?
GuardDuty 安全代理是轻量级进程。但是,该进程仍会根据工作负载的大小消耗资源。建议使用容器资源跟踪工具,例如 Amazon CloudWatch Container Insights,在集群中暂存 GuardDuty 部署。这些工具可帮助您发现应用程序的 GuardDuty 安全代理的消耗情况。然后,您可以按需要调整 Fargate 任务大小,以避免可能出现的内存不足情况。