我想从我的 Amazon Elastic Container Service (Amazon ECS) 收集日志来对我的环境进行故障排除。
简短描述
使用 Amazon ECS 日志收集器脚本收集通用操作系统 (OS)、Docker 和 Amazon ECS 容器代理日志。然后,该脚本将日志压缩并存档到一个文件中,您可以在对问题故障排除时共享该文件。
您还可以使用 AWSSupport-CollectECSInstanceLogs AWS Systems Manager 运行手册从 ECS 实例收集日志,并将日志上传到 Amazon Simple Storage Service (Amazon S3) 存储桶。在 LogDestination 输入参数中,提供 Amazon S3 存储桶的位置。
**注意:**AWSSupport-CollectECSInstanceLogs 不支持调试模式。有关详细信息,请参阅运行由 Systems Manager Automation 支持的自动化操作。
解决方法
下载并运行 Amazon ECS 日志收集器
有关如何连接到容器实例的说明,请参阅使用 SSH 连接到您的容器实例。有关如何下载和运行 Linux 和 Windows 日志收集器的说明,请参阅使用 Amazon ECS 日志收集器收集容器日志。
对于 Linux,您必须使用 curl。要确认您已安装 curl,请运行以下命令:
curl --version
输出结果将类似于以下示例:
curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3
**注意:**如果命令未返回预期结果,请安装 curl 包。
运行该脚本后,可以在该脚本创建的 collect 文件夹中查看收集的日志。对于 Linux,所有日志的压缩存档为 collect-i-ffffffffffffffffff-YYYYMMDDHHmm.tgz。对于 Windows,这是 collect.tgz 文件。
在调试模式下运行 Amazon ECS 日志收集器
调试模式可让您解决 ECS 环境中标准日志详细信息可能无法解决的复杂问题。
要启用 Docker 进程守护程序和 Amazon ECS 容器代理的调试日志记录,请在 Linux 上使用 --mode=enable-debug,在 Windows 上使用 -RunMode debug。
**注意:**该脚本会重启 Docker 进程守护程序和 Amazon ECS 代理,然后终止在此实例上运行的所有容器。在运行以下命令之前,清空容器实例并将重要任务移至其他容器实例。
Linux
调试模式仅适用于 Amazon Linux 操作系统和基于 Systemd init 的系统。
运行脚本时,运行以下命令:
[ec2-user ~]$ sudo bash ./ecs-logs-collector.sh --mode=enable-debug
Windows
运行脚本时,使用具有管理员权限的 Windows PowerShell 来运行以下命令:
.\ecs-logs-collector.ps1 -RunMode debug