本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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.
(在 Linux 实例上)和 timestamp
C:\ProgramData\Amazon\ECS\log\ecs-agent.log.
(在 Windows 实例上)。timestamp
预设情况下,代理日志每小时轮换一次,最多存储 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
-
示例值:
crit
、error
、warn
、info
、debug
Linux 上的原定设置值:
info
Windows 上的原定设置值:
info
要记录的详细级别。
ECS_LOGLEVEL_ON_INSTANCE
-
示例值:
none
、crit
、error
、warn
、info
、debug
Linux 上的原定设置值:
none
,如果ECS_LOG_DRIVER
显式设置为非空值;否则,和ECS_LOGLEVEL
相同Windows 上的原定设置值:
none
,如果ECS_LOG_DRIVER
显式设置为非空值;否则,与ECS_LOGLEVEL
相同可用于覆盖
ECS_LOGLEVEL
并设置应记录在实例日志文件中的详细级别,与日志记录驱动程序中记录的级别分开。如果显式设置了日志记录驱动程序,则预设情况下会关闭实例日志,但可以使用此变量重新打开实例日志。 ECS_LOG_DRIVER
-
示例值:
awslogs
、fluentd
、gelf
、json-file
、journald
、logentries
、syslog
、splunk
Linux 上的原定设置值:
json-file
Windows 上的默认值:不适用
确定代理容器要使用的日志记录驱动程序。
ECS_LOG_ROLLOVER_TYPE
-
示例值:
size
、hourly
Linux 上的原定设置值:
hourly
Windows 上的原定设置值:
hourly
确定容器代理日志文件是将按小时轮换还是基于大小轮换。预设情况下,代理日志文件每小时轮换一次。
ECS_LOG_OUTPUT_FORMAT
-
示例值:
logfmt
、json
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_TYPE
、ECS_LOG_MAX_FILE_SIZE_MB
和 ECS_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