Amazon ECS 日志文件位置 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon ECS 日志文件位置

Amazon ECS 将日志存储在容器实例的 /var/log/ecs 文件夹中。Amazon ECS 容器代理和控制容器实例上的代理状态(启动/停止)的 ecs-init 服务提供了日志。您可以通过 SSH 连接到容器实例来查看这些日志文件。

注意

如果您不确定如何收集容器实例上的所有日志,则可使用 Amazon ECS 日志收集器。有关更多信息,请参阅Amazon ECS 日志收集器

Amazon ECS 容器代理日志

Amazon ECS 容器代理将日志存储在您的容器实例上。

对于容器代理版本 1.36.0 及更高版本,预设情况下,日志位于 /var/log/ecs/ecs-agent.log(在 Linux 实例上)和 C:\ProgramData\Amazon\ECS\log\ecs-agent.log(在 Windows 实例上)。

对于容器代理版本 1.35.0 及以前的版本,预设情况下,日志位于 /var/log/ecs/ecs-agent.log.timestamp(在 Linux 实例上)和 C:\ProgramData\Amazon\ECS\log\ecs-agent.log.timestamp(在 Windows 实例上)。

预设情况下,代理日志每小时轮换一次,最多存储 24 个日志。

以下是可用于更改原定设置代理日志记录行为的容器代理配置变量。有关更多信息,请参阅Amazon ECS 容器代理配置

ECS_LOGFILE

示例值:/ecs-agent.log

Linux 上的原定设置值:Null

Windows 上的原定设置值:Null

代理日志应写入的位置。如果您通过 ecs-init 运行代理(这是使用经 Amazon ECS 优化的 AMI 时的原定设置方法),则容器内路径将为 /log,并且 ecs-init 会将其挂载到主机上的 /var/log/ecs/

ECS_LOGLEVEL

示例值:criterrorwarninfodebug

Linux 上的原定设置值:info

Windows 上的原定设置值:info

要记录的详细级别。

ECS_LOGLEVEL_ON_INSTANCE

示例值:nonecriterrorwarninfodebug

Linux 上的原定设置值:none,如果 ECS_LOG_DRIVER 显式设置为非空值;否则,和 ECS_LOGLEVEL 相同

Windows 上的原定设置值:none,如果 ECS_LOG_DRIVER 显式设置为非空值;否则,与 ECS_LOGLEVEL 相同

可用于覆盖 ECS_LOGLEVEL 并设置应记录在实例日志文件中的详细级别,与日志记录驱动程序中记录的级别分开。如果显式设置了日志记录驱动程序,则预设情况下会关闭实例日志,但可以使用此变量重新打开实例日志。

ECS_LOG_DRIVER

示例值:awslogsfluentdgelfjson-filejournaldlogentriessyslogsplunk

Linux 上的原定设置值:json-file

Windows 上的默认值:不适用

确定代理容器要使用的日志记录驱动程序。

ECS_LOG_ROLLOVER_TYPE

示例值:sizehourly

Linux 上的原定设置值:hourly

Windows 上的原定设置值:hourly

确定容器代理日志文件是将按小时轮换还是基于大小轮换。预设情况下,代理日志文件每小时轮换一次。

ECS_LOG_OUTPUT_FORMAT

示例值:logfmtjson

Linux 上的原定设置值:logfmt

Windows 上的原定设置值:logfmt

确定日志输出格式。使用 json 格式时,日志中的每一行都将是一个结构化的 JSON 映射。

ECS_LOG_MAX_FILE_SIZE_MB

示例值:10

Linux 上的原定设置值:10

Windows 上的原定设置值:10

ECS_LOG_ROLLOVER_TYPE 变量设置为 size 时,此变量将确定日志文件在轮换之前的最大大小(以 MB 为单位)。如果将轮换类型设置为 hourly,则忽略此变量。

ECS_LOG_MAX_ROLL_COUNT

示例值:24

Linux 上的原定设置值:24

Windows 上的原定设置值:24

确定要保留的轮换日志文件的数量。达到此限制后,将删除较旧的日志文件。

对于容器代理版本 1.36.0 及更高版本,以下是使用 logfmt 格式时的示例日志文件。

