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 Logs。它還定義了使用日誌組態將日誌路由到 Amazon Data Firehose 的應用程式容器,並將用於緩衝事件的記憶體設定為 2 MiB 。

注意

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

{ "family": "firelens-example-firehose", "taskRoleArn": "arn:aws:iam::123456789012:role/ecs_task_iam_role", "containerDefinitions": [ { "name": "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": "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 網路模式的任務,請勿設定 Fluentd 或 Fluent Bit 轉送輸入,TCP因為 FireLens 會將其新增至輸入組態。

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

config-file-type

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

注意

託管在 上的任務 AWS Fargate 僅支援file組態檔案類型。

config-file-value

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

重要

使用自訂組態檔案時,您必須指定與自訂組態檔案不同的路徑 FireLens 使用。Amazon 會為 Fluent Bit 和 /fluentd/etc/fluent.conf Fluentd ECS保留/fluent-bit/etc/fluent-bit.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:::amzn-s3-demo-bucket/fluent.conf | filepath" } } } ] }
注意

託管在 上的任務 AWS Fargate 僅支援file組態檔案類型。