將 Amazon ECS 日誌傳送至 AWS 服務或 AWS Partner - Amazon Elastic Container Service

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

將 Amazon ECS 日誌傳送至 AWS 服務或 AWS Partner

您可以使用 FireLens for Amazon ECS 來使用任務定義參數,將日誌路由到 AWS 服務或 AWS Partner Network (APN) 目的地,以進行日誌儲存和分析。 AWS Partner Network 是一個全球合作夥伴社群,利用計劃、專業知識和資源來建置、行銷和銷售客戶產品。如需詳細資訊,請參閱 AWS Partner。FireLens 使用 Fluentd 和 Fluent Bit。我們提供 AWS for Fluent Bit 映像,或者您也可以使用自己的 Fluentd 或 Fluent Bit 映像。

根據預設,Amazon ECS 會設定容器相依性,讓 Firelens 容器在使用該容器的任何容器之前啟動。Firelens 容器也會在使用該容器的所有容器停止後停止。

使用 FireLens for Amazon ECS 時,請考量下列事項:

  • 建議您將 my_service_新增至日誌容器名稱,以便在 主控台中輕鬆區分容器名稱。

  • Amazon ECS 預設會在應用程式容器與FireLens容器之間新增啟動容器順序相依性。當您在應用程式容器與FireLens容器之間指定容器順序時,會覆寫預設的啟動容器順序。

  • 託管於 Linux 上的 AWS Fargate 和 Linux 上的 Amazon EC2 的任務支援 Amazon ECS 的 FireLens。Windows 容器不支援 FireLens。

    如需如何為 Windows 容器設定集中式記錄的相關資訊,請參閱 Centralized logging for Windows containers on Amazon ECS using Fluent Bit (《使用 Fluent Bit 為 Amazon ECS 上的 Windows 容器設定集中式記錄》)。

  • 您可以使用 AWS CloudFormation 範本來設定 Amazon ECS FireLens的 。如需詳細資訊,請參閱《AWS CloudFormation 使用者指南》中的 AWS::ECS::TaskDefinition FirelensConfiguration

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

  • 對於使用 bridge 網路模式的工作,具有 FireLens 配置的容器必須在任何依賴該模式的應用程式容器啟動之前啟動。若要控制容器的起始順序,請在工作定義中使用相依性條件。如需詳細資訊,請參閱容器相依性

    注意

    如果您在使用 FireLens 配置的容器定義中使用相依性條件參數,請確定每個容器都有 STARTHEALTHY 條件需求。

  • 根據預設,FireLens 將叢集和任務定義名稱以及叢集的 Amazon Resource Name (ARN) 作為中繼資料索引鍵新增到 stout/stderr 容器紀錄。以下是中繼資料格式的範例。

    "ecs_cluster": "cluster-name", "ecs_task_arn": "arn:aws:ecs:region:111122223333:task/cluster-name/f2ad7dba413f45ddb4EXAMPLE", "ecs_task_definition": "task-def-name:revision",

    如果您不想在紀錄中使用中繼資料,請在任務定義 firelensConfiguration 部分中將 false 設定為 enable-ecs-log-metadata

    "firelensConfiguration":{ "type":"fluentbit", "options":{ "enable-ecs-log-metadata":"false", "config-file-type":"file", "config-file-value":"/extra.conf" }

若要使用此功能,您必須為任務建立 IAM 角色,以提供使用任務所需的任何 AWS 服務所需的許可。例如,如果容器正在將日誌路由到 Firehose,任務需要呼叫 firehose:PutRecordBatch API 的許可。如需詳細資訊,請參閱 《IAM 使用者指南》中的新增和移除 IAM 身分許可

在下列情況下,您的任務也可能需要 Amazon ECS 任務執行角色。如需詳細資訊,請參閱Amazon ECS 任務執行 IAM 角色

  • 如果您的任務託管在 Fargate 上,而且您要從 Amazon ECR 提取容器映像,或在日誌組態 AWS Secrets Manager 中參考來自 的敏感資料,則必須包含任務執行 IAM 角色。

  • 當您使用 Amazon S3 中託管的自訂組態檔案時,您的任務執行 IAM 角色必須包含 s3:GetObject許可。

如需如何搭配 Amazon ECS 使用多個組態檔案的資訊,包括您在 Amazon S3 中託管的檔案或檔案,請參閱 ECS 上的 Fluent Bit 啟動程序、多組態支援

如需範例組態的資訊,請參閱 Amazon ECS 任務定義範例:將日誌路由至 FireLens