如何从我的 Amazon ECS 容器实例中自动收集日志?

上次更新时间:2019 年 9 月 16 日

我正在对我的 Amazon Elastic Container Service (Amazon ECS) 环境进行故障排除或使用 AWS Support 打开一个案例,我需要从我的容器实例中收集各种日志。我该如何操作?

简短描述

Amazon ECS 日志收集器是一个脚本,它可以从容器实例中自动收集日志。该脚本会收集一般的操作系统日志以及 Docker 和 Amazon ECS 容器代理日志。然后,该脚本将日志压缩并存档到一个文件中,您可以在对问题故障排除时轻松共享该文件。

Amazon ECS 日志收集器支持以下操作系统:

  • Amazon Linux
  • Red Hat Enterprise Linux 7
  • Debian 8
  • Ubuntu 14.04
  • Windows 2016

解决方法

下载并运行适合 Linux 的 Amazon ECS 日志收集器

1.    连接到您的容器实例

2.    要确认 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 软件包。

3.    要下载 Amazon ECS 日志收集器脚本,请运行以下命令:

curl -O https://raw.githubusercontent.com/awslabs/ecs-logs-collector/master/ecs-logs-collector.sh

4.    要收集日志并使用脚本创建存档,请运行以下命令:

[ec2-user ~]$ sudo bash ./ecs-logs-collector.sh

运行脚本后,您可以在脚本创建的 collect 文件夹中检查已收集的日志。在该文件夹中,您将发现 collect.tgz 文件,该文件是所有日志的压缩存档。

在调试模式下运行适合 Linux 的 Amazon ECS 日志收集器

如果日志未提供您需要的所有信息,您可以使用 --mode=enable-debug 选项启用 Docker 守护程序和 Amazon ECS 容器代理的调试日志记录。此选项允许脚本在启用调试模式前收集日志。该脚本会重新启动 Docker 守护程序和 Amazon ECS 代理,然后终止实例上运行的所有容器。运行以下命令之前,请考虑耗尽容器实例并将所有重要任务迁移到其他容器实例。有关更多信息,请参阅容器实例耗尽

要在运行脚本时启用调试模式,请运行以下命令:

[ec2-user ~]$ sudo bash ./ecs-logs-collector.sh --mode=enable-debug

下载并运行适合 Windows 的 Amazon ECS 日志收集器

1.    连接到您的容器实例

2.    要下载脚本,使用管理员权限打开 Windows PowerShell,然后运行以下命令:

Invoke-WebRequest -OutFile ecs-logs-collector.ps1 https://raw.githubusercontent.com/awslabs/aws-ecs-logs-collector-for-windows/master/ecs-logs-collector.ps1

3.    在同一个窗口中,运行以下脚本以收集日志并创建存档:

.\ecs-logs-collector.ps1

运行脚本后,您可以在脚本创建的 collect 文件夹中检查已收集的日志。在该文件夹中,您将发现 collect.tgz 文件,该文件是所有日志的压缩存档。

在调试模式下运行适合 Windows 的 Amazon ECS 日志收集器

如果日志未提供您需要的所有信息,您可以使用 -RunMode debug 选项启用 Docker 守护程序和 Amazon ECS 容器代理的调试日志记录。此选项允许脚本在启用调试模式前收集日志。该脚本会重新启动 Docker 守护程序和 Amazon ECS 代理,然后终止实例上运行的所有容器。运行以下命令之前,请考虑耗尽容器实例并将所有重要任务迁移到其他容器实例。有关更多信息,请参阅容器实例耗尽

要在运行脚本时启用调试模式,请使用管理员权限通过 Windows PowerShell 运行以下命令:

.\ecs-logs-collector.ps1 -RunMode debug

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?