跳轉到

CloudWatch Container Insights Addon Configuration 與成本優化

概念概覽

記錄 Amazon CloudWatch Observability EKS Addon 的 configuration-values 三個關鍵開關、三階段成本優化執行順序,以及 disable_metric_extraction 只能接受 boolean 而非 object 格式的關鍵陷阱(object 格式會觸發 CrashLoopBackOff)。

核心知識

Addon Configuration-Values 結構

configuration-values 為 JSON 格式,可部分覆蓋,未指定欄位維持預設值:

{
  "containerLogs": {
    "enabled": false
  },
  "agent": {
    "config": {
      "logs": {
        "metrics_collected": {
          "kubernetes": {
            "enhanced_container_insights": true,
            "disable_metric_extraction": true
          }
        }
      }
    }
  }
}

三個開關說明

設定 作用 影響範圍
containerLogs.enabled=false 停用 Fluent Bit DaemonSet,不再收集 container logs 所有 application log groups
enhanced_container_insights=true 啟用增強版 Container Insights 更豐富的 metrics 維度
disable_metric_extraction=true 停用所有 container/pod 層級 metrics extraction 無法選擇性停用,v1.0 schema 設計限制

disable_metric_extraction:只能是 boolean

CloudWatch Agent v1.0 schema 下**只接受 boolean**,傳入 object 格式會讓所有 cloudwatch-agent pods 進入 CrashLoopBackOff,v4.9.0 與 v4.10.1 兩個版本都會踩到:

# ❌ 錯誤:object 格式
disable_metric_extraction:
  container: true
  pod: true

# ✅ 正確:boolean
disable_metric_extraction: true

診斷指令:

kubectl logs <pod> -n amazon-cloudwatch --tail=30
# 搜尋:Expected: boolean, given: object

限制disable_metric_extraction: true 會停用**所有** container/pod 層級的 metric extraction,無法選擇性停用特定層級,這是 v1.0 schema 的設計限制。

三階段成本優化執行順序

按以下順序執行,每步驟後確認狀態再繼續,避免多個問題同時出現難以診斷:

Phase 1:Log Group Retention

# 查詢所有未設定 retention 的 log group
aws logs describe-log-groups \
  --query 'logGroups[?retentionInDays==`null`].[logGroupName]' \
  --output table
  • RetentionDays=None 表示永久保留,需補設(建議 7 天)
  • dataplanehost log group 容易在設定時遺漏,需特別確認

Phase 2:停用 Fluent Bit

透過 addon configuration 停用,不可直接 kubectl delete daemonset

aws eks update-addon \
  --cluster-name <cluster> \
  --addon-name amazon-cloudwatch-observability \
  --configuration-values '{"containerLogs":{"enabled":false}}'

停用前需確認有其他日誌路徑(self-managed Fluent Bit 或 Loki)。

Phase 3:停用細粒度 Metrics

aws eks update-addon \
  --cluster-name <cluster> \
  --addon-name amazon-cloudwatch-observability \
  --configuration-values '{"agent":{"config":{"logs":{"metrics_collected":{"kubernetes":{"disable_metric_extraction":true}}}}}}'

停用後需等待一個計費週期才能看到費用變化。

Addon 更新通用流程

# 1. 先查現有設定,避免覆蓋
aws eks describe-addon \
  --cluster-name <cluster> \
  --addon-name amazon-cloudwatch-observability \
  --query 'addon.configurationValues'

# 2. 更新 addon
aws eks update-addon \
  --cluster-name <cluster> \
  --addon-name amazon-cloudwatch-observability \
  --configuration-values '<json>'

# 3. 追蹤狀態(UPDATING → ACTIVE)
aws eks describe-addon \
  --cluster-name <cluster> \
  --addon-name amazon-cloudwatch-observability \
  --query 'addon.status'

# 4. 確認 DaemonSet 狀態變化
kubectl get ds -n amazon-cloudwatch

經驗教訓

  • disable_metric_extraction 在 CloudWatch Agent v1.0 下只能是 boolean(true/false),傳入 object 格式(如 {container: true, pod: true})會觸發 CrashLoopBackOff,v4.9.0 和 v4.10.1 兩個版本都有此問題,錯誤訊息需翻 pod logs 才能找到

  • 三階段成本優化(Log Retention → Fluent Bit → Metrics)要按順序執行,每步驟後確認狀態再繼續,避免多問題同時出現難以診斷

  • describe-log-groups 查 RetentionDays=None 是找出遺漏 retention 設定的標準方法;dataplane 和 host log group 容易遺漏,需特別補設

  • configuration-values 是 JSON 格式,可部分覆蓋,未指定的欄位保持預設值,更新前應先 describe 取得現有設定

  • addon 狀態轉換需要等待(UPDATING → ACTIVE),不是即時生效

  • 停用 metrics 後需等待一個計費週期才能看到費用實際變化

常見陷阱

  • disable_metric_extraction 使用 object 格式導致 CrashLoopBackOff,錯誤訊息 'Expected: boolean, given: object' 需手動翻 pod logs 才能找到,不直觀

  • 直接 kubectl delete daemonset 停用 Fluent Bit 是錯誤做法,必須透過 addon configuration 的 containerLogs.enabled=false 控制

  • dataplane 和 host log group 容易在設定 retention 時遺漏,需特別確認

  • 多階段優化同時進行時問題交疊,難以定位根因

最佳實踐

  • 永遠使用 boolean 格式:disable_metric_extraction 只能設 true 或 false,不可使用 object

  • 修改 addon 設定前先 describe 取得現有 configuration-values,避免覆蓋已有設定

  • 用 describe-log-groups 查 RetentionDays=None 找出所有未設定 retention 的 log group,包含 dataplane 和 host

  • 按 Log Retention → Fluent Bit → Metrics 三階段順序執行,每步驟後驗證再繼續

  • 停用 Fluent Bit 前確認有其他日誌收集路徑(self-managed Fluent Bit 或 Loki)

相關概念

來源 Sessions

日期 Session 貢獻摘要

| - | 423fd9da-802c-452a-8e2f-03de575f2126 | 融合自原始頁面 amazon-cloudwatch-observability-addon |


本概念頁面由 Semi-Brain Wiki 系統自動維護

最後更新: 2026-04-11