本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 Amazon ECS 日誌傳送至 CloudWatch
您可以在任務中設定容器,將日誌資訊傳送給 CloudWatch Logs。如果您為任務使用 Fargate 啟動類型,您可檢視容器的日誌。如果您使用 EC2 啟動類型,您可在單一便利位置檢視容器的不同日誌,並防止容器日誌佔用容器執行個體的磁碟空間。
注意
任務中容器所記錄的資訊類型,絕大部分取決於其 ENTRYPOINT
命令。在預設情況下,擷取的日誌會顯示您在本機執行容器時,通常會在互動式終端機中看見的命令輸出,其為 STDOUT
和 STDERR
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 或自訂 AMI,至少具有 ecs-init
套件1.9.0-1
的 版本。使用自訂 AMI 時,您必須在 docker run 陳述式或環境變數檔案中使用以下環境變數啟動代理程式時,指定 Amazon EC2 執行個體上的awslogs
記錄驅動程式可供使用。
ECS_AVAILABLE_LOGGING_DRIVERS=["json-file","
awslogs
"]
您的 Amazon ECS 容器執行個體也需要可用來啟動容器執行個體之 IAM 角色的 logs:CreateLogStream
和 logs:PutLogEvents
許可。在 Amazon ECS 中啟用 awslogs
日誌驅動程式支援前,如果您已建立 Amazon ECS 容器執行個體角色,您可能需要新增此許可。ecsTaskExecutionRole
在其被指派給任務時使用,且應該包含正確的許可。如需任務執行角色的相關資訊,請參閱 Amazon ECS 任務執行 IAM 角色。如果您的容器執行個體使用容器執行個體的受管 IAM 政策,則您的容器執行個體應該具有正確的許可。如需容器執行個體受管 IAM 政策的相關資訊,請參閱 Amazon ECS 容器執行個體 IAM 角色。