Amazon ECS ログファイルの場所 - Amazon Elastic Container Service

Amazon ECS ログファイルの場所

Amazon ECS によってログはコンテナインスタンスの /var/log/ecs フォルダに保存されます。Amazon ECS コンテナエージェントから得られるログと、コンテナインスタンスのエージェントの状態 (開始/停止) を制御する ecs-init サービスから得られるログがあります。これらのログファイルは、コンテナインスタンスに SSH で接続することにより表示できます。詳細については、「コンテナインスタンスへの接続」を参照してください。

注記

コンテナインスタンスのログをすべて収集する方法がわからない場合は、Amazon ECS ログコレクターを使用できます。詳細については、「Amazon ECS ログコレクター」を参照してください。

Amazon ECS コンテナエージェントログ

Amazon ECS コンテナエージェントは、コンテナインスタンスのログを保存します。

コンテナエージェントバージョン 1.36.0 以降の場合、デフォルトでは、ログは Linux インスタンスの /var/log/ecs/ecs-agent.log および Windows インスタンスの C:\ProgramData\Amazon\ECS\log\ecs-agent.log にあります。

コンテナエージェントバージョン 1.35.0 以前の場合、デフォルトでは、ログは Linux インスタンスの /var/log/ecs/ecs-agent.log.timestamp および Windows インスタンスの C:\ProgramData\Amazon\ECS\log\ecs-agent.log.timestamp にあります。

デフォルトでは、エージェントログは 1 時間ごとにローテーションされ、最大 24 個のログが保存されます。

以下のコンテナエージェントの設定変数は、エージェントのデフォルトのログ記録動作を変更するために使用できます。詳細については、「Amazon ECS コンテナエージェントの設定」を参照してください。

ECS_LOGFILE

値の例: /ecs-agent.log

Linux のデフォルト値: Null

Windows のデフォルト値: Null

エージェントログを書き込む場所。ecs-init 経由でエージェントを実行している場合 (Amazon ECS 用に最適化された AMI を使用している場合のデフォルトの方法)、コンテナ内のパスは、ホストの /var/log/ecs/ にエージェントをマウントする /log および ecs-init になります。

ECS_LOGLEVEL

値の例: criterrorwarninfodebug

Linux のデフォルト値: info

Windows のデフォルト値: info

ログに記録する詳細レベル。

ECS_LOGLEVEL_ON_INSTANCE

値の例: nonecriterrorwarninfodebug

Linux のデフォルト値: ECS_LOG_DRIVER が明示的に空でない値に設定されている場合 none、それ以外の場合は ECS_LOGLEVEL と同じ値。

Windows のデフォルト値: ECS_LOG_DRIVER が明示的に空でない値に設定されている場合 none、それ以外の場合は ECS_LOGLEVEL と同じ値。

ECS_LOGLEVEL に上書きして、ロギングドライバに記録されるレベルとは別に、インスタンス上のログファイルに記録される詳細レベルを設定するために使用できます。ロギングドライバが明示的に設定されている場合、インスタンス上のログはデフォルトでオフになりますが、この変数を使用してオンに戻すことができます。

ECS_LOG_ROLLOVER_TYPE

値の例: sizehourly

Linux のデフォルト値: hourly

Windows のデフォルト値: hourly

コンテナエージェントのログファイルを 1 時間ごとに更新するか、サイズに基づいて更新するかを決定します。デフォルトでは、エージェントのログファイルは 1 時間ごとに更新されます。

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_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 にあります。

ログエントリの形式は以下のとおりです。

  • タイムスタンプ

  • 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