將 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 角色