設定 Amazon ECS 日誌以獲得高輸送量 - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定 Amazon ECS 日誌以獲得高輸送量

建立作業定義時,可以指定記憶體中緩衝的記錄行數,方法是指定中的log-driver-buffer-limit值。如需詳細資訊,請參閱 Docker 文件中的 Fluentd 登入驅動程式

當輸送量很高時,請使用此選項,因為 Docker 可能會耗盡緩衝區記憶體並捨棄緩衝區訊息,以便新增訊息。

使用具有緩衝區限制選項 FireLens 的 Amazon ECS 時,請考慮下列事項:

  • Amazon EC2 啟動類型和具有平台版本的 1.4.0 或更新版本的 Fargate 啟動類型支援此選項。

  • 只有在 logDriver 設定為 awsfirelens 時,此選項才有效。

  • 預設緩衝區限制為1048576記錄行。

  • 有效值0536870912記錄行。

  • 此緩衝區使用的最大記憶體容量是每個記錄行的大小和緩衝區大小的乘積。例如,如果應用程式的記錄行平均為 2 KiB,則最多8會使用 4096 的緩衝區限制。在工作層級配置的記憶體總量應該大於除了記錄驅動程式記憶體緩衝區之外,配置給所有容器的記憶體數量。

在任務定義中指定 awsfirelens 日誌驅動程式時,Amazon ECS 代理程式會將下列環境變數插入容器中:

FLUENT_HOST

指派給 FireLens 容器的 IP 位址。

FLUENT_PORT

流利轉送通訊協定正在接聽的連接埠。

您可以使用 FLUENT_HOSTFLUENT_PORT 環境變數從程式碼直接登入日誌路由器,而不是透過 stdout。有關詳細資訊,請參閱中fluent-logger-golang的 GitHub。

以下顯示指定的語法log-driver-buffer-limit。替換my_service_為您的服務名稱:

{ "containerDefinitions": [ { "essential": true, "image": "906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:stable", "name": "my_service_log_router", "firelensConfiguration": { "type": "fluentbit" }, "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "firelens-container", "awslogs-region": "us-west-2", "awslogs-create-group": "true", "awslogs-stream-prefix": "firelens" } }, "memoryReservation": 50 }, { "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 } ] }