Amazon ECS 任務定義範例:將日誌路由到 FireLens - Amazon Elastic Container Service

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

Amazon ECS 任務定義範例:將日誌路由到 FireLens

若要搭配 FireLens 使用自訂日誌路由,您必須在工作定義中指定下列項目:

  • 包含 FireLens 組態的日誌路由器容器。我們建議將容器標示為 essential

  • 包含指定日誌驅動程式的日誌配置的一或多個應用 awsfirelens 程式容器。

  • 任務IAM 角色 Amazon Resource Name (ARN),其中包含路由日誌所需的任務許可。

使用建立新工作定義時 AWS Management Console,有一個 FireLens整合區段可讓您輕鬆新增記錄路由器容器。如需詳細資訊,請參閱 使用主控台建立 Amazon ECS 任務定義

Amazon ECS 轉換日誌組態並產生 Fluentd 或 Fluent Bit 輸出組態。輸出配置掛載在流利位和 /fluentd/etc/fluent.conf 流利位 /fluent-bit/etc/fluent-bit.conf 的日誌路由容器中。

重要

FireLens 會監聽連接埠 24224。因此,若要確保無法在工作之外連線到 FireLens 記錄路由器,您不得允許任務使用的安全性群組24224中連接埠上的輸入流量。對於使用 awsvpc 網路模式的任務,這是與任務相關聯的安全群組。對於使用 host 網路模式的任務,這是與託管任務的 Amazon EC2 執行個體相關聯的安全群組。對於使用 bridge 網路模式的任務,請不要建立使用連接埠 24224 的任何連接埠映射。

根據預設,Amazon ECS 會在日誌項目中新增其他欄位,以協助識別日誌的來源。

  • ecs_cluster - 任務所屬叢集的名稱。

  • ecs_task_arn – 容器所屬任務的完整 Amazon Resource Name (ARN)。

  • ecs_task_definition - 任務正在使用的任務定義名稱和修訂版本。

  • ec2_instance_id:託管容器的 Amazon EC2 執行個體 ID。此欄位僅用於使用 EC2 啟動類型的任務。

false如果您不想要中繼資料,可以enable-ecs-log-metadata將設定為。

下列工作定義範例會定義使用 Fluent Bit 將其記錄路由傳送至記錄的記錄路由器容器。 CloudWatch 它還定義了一個應用程式容器,該容器使用日誌組態將日誌路由到 Amazon Data Firehose,並將用於緩衝事件的記憶體設定為 2 MiB。

注意

如需更多範例任務定義,請參閱上 GitHub的 Amazon ECS FireLens 範例

{ "family": "firelens-example-firehose", "taskRoleArn": "arn:aws:iam::123456789012:role/ecs_task_iam_role", "containerDefinitions": [ { "essential": true, "image": "906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:stable", "name": "log_router", "firelensConfiguration": { "type": "fluentbit", "options": { "enable-ecs-log-metadata": "true" } }, "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": "2097152" } }, "memoryReservation": 100 } ] }

logConfiguration 物件中指定為選項的索引鍵值組,用來產生 Fluentd 或 Fluent Bit 輸出組態。以下是來自 Fluent Bit 輸出定義的程式碼範例。

[OUTPUT] Name firehose Match app-firelens* region us-west-2 delivery_stream my-stream
注意

FireLens 管理match配置。您不會在任務match定義中指定組態。

使用自訂規劃檔

您可以指定自訂規劃檔。組態檔格式是您所使用日誌路由器的原生格式。如需詳細資訊,請參閱 流利配置檔案語法流利位元組態檔案

在您的自訂組態檔案中,對於使用 bridgeawsvpc 網路模式的任務,不要透過 TCP 設定 Fluentd 或 Fluent Bit 向前輸入,因為 FireLens 將其新增到輸入組態中。

您的 FireLens 組態必須包含下列選項,才能指定自訂組態檔案:

config-file-type

自訂組態檔案的來源位置。可用選項為 s3file

注意

託管於的工作 AWS Fargate 僅支援file組態檔案類型。

config-file-value

自訂組態檔案的來源。如果使用 s3 組態檔案類型,則組態檔案值是 Amazon S3 儲存貯體和檔案的完整 ARN。如果使用 file 組態檔案類型,組態檔案值就是容器映像中或掛載在容器中的磁碟區上的組態檔案的完整路徑。

重要

使用自訂組態檔案時,您必須指定與 FireLens 使用的路徑不同的路徑。Amazon ECS 會為 Fluent Bit 保留 /fluent-bit/etc/fluent-bit.conf filepath,並為 Fluentd 保留 /fluentd/etc/fluent.conf

下列範例顯示指定自訂組態時所需的語法。

重要

若要指定託管於 Amazon S3 的自訂組態檔案,請確定您已建立具有適當許可的任務執行 IAM 角色。

以下顯示指定自訂組態時所需的語法。

{ "containerDefinitions": [ { "essential": true, "image": "906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:stable", "name": "log_router", "firelensConfiguration": { "type": "fluentbit", "options": { "config-file-type": "s3 | file", "config-file-value": "arn:aws:s3:::mybucket/fluent.conf | filepath" } } } ] }
注意

託管於的工作 AWS Fargate 僅支援file組態檔案類型。