如何获取已激活 Amazon ECS Exec 的 Fargate 任务的 SSM 代理日志?

2 分钟阅读
0

我想获取已激活 Amazon Elastic Container Service (Amazon ECS) 的 AWS Fargate 任务的 AWS Systems Manager Agent (SSM Agent) 日志。但是,我不知道怎么做。

简短描述

在开始使用 Amazon ECS Exec 之前,请参阅使用 ECS Exec 的先决条件

要获取已激活 ECS Exec 的 Fargate 任务的 SSM 代理日志,请创建 Amazon Elastic File System (Amazon EFS) 文件系统。然后,在 Fargate 容器上安装 Amazon EFS 文件系统。最后,在 Amazon Elastic Compute Cloud (Amazon EC2) 实例上安装相同的文件系统,以获取 SSM 代理日志。

**重要提示:**Amazon EFS 文件系统、Amazon ECS 集群和 Fargate 任务都必须位于同一个 Amazon Virtual Private Cloud (Amazon VPC) 中。

**注意:**以下解决方法仅适用于已激活 ECS Exec 的 Fargate 任务。解决方法步骤仅用于调试。将其作为独立任务启动,或者在 Amazon ECS 服务中将任务的 desiredCount 设置为 "1",以避免覆盖日志。对于必须检查容器中的非 stderr/stdout 日志的情况,您也可以使用以下解决方法。

解决方法

创建 Amazon EFS 文件系统并将其安装到任务或服务中的 Fargate 容器上。

  1. 创建 Amazon EFS 文件系统
  2. 记下 Amazon EFS ID 和安全组 ID。
  3. 编辑文件系统安全组规则,允许与 Fargate 任务关联的安全组通过端口 2049 进行入站连接。
  4. 更新 Amazon ECS 安全组,允许在端口 2049 上出站连接到文件系统的安全组。
  5. 打开 Amazon ECS 控制台,然后导航到 Amazon ECS 任务定义。
  6. 部分,选择添加卷
  7. 对于名称,输入您的卷名称。
  8. 对于卷类型,输入 EFS。
  9. 对于文件系统 ID,输入文件系统的 ID。
  10. 容器定义部分,导航到存储和日志记录部分,然后选择您为源卷创建的卷。
  11. 对于容器路径,选择 /var/log/amazon
  12. 使用您创建的任务定义更新 Fargate 服务或任务。

在 Amazon EC2 实例上安装 Amazon EFS 文件系统并获取 SSM 代理日志

1.    在 EC2 实例上安装您的文件系统

2.    运行以下命令以获取日志数据:

sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-01b0bxxxxxxxx.efs.ap-southeast-1.amazonaws.com:/ /efs

输出示例:

# df -h
Filesystem                                          Size  Used Avail Use% Mounted on
fs-01b0bxxxxxxxx.efs.us-west-2.amazonaws.com:/      8.0E     0  8.0E   0% /efs

以下是存储在 Fargate 容器中路径 /var/log/amazon/ssm/amazon-ssm-agent.log 处的日志示例:

[root@ip-172-31-32-32 efs]# cd ssm/
[root@ip-172-31-32-32 ssm]# ls
amazon-ssm-agent.log  audits
[root@ip-172-31-32-32 ssm]# cat amazon-ssm-agent.log | tail -n 10
2022-10-20 11:50:34 INFO [ssm-agent-worker] [MessageService] [MessageHandler] ended idempotency deletion thread
2022-10-20 11:50:37 INFO [ssm-agent-worker] [MessageService] [MGSInteractor] send failed reply thread started
2022-10-20 11:50:37 INFO [ssm-agent-worker] [MessageService] [MGSInteractor] send failed reply thread done
2022-10-20 11:55:37 INFO [ssm-agent-worker] [MessageService] [MGSInteractor] send failed reply thread started
2022-10-20 11:55:37 INFO [ssm-agent-worker] [MessageService] [MGSInteractor] send failed reply thread done
2022-10-20 12:00:34 INFO [ssm-agent-worker] [MessageService] [MessageHandler] started idempotency deletion thread
2022-10-20 12:00:34 WARN [ssm-agent-worker] [MessageService] [MessageHandler] [Idempotency] encountered error open /var/lib/amazon/ssm/170b15cacf5846ed836bcd7903cbee48-2531612879/idempotency: no such file or directory while listing replies in /var/lib/amazon/ssm/170b15cacf5846ed836bcd7903cbee48-2531612879/idempotency
2022-10-20 12:00:34 INFO [ssm-agent-worker] [MessageService] [MessageHandler] ended idempotency deletion thread
2022-10-20 12:00:37 INFO [ssm-agent-worker] [MessageService] [MGSInteractor] send failed reply thread started
2022-10-20 12:00:37 INFO [ssm-agent-worker] [MessageService] [MGSInteractor] send failed reply thread done
[root@ip-172-31-32-32 ssm]#

AWS 官方
AWS 官方已更新 2 年前