高スループットの Amazon ECS ログの設定
タスク定義を作成する際は、値 (log-driver-buffer-limit
) を指定することで、メモリにバッファリングされるログの行数を指定できます。詳細については、Docker ドキュメントの「Fluentd ロギングドライバー
このオプションは、スループットが高いために Docker がバッファメモリを使い果たし、新しいメッセージを追加するためにバッファメッセージを破棄する可能性がある場合に使用します。
バッファ制限オプションを指定して FireLens for Amazon ECS を使用する場合は、以下の点を考慮してください。
-
このオプションは、Amazon EC2 起動タイプおよび プラットフォームバージョン
1.4.0
以降の Fargate 起動タイプでサポートされています。 -
このオプションは、
logDriver
がawsfirelens
に設定されている場合にのみ有効です。 -
デフォルトのバッファ制限は
1048576
(ログの行数) です。 -
バッファ制限は、
0
ログ行以上、536870912
ログ行未満である必要があります。 -
このバッファに使用されるメモリの最大量は、各ログ行のサイズとバッファのサイズ積です。例えば、アプリケーションのログ行が平均
2
KiB の場合、4096 のバッファ制限では最大8
MiB を使用します。タスクレベルで割り当てられるメモリの合計量は、ログドライバーのメモリバッファに加えて、すべてのコンテナに割り当てられたメモリ量よりも大きくなければなりません。
awsfirelens
ログドライバーがタスク定義で指定されている場合、Amazon ECS コンテナエージェントは次の環境変数をコンテナに挿入します。
FLUENT_HOST
-
FireLens コンテナに割り当てられた IP アドレス。
注記
bridge
ネットワークモードの EC2 起動タイプを使用している場合、FireLens ログルーターコンテナ (コンテナ定義にfirelensConfiguration
オブジェクトがあるコンテナ) を再起動した後で、アプリケーションコンテナのFLUENT_HOST
環境変数が不正確になる可能性があります。これは、FLUENT_HOST
が動的 IP アドレスであり、再起動後に変更される場合があるためです。アプリケーションコンテナからFLUENT_HOST
IP アドレスへの直接的なロギングは、アドレスの変更後に失敗することがあります。個々のコンテナの再起動に関する詳細については、「コンテナ再起動ポリシーを使用して Amazon ECS タスク内の個々のコンテナを再起動する」を参照してください。 FLUENT_PORT
-
Fluent Forward プロトコルがリッスンしているポート。
FLUENT_HOST
環境変数および FLUENT_PORT
環境変数を使用すると、stdout
を介することなく、コードからログルーターに直接ログを記録できます。詳細については、GitHub の「flluent-logger-golang
以下に、log-driver-buffer-limit
を指定するための構文を示します。my_service_
をユーザー自身のサービス名に置き換えます。
{ "containerDefinitions": [ { "name": "
my_service_
log_router", "image": "public.ecr.aws/aws-observability/aws-for-fluent-bit:stable", "cpu": 0, "memoryReservation": 51, "portMappings": [], "essential": true, "environment": [], "mountPoints": [], "volumesFrom": [], "user": "0", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/ecs-aws-firelens-sidecar-container", "mode": "non-blocking", "awslogs-create-group": "true", "max-buffer-size": "25m", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "firelens" }, "secretOptions": [] }, "systemControls": [], "firelensConfiguration": { "type": "fluentbit" } }, { "essential": true, "image": "httpd", "name": "app", "logConfiguration": { "logDriver": "awsfirelens", "options": { "Name": "firehose", "region": "us-west-2", "delivery_stream": "my-stream", "log-driver-buffer-limit": "51200" } }, "dependsOn": [ { "containerName": "log_router", "condition": "START" } ], "memoryReservation": 100 } ] }