跳至內容

如何使用 CloudWatch 監控 Amazon ECS 容器日誌?

3 分的閱讀內容
0

我想使​​用 Amazon CloudWatch 來監控 Amazon Elastic Container Service (Amazon ECS) 容器日誌。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

設定您的日誌驅動程式

您可以使用 Amazon ECS 主控台或 JSON 編輯器來設定日誌驅動程式。

使用 Amazon ECS 主控台

請完成下列步驟:

  1. 開啟 Amazon ECS console (Amazon ECS 主控台)。
  2. 在導覽窗格中選擇 Task definitions (任務定義),然後選擇 Create new task definition (建立新任務定義)。
    **注意:**若要更新現有任務定義,請選取任務定義,然後選擇 Create new revision (建立新修訂版本)。
  3. Create new task definition (建立新任務定義) 頁面的 Task definition configuration (工作定義組態) 區段中,輸入您的任務定義系列名稱。
  4. Infrastructure requirements (基礎架構需求) 區段中,選擇您的啟動類型。
  5. Container (容器) 區段中,於 Logging (記錄) 中選擇 Use log collection (使用日誌集合)。
  6. 對於下列金鑰,請保留預設值。如果欄位為空,請輸入值:
    awslogs-group
    awslogs-region
    awslogs-stream-prefix
    **注意:**如果日誌群組不存在,請將 awslogs-create-group 參數設為 True
  7. 請確認任務執行 AWS Identity and Access Management (IAM) 角色權限包含 CreateLogGroup 動作。
  8. 選擇 Create (建立)。

使用 JSON 編輯器

若要在 ECS 任務定義中定義 LogConfiguration 參數,請將 ECS 任務定義範本輸入主控台的 JSON 編輯器。

組態範例:

"logConfiguration":
   "logDriver": "awslogs",
  "options": {
    "awslogs-group": "/ecs/my-log-group",
    "awslogs-region": "region-code",
    "awslogs-stream-prefix": "ecs"
  }
}

**注意:**將 my-log-group 替換為您的日誌群組名稱。

如需詳細資訊,請參閱 Amazon ECS 任務定義: 將日誌路由到 CloudWatch,並將 Amazon ECS 日誌傳送到 CloudWatch

如需有關日誌選項的詳細資訊,請參閱 Docker 網站上的 Amazon CloudWatch Logs 選項

監控容器日誌並對其進行疑難排解

分析容器日誌

若要使用 CloudWatch Logs Insights 來查詢日誌,請完成下列步驟:

  1. 開啟 CloudWatch console (CloudWatch 主控台)。

  2. 在瀏覽窗格中,選擇 Logs

  3. 選擇 Logs Insights

  4. 選取您的日誌群組。

  5. 輸入您的查詢。

  6. 選擇 Run query (執行查詢)。

  7. 搜尋錯誤關鍵字,以對應用程式問題進行疑難排解。如果您的應用程式日誌包含回應時間,請分析緩慢的請求。

    查詢範例:

    fields @timestamp, @message  
    | filter @message like /error/  
    | sort @timestamp desc  
    
    
    fields @timestamp, @message, response_time  
    | filter response_time > 2000  
    | sort response_time desc

如需詳細資訊,請參閱使用 CloudWatch Logs Insights 分析日誌資料

建立警示

請完成下列步驟:

  1. 從日誌事件建立指標篩選器
  2. 建立 CloudWatch 警示

對錯誤進行疑難排解

若要對 OutOfMemoryConnectionTimeout 錯誤進行疑難排解,請參閱如何對 Fargate 上 Amazon ECS 任務的高 CPU 使用率問題進行疑難排解?

若要對大量的 5xx HTTP 狀態碼進行疑難排解,請參閱 HTTP 500: 內部伺服器錯誤

與 AWS 服務整合

使用訂閱來存取來自 CloudWatch Logs 的即時日誌事件摘要。CloudWatch 會將日誌事件提供給 Amazon Kinesis 串流或 AWS Lambda 等服務,以處理、分析或載入其他系統。

控制 CloudWatch Logs 的成本

修改保留原則

最佳做法是在開發環境中使用較短的保留期,而在生產環境中則保留日誌較長的時間。

您可以選擇的保留期範圍從 1 天至 10 年,也可以選擇無限期保留日誌。為避免不必要的成本,請檢閱保留設定,以確認保留日誌的時間不會超過所需時間。

若要 set retention policies (設定保留政策),請完成下列步驟:

  1. 開啟 CloudWatch console (CloudWatch 主控台)。
  2. 在瀏覽窗格中,選擇 Logs
  3. 選擇 Log groups (日誌群組)。
  4. 選取您的日誌群組。
  5. 選擇 Actions (動作),然後選擇 Edit retention setting (編輯保留設定)。
  6. 選取保留期。例如,選擇 1 週、1 個月或自訂值。
  7. 選擇 Save (儲存)。

或者,執行以下 put-retention-policy AWS CLI 命令:

aws logs put-retention-policy --log-group-name "/ecs/production-web-app" --retention-in-days retention-period>

**注意:**將 log-group-name 替換為您的日誌組名稱,將 retention-period 替換為您的保留期。

分析日誌指標

若要降低並最佳化成本,請使用 AWS Cost Explorer 分析與每個日誌群組相關的成本。

匯出和封存日誌

若要以較低的成本進行長期儲存,請將日誌移至 Amazon Simple Storage Service (Amazon S3) 或封存解決方案。若要將日誌匯出至 Amazon S3,請使用 CloudWatch 主控台或執行 create-export-task 命令:

aws logs create-export-task --log-group-name "/ecs/production-web-app" \--from start-timestamp --to end-timestamp --destination "s3-log-archive"

**注意:**將 log-group-name 替換為您的日誌群組名稱,將 start-timestamp 替換為您的開始時間,將 end-timestamp 替換為您的結束時間。

實作 Amazon S3 Lifecycle 政策

使用 S3 Lifecycle 組態,在指定時間後自動將舊日誌轉換為 Amazon S3 Glacier,以進行封存或刪除。

避免過度記錄

將應用程式設定為僅傳送相關日誌。如需詳細資訊,請參閱記錄最佳做法

相關資訊

Amazon Elastic Container Service 中的記錄與監控

AWS 官方已更新 1 年前