level=info time=2019-12-12T23:43:29Z msg="Loading configuration" module=agent.go level=info time=2019-12-12T23:43:29Z msg="Image excluded from cleanup: amazon/amazon-ecs-agent:latest" module=parse.go level=info time=2019-12-12T23:43:29Z msg="Image excluded from cleanup: amazon/amazon-ecs-pause:0.1.0" module=parse.go level=info time=2019-12-12T23:43:29Z msg="Amazon ECS agent Version: 1.36.0, Commit: ca640387" module=agent.go level=info time=2019-12-12T23:43:29Z msg="Creating root ecs cgroup: /ecs" module=init_linux.go level=info time=2019-12-12T23:43:29Z msg="Creating cgroup /ecs" module=cgroup_controller_linux.go level=info time=2019-12-12T23:43:29Z msg="Loading state!" module=statemanager.go level=info time=2019-12-12T23:43:29Z msg="Event stream ContainerChange start listening..." module=eventstream.go level=info time=2019-12-12T23:43:29Z msg="Restored cluster 'auto-robc'" module=agent.go level=info time=2019-12-12T23:43:29Z msg="Restored from checkpoint file. I am running as 'arn:aws:ecs:us-west-2:0123456789:container-instance/auto-robc/3330a8a91d15464ea30662d5840164cd' in cluster 'auto-robc'" module=agent.go

以下是使用 JSON 格式时的示例日志文件。

{"time": "2019-11-07T22:52:02Z", "level": "info", "msg": "Starting Amazon Elastic Container Service Agent", "module": "engine.go"}

对于容器代理版本 1.35.0 及以前的版本,以下是日志文件的格式。

2016-08-15T15:54:41Z [INFO] Starting Agent: Amazon ECS Agent - v1.12.0 (895f3c1) 2016-08-15T15:54:41Z [INFO] Loading configuration 2016-08-15T15:54:41Z [WARN] Invalid value for task cleanup duration, will be overridden to 3h0m0s, parsed value 0, minimum threshold 1m0s 2016-08-15T15:54:41Z [INFO] Checkpointing is enabled. Attempting to load state 2016-08-15T15:54:41Z [INFO] Loading state! module="statemanager" 2016-08-15T15:54:41Z [INFO] Detected Docker versions [1.17 1.18 1.19 1.20 1.21 1.22] 2016-08-15T15:54:41Z [INFO] Registering Instance with ECS 2016-08-15T15:54:41Z [INFO] Registered! module="api client"

Amazon ECS ecs-init 日志

ecs-init 过程将日志存储在 /var/log/ecs/ecs-init.log 中。

您可以使用以下命令查看日志文件。

cat /var/log/ecs/ecs-init.log

输出:

2018-02-16T18:13:54Z [INFO] pre-start 2018-02-16T18:13:56Z [INFO] start 2018-02-16T18:13:56Z [INFO] No existing agent container to remove. 2018-02-16T18:13:56Z [INFO] Starting Amazon Elastic Container Service Agent

任务凭证审核日志的 IAM 角色

当使用 IAM 角色的凭证提供程序向任务提供凭证时,这些请求将保存在审计日志中。审计日志继承与容器代理日志相同的日志轮换设置。可以设置 ECS_LOG_ROLLOVER_TYPEECS_LOG_MAX_FILE_SIZE_MBECS_LOG_MAX_ROLL_COUNT 容器代理配置变量来影响审计日志的行为。有关更多信息,请参阅Amazon ECS 容器代理日志

对于容器代理版本 1.36.0 及更高版本,审计日志位于 /var/log/ecs/audit.log。在轮换日志时,将在日志文件名的末尾添加 YYYY-MM-DD-HH 格式的时间戳。

对于容器代理版本 1.35.0 及以前的版本,审计日志位于 /var/log/ecs/audit.log.YYYY-MM-DD-HH

日志条目格式如下:

  • Timestamp

  • HTTP 响应代码

  • 请求来源的 IP 地址和端口号

  • 凭证提供程序的相对 URI

  • 发出请求的用户代理

  • 请求容器所属的任务 ARN

  • GetCredentials API 名称和版本号

  • 容器实例注册到的 Amazon ECS 集群名称

  • 容器实例 ARN

示例日志条目如下所示。

您可以使用以下命令查看日志文件。

cat /var/log/ecs/audit.log.2016-07-13-16

输出:

2016-07-13T16:11:53Z 200 172.17.0.5:52444 "/v1/credentials" "python-requests/2.7.0 CPython/2.7.6 Linux/4.4.14-24.50.amzn1.x86_64" TASK_ARN GetCredentials 1 CLUSTER_NAME CONTAINER_INSTANCE_ARN