View a markdown version of this page

將 Amazon ECS 日誌傳送至 CloudWatch - Amazon Elastic Container Service

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

將 Amazon ECS 日誌傳送至 CloudWatch

您可以在任務中設定容器,將日誌資訊傳送給 CloudWatch Logs。如果正為任務使用 Fargate,您可檢視容器的日誌。如果正使用 EC2,您可在單一便利位置檢視容器的不同日誌,並防止容器日誌佔用容器執行個體的磁碟空間。

注意

任務中容器所記錄的資訊類型,絕大部分取決於其 ENTRYPOINT 命令。在預設情況下,擷取的日誌會顯示您在本機執行容器時,通常會在互動式終端機中看見的命令輸出,其為 STDOUTSTDERR I/O 串流。awslogs 日誌驅動程式只會將這些日誌從 Docker 傳遞至 CloudWatch Logs。如需 Docker 如何處理日誌的詳細資訊,包括擷取不同檔案資料或串流的替代方法,請參閱 Docker 文件中的檢視容器或服務日誌

若要將系統日誌從 Amazon ECS 容器執行個體傳送至 CloudWatch Logs,請參閱《Amazon CloudWatch Logs 使用者指南》中的監控日誌檔案CloudWatch Logs 配額

Fargate

如果正為任務使用 Fargate,您需要將所需的 logConfiguration 參數新增至任務定義,以開啟 awslogs 日誌驅動程式。如需詳細資訊,請參閱Amazon ECS 任務定義範例:將日誌路由至 CloudWatch

對於 Fargate 上的 Windows 容器,當任務定義參數包含特殊字元 (例如 & \ < > ^ |) 時,請執行下列任一選項:

  • 在整個參數字串前後加上雙引號,並新增逸出字元 (\)

    範例

    "awslogs-multiline-pattern": "\"^[|DEBUG|INFO|WARNING|ERROR\"",
  • 在每個特殊字元前後加上逸出字元 (^)

    範例

    "awslogs-multiline-pattern": "^^[^|DEBUG^|INFO^|WARNING^|ERROR",

EC2

如果對任務使用 EC2,並且想要開啟 awslogs 日誌驅動程式,則 Amazon ECS 容器執行個體需要至少 1.9.0 版的容器代理程式。如需如何檢查代理程式版本及更新至最新版本的資訊,請參閱「更新 Amazon ECS 容器代理程式」。

注意

您必須使用 Amazon ECS 最佳化 AMI,或至少具有 1.9.0-1ecs-init 套件的自訂 AMI。使用自訂 AMI 時,您必須透過在 docker run 陳述式或環境變數檔案中使用下列環境變數,確保啟動代理程式時 Amazon EC2 執行個體上可使用 awslogs 記錄驅動程式。

ECS_AVAILABLE_LOGGING_DRIVERS=["json-file","awslogs"]

您的 Amazon ECS 容器執行個體也需要可用來啟動容器執行個體之 IAM 角色的 logs:CreateLogStreamlogs:PutLogEvents 許可。在 Amazon ECS 中啟用 awslogs 日誌驅動程式支援前,如果您已建立 Amazon ECS 容器執行個體角色,您可能需要新增此許可。ecsTaskExecutionRole 在其被指派給任務時使用,且應該包含正確的許可。如需有關任務執行角色的資訊,請參閱 Amazon ECS 任務執行 IAM 角色。如果您的容器執行個體使用容器執行個體的受管 IAM 政策,則您的容器執行個體應該具有正確的許可。如需有關容器執行個體受管 IAM 政策的資訊,請參閱 Amazon ECS 容器執行個體 IAM 角色