我想获取已激活 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 容器上。
- 创建 Amazon EFS 文件系统。
- 记下 Amazon EFS ID 和安全组 ID。
- 编辑文件系统安全组规则,允许与 Fargate 任务关联的安全组通过端口 2049 进行入站连接。
- 更新 Amazon ECS 安全组,允许在端口 2049 上出站连接到文件系统的安全组。
- 打开 Amazon ECS 控制台,然后导航到 Amazon ECS 任务定义。
- 在卷部分,选择添加卷。
- 对于名称,输入您的卷名称。
- 对于卷类型,输入 EFS。
- 对于文件系统 ID,输入文件系统的 ID。
- 在容器定义部分,导航到存储和日志记录部分,然后选择您为源卷创建的卷。
- 对于容器路径,选择 /var/log/amazon。
- 使用您创建的任务定义更新 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]#