跳至內容

為什麼 Amazon ECS 容器日誌沒有傳送到 CloudWatch Logs?

1 分的閱讀內容
0

我的 Amazon Elastic Container Service (Amazon ECS) 容器日誌未如預期顯示在 Amazon CloudWatch Logs 中。

解決方法

修改 awslogs 日誌驅動程式

logConfiguration 參數新增到任務定義中的 awslogs 日誌驅動程式。對於具有多個容器的 Amazon ECS 任務,請為每個容器設定logConfiguration 參數。

如果您有 Amazon Elastic Compute Cloud (Amazon EC2) 啟動類型,請將 Amazon ECS 容器執行個體更新至 1.9.0 版或更新版本

如果您的容器執行個體未使用 Amazon ECS 最佳化的 Amazon Machine Image (AMI),請執行下列環境變數來啟動容器代理程式:

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

**注意:**在容器執行個體上指定 awslogs 日誌驅動程式。

如需詳細資訊,請參閱安裝 Amazon ECS 容器代理程式

新增必要的 IAM 角色權限

AWS Fargate 啟動類型

AmazonECSTaskExecutionRolePolicy 政策附加到您的 Amazon ECS 任務執行 AWS Identity and Access Management (IAM) 角色。該政策包含必要的 logs:CreateLogStreamlogs:PutLogEvents 權限。或者,建立自訂 IAM 政策並新增必要的權限。

不具有任務執行 IAM 角色的 Amazon EC2 啟動類型任務

AmazonEC2ContainerServiceforEC2Role 政策附加到容器執行個體 IAM 角色。此政策包含必要的 logs:CreateLogStreamlogs:PutLogEvents 權限。或者,建立自訂 IAM 政策並新增必要的權限。

具有任務執行 IAM 角色的 Amazon EC2 啟動類型任務

container agent configuration (容器代理程式組態),將 ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE 參數更新為 true

**注意:**在 Amazon ECS 最佳化的 AMI (版本 1.16.0-1 或更新版本) 上,容器代理程式參數的預設值為 true,在 Windows 上則為 false

檢查網路組態

如果您的任務在沒有網際網路閘道的 Amazon Virtual Private Cloud (Amazon VPC) 中使用 awslogs 日誌驅動程式,請為 CloudWatch Logs 建立介面 VPC 端點。選擇 com.amazonaws.Region.logs 作為服務。

檢查容器日誌層級組態

awslogs 日誌驅動程式會將 STDOUTSTDERR I/O 串流從 Docker 傳遞到 CloudWatch Logs。

若要設定您的日誌,請更新您的應用程式,以將日誌傳送至 STDOUTSTDERR I/O 串流。然後在容器建置時,透過環境變數或組態檔案來設定應用程式的日誌層級。

相關資訊

Amazon ECS 的監控工具

如何對 Amazon ECS 或 Amazon EKS 容器日誌遺失的問題進行疑難排解?

將 Amazon ECS 日誌傳送到 CloudWatch

AWS 官方已更新 5 個月前