使用 Amazon CloudWatch 可觀測性 EKS 附加元件或 Helm Chart 安裝 CloudWatch 代理程式 Amazon CloudWatch - Amazon CloudWatch

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon CloudWatch 可觀測性 EKS 附加元件或 Helm Chart 安裝 CloudWatch 代理程式 Amazon CloudWatch

您可以使用 Amazon CloudWatch 可觀測性 EKS 附加元件或 Amazon CloudWatch 可觀測性 Helm Chart,在 Amazon EKS 叢集上安裝 CloudWatch Agent 和 Fluent 位元代理程式。您也可以使用 Helm Chart,在非 Amazon EKS 託管的 Kubernetes 叢集上安裝 CloudWatch Agent 和 Fluent 位元代理程式。

根據預設,在 Amazon EKS 叢集上使用任一方法,可讓容器洞見同時具有 Amazon EKS 和 CloudWatch Application Signals 的增強可觀測性。這兩個功能都可協助您從叢集收集基礎設施指標、應用程式效能遙測和容器日誌。

使用 Container Insights 搭配 Amazon EKS 的增強可觀測性,Container Insights 指標會按觀測,而不是存放或擷取的指標計費。對於 Application Signals,帳單以發往應用程式的傳入請求、來自應用程式的傳出請求以及每個已設定的服務水準目標 (SLO) 來計費。收到的每個傳入請求都會產生一個應用程式訊號,而發出的每個傳出請求也會產生一個應用程式訊號。每個 SLO 會在每個測量週期建立兩個應用程式訊號。如需 CloudWatch 定價的詳細資訊,請參閱 Amazon CloudWatch 定價

這兩種方法都會在 Amazon EKS 叢集的 Linux 和 Windows 工作者節點上啟用 Container Insights。若要在 Windows 上啟用 Container Insights,您必須使用 Amazon EKS 附加元件或 Helm Chart 的 1.5.0 版或更新版本。目前,Amazon EKS 叢集中的 Windows 不支援 Application Signals。

Amazon CloudWatch Observability EKS 附加元件適用於使用 Kubernetes 版本 1.23 或更新版本執行的 Amazon EKS 叢集。

安裝附加元件或 Helm Chart 時,您還必須授予 IAM 許可,讓 CloudWatch 代理程式能夠將指標、日誌和追蹤傳送至 CloudWatch。有兩種方式可以進行:

  • 將政策連接至工作節點的 IAM 角色。此選項會授予工作節點許可,以便將遙測傳送至 CloudWatch。

  • 針對代理程式 Pod 的服務帳戶使用 IAM 角色,並將政策連接至此角色。這僅適用於 Amazon EKS 叢集。此選項僅可授予 CloudWatch 對適當代理程式 Pod 的存取權。

選項 1:使用 EKS Pod Identity 安裝

如果您使用 3.1.0 版或更新版本的附加元件,您可以使用 EKS Pod Identity 將必要的許可授予附加元件。EKS Pod Identity 是建議的選項,並提供最低權限、憑證輪換和可稽核性等優點。此外,使用 EKS Pod Identity 可讓您安裝 EKS 附加元件,做為叢集建立本身的一部分。

若要使用此方法,請先遵循 EKS Pod Identity 關聯步驟來建立 IAM 角色並設定 EKS Pod Identity 代理程式。

然後安裝 Amazon CloudWatch 可觀測性 EKS 附加元件。若要安裝附加元件,您可以使用 AWS CLI、Amazon EKS 主控台 AWS CloudFormation、 或 Terraform。

AWS CLI
使用 AWS CLI 安裝 Amazon CloudWatch 可觀測性 EKS 附加元件

輸入下列命令:my-cluster-name 將 取代為您的叢集名稱,並將 111122223333 取代為您的 accound ID。將 my-role 取代為您在 EKS Pod Identity 關聯步驟中建立的 IAM 角色。

aws iam attach-role-policy \ --role-name my-role \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy aws eks create-addon \ --addon-name amazon-cloudwatch-observability \ --cluster-name my-cluster-name \ --pod-identity-associations serviceAccount=cloudwatch-agent,roleArn=arn:aws:iam::111122223333:role/my-role
Amazon EKS console
使用 Amazon EKS 主控台來新增 Amazon CloudWatch Observability EKS 附加元件
  1. https://console.aws.amazon.com/eks/home#/clusters 開啟 Amazon EKS 主控台。

  2. 在左側導覽窗格中選擇叢集

  3. 選擇要為其設定 Amazon CloudWatch Observability EKS 附加元件的叢集名稱。

  4. 選擇附加元件索引標籤。

  5. 選擇取得更多附加元件

  6. 選取附加元件頁面上,執行下列動作:

    1. Amazon EKS-addons 區段,選取 Amazon CloudWatch 可觀測性核取方塊。

    2. 選擇 Next (下一步)

  7. 設定選取的附加元件設定頁面上,執行以下操作:

    1. 選取您要使用的版本

    2. 針對附加元件存取,選取 EKS Pod Identity

    3. 如果您沒有設定 IAM 角色,請選擇建立建議的角色,然後選擇下一步,直到您在步驟 3 名稱、檢閱和建立。您可以視需要變更角色名稱,否則請選擇建立角色,然後返回附加元件頁面,然後選取您剛建立的 IAM 角色。

    4. (選用) 您可以展開選用組態設定。對於衝突解決方法,如果您選取覆寫,就可以使用 Amazon EKS 附加元件的設定來覆寫現有附加元件的一種或多種設定。若未啟用此選項,而且有設定與現有設定發生衝突,則操作會失敗。您可以使用產生的錯誤訊息對此衝突進行疑難排解。在選取此選項之前,請確認 Amazon EKS 附加元件未管理您需要自我管理的設定。

    5. 選擇 Next (下一步)

  8. 檢閱並新增頁面上,選擇建立。附加元件安裝完成後,您會看到已安裝的附加元件。

AWS CloudFormation
使用 AWS CloudFormation 安裝 Amazon CloudWatch 可觀測性 EKS 附加元件
  1. 首先,執行下列 AWS CLI 命令,將必要的 IAM 政策連接至您的 IAM 角色。將 my-role 取代為您在 EKS Pod Identity 關聯步驟中建立的角色。

    aws iam attach-role-policy \ --role-name my-role \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
  2. 然後建立下列資源。my-cluster-name 將 取代為您的叢集名稱、將 111122223333 取代為您的 帳戶 ID,並將 my-role 取代為 EKS Pod Identity 關聯步驟中建立的 IAM 角色。如需詳細資訊,請參閱 AWS::EKS::Addon

    { "Resources": { "EKSAddOn": { "Type": "AWS::EKS::Addon", "Properties": { "AddonName": "amazon-cloudwatch-observability", "ClusterName": "my-cluster-name", "PodIdentityAssociations": [ { "ServiceAccount": "cloudwatch-agent", "RoleArn": "arn:aws:iam::111122223333:role/my-role" } ] } } } }
Terraform
使用 Terraform 來安裝 Amazon CloudWatch Observability EKS 附加元件
  1. 使用下列項目。my-cluster-name 將 取代為您的叢集名稱,將 111122223333 取代為您的 帳戶 ID,並將 my-service-account-role 取代為在 EKS Pod Identity 關聯步驟中建立的 IAM 角色。

    如需詳細資訊,請參閱 Terraform 文件中的 Resource: aws_eks_addon

  2. resource "aws_iam_role_policy_attachment" "CloudWatchAgentServerPolicy" { policy_arn = "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy" role = "my-role" } resource "aws_eks_addon" "example" { cluster_name = "my-cluster-name" addon_name = "amazon-cloudwatch-observability" pod_identity_associations { roleArn = "arn:aws:iam::111122223333:role/my-role" serviceAccount = "cloudwatch-agent" } }

選項 2:使用 IAM 許可在工作者節點上安裝

若要使用此方法,請先輸入下列命令,以將 CloudWatchAgentServerPolicy IAM 政策附接至您的工作節點。在此命令中,使用 Kubernetes 工作節點使用的 IAM 角色,來取代 my-worker-node-role

aws iam attach-role-policy \ --role-name my-worker-node-role \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy

然後安裝 Amazon CloudWatch 可觀測性 EKS 附加元件。若要安裝附加元件,您可以使用 AWS CLI、 主控台 AWS CloudFormation、 或 Terraform。

AWS CLI
使用 AWS CLI 安裝 Amazon CloudWatch 可觀測性 EKS 附加元件

輸入以下命令。使用您叢集的名稱取代 my-cluster-name

aws eks create-addon --addon-name amazon-cloudwatch-observability --cluster-name my-cluster-name
Amazon EKS console
使用 Amazon EKS 主控台來新增 Amazon CloudWatch Observability EKS 附加元件
  1. https://console.aws.amazon.com/eks/home#/clusters 開啟 Amazon EKS 主控台。

  2. 在左側導覽窗格中選擇叢集

  3. 選擇要為其設定 Amazon CloudWatch Observability EKS 附加元件的叢集名稱。

  4. 選擇附加元件索引標籤。

  5. 選擇取得更多附加元件

  6. 選取附加元件頁面上,執行下列動作:

    1. Amazon EKS-addons 區段,選取 Amazon CloudWatch 可觀測性核取方塊。

    2. 選擇 Next (下一步)

  7. 設定選取的附加元件設定頁面上,執行以下操作:

    1. 選取您要使用的版本

    2. (選用) 您可以展開選用組態設定。對於衝突解決方法,如果您選取覆寫,就可以使用 Amazon EKS 附加元件的設定來覆寫現有附加元件的一種或多種設定。若未啟用此選項,而且有設定與現有設定發生衝突,則操作會失敗。您可以使用產生的錯誤訊息對此衝突進行疑難排解。在選取此選項之前,請確認 Amazon EKS 附加元件未管理您需要自我管理的設定。

    3. 選擇 Next (下一步)

  8. 檢閱並新增頁面上,選擇建立。附加元件安裝完成後,您會看到已安裝的附加元件。

AWS CloudFormation
使用 AWS CloudFormation 安裝 Amazon CloudWatch 可觀測性 EKS 附加元件

使用您叢集的名稱取代 my-cluster-name。如需詳細資訊,請參閱 AWS::EKS::Addon

{ "Resources": { "EKSAddOn": { "Type": "AWS::EKS::Addon", "Properties": { "AddonName": "amazon-cloudwatch-observability", "ClusterName": "my-cluster-name" } } } }
Helm chart
使用 amazon-cloudwatch-observability Helm Chart
  1. 您必須安裝 Helm 才能使用此圖表。如需安裝 Helm 的詳細資訊,請參閱 Helm 文件

  2. 安裝 Helm 之後,請輸入下列命令。將 my-cluster-name 取代為您的叢集名稱,並將 my-cluster-region 取代為叢集執行所在的區域。

    helm repo add aws-observability https://aws-observability.github.io/helm-charts helm repo update aws-observability helm install --wait --create-namespace --namespace amazon-cloudwatch amazon-cloudwatch-observability aws-observability/amazon-cloudwatch-observability --set clusterName=my-cluster-name --set region=my-cluster-region
Terraform
使用 Terraform 來安裝 Amazon CloudWatch Observability EKS 附加元件

使用您叢集的名稱取代 my-cluster-name。如需詳細資訊,請參閱 Resource: aws_eks_addon

resource "aws_eks_addon" "example" { addon_name = "amazon-cloudwatch-observability" cluster_name = "my-cluster-name" }

選項 3:使用 IAM 服務帳戶角色安裝 (僅適用於使用 附加元件的 )

只有在您使用 Amazon CloudWatch 可觀測性 EKS 附加元件時,此方法才有效。使用此方法之前,請驗證下列先決條件:

  • 您具備的功能性 Amazon EKS 叢集,內含在支援 Container Insights 的其中一個 AWS 區域 中附接的節點。如需支援區域的清單,請參閱 Container Insights

  • 您已安裝 kubectl 並設定叢集。如需詳細資訊,請參閱《Amazon EKS 使用者指南》中的安裝 kubectl

  • 您已安裝 eksctl。如需詳細資訊,請參閱 Amazon EKS 使用者指南中的安裝或更新 eksctl

AWS CLI
使用 AWS CLI 使用 IAM 服務帳戶角色安裝 Amazon CloudWatch 可觀測性 EKS 附加元件
  1. 如果叢集尚未提供 OpenID Connect (OIDC) 供應商,請輸入下列命令建立一個。如需詳細資訊,請參閱 Amazon EKS 使用者指南中的設定要擔任 IAM 角色的 Kubernetes 服務帳戶

    eksctl utils associate-iam-oidc-provider --cluster my-cluster-name --approve
  2. 輸入下列命令以建立連接 CloudWatchAgentServerPolicy 政策的 IAM 角色,並設定代理程式服務帳戶以使用 OIDC 擔任該角色。使用您的叢集名稱取代 my-cluster-name,然後用您想要與之關聯的服務帳戶來取代 my-service-account-role。如果角色不存在,eksctl 會為您建立。

    eksctl create iamserviceaccount \ --name cloudwatch-agent \ --namespace amazon-cloudwatch --cluster my-cluster-name \ --role-name my-service-account-role \ --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --role-only \ --approve
  3. 輸入下列命令來安裝附加元件。使用您的叢集名稱取代 my-cluster-name、使用您的帳戶 ID 取代 111122223333,然後使用之前步驟建立的 IAM 角色取代 my-service-account-role

    aws eks create-addon --addon-name amazon-cloudwatch-observability --cluster-name my-cluster-name --service-account-role-arn arn:aws:iam::111122223333:role/my-service-account-role
Amazon EKS console
使用 主控台,使用 IAM 服務帳戶角色安裝 Amazon CloudWatch 可觀測性 EKS 附加元件
  1. https://console.aws.amazon.com/eks/home#/clusters 開啟 Amazon EKS 主控台。

  2. 在左側導覽窗格中選擇叢集

  3. 選擇要為其設定 Amazon CloudWatch Observability EKS 附加元件的叢集名稱。

  4. 選擇附加元件索引標籤。

  5. 選擇取得更多附加元件

  6. 選取附加元件頁面上,執行下列動作:

    1. Amazon EKS-addons 區段,選取 Amazon CloudWatch 可觀測性核取方塊。

    2. 選擇 Next (下一步)

  7. 設定選取的附加元件設定頁面上,執行以下操作:

    1. 選取您要使用的版本

    2. 針對附加元件存取,選取服務帳戶的 IAM 角色 (IRSA)

    3. 附加元件存取方塊中選取 IAM 角色。

    4. (選用) 您可以展開選用組態設定。對於衝突解決方法,如果您選取覆寫,就可以使用 Amazon EKS 附加元件的設定來覆寫現有附加元件的一種或多種設定。若未啟用此選項,而且有設定與現有設定發生衝突,則操作會失敗。您可以使用產生的錯誤訊息對此衝突進行疑難排解。在選取此選項之前,請確認 Amazon EKS 附加元件未管理您需要自我管理的設定。

    5. 選擇 Next (下一步)

  8. 檢閱並新增頁面上,選擇建立。附加元件安裝完成後,您會看到已安裝的附加元件。

Amazon EKS 混合節點的考量事項

節點層級指標不適用於混合節點,因為 Container Insights 取決於節點層級指標 EC2 執行個體中繼資料服務 (IMDS) 的可用性。叢集、工作負載Pod、 和容器層級指標可用於混合節點。

依照先前章節中的步驟安裝附加元件後,您必須更新附加元件資訊清單,以便代理程式可以在混合節點上成功執行。編輯叢集中的amazoncloudwatchagents資源,以新增RUN_WITH_IRSA環境變數以符合下列項目。

kubectl edit amazoncloudwatchagents -n amazon-cloudwatch cloudwatch-agent
apiVersion: v1
       items:
       - apiVersion: cloudwatch.aws.amazon.com/v1alpha1
         kind: AmazonCloudWatchAgent
         metadata:
           ...
           name: cloudwatch-agent
           namespace: amazon-cloudwatch
           ...
         spec:
           ...
           env:
           - name: RUN_WITH_IRSA # <-- Add this
             value: "True" # <-- Add this
           - name: K8S_NODE_NAME
             valueFrom:
               fieldRef:
                 fieldPath: spec.nodeName
                 ...
       

(選用) 額外組態

選擇不收集容器日誌

依預設,附加元件會使用 Fluent Bit,從所有 Pod 中收集容器日誌,然後將日誌傳送至 CloudWatch Logs。如需有關收集哪些日誌的資訊,請參閱 設定 Fluent Bit

注意

附加元件或 Helm Chart 都不會管理叢集中現有的 Fluentd 或 Fluent Bit 資源。您可以在安裝附加元件或 Helm Chart 之前刪除現有的 Fluentd 或 Fluent Bit 資源。或者,若要保留現有的設定,並避免讓附加元件或 Helm Chart 也無法安裝 Fluent Bit,您可以按照本節中的指示停用它。

若要在使用 Amazon CloudWatch 可觀測性 EKS 附加元件時選擇不收集容器日誌,請在建立或更新附加元件時傳遞下列選項:

--configuration-values '{ "containerLogs": { "enabled": false } }'

若要在使用 Helm Chart 時選擇不收集容器日誌,請在建立或更新附加元件時傳遞下列選項:

--set containerLogs.enabled=false

使用自訂 Fluent Bit 組態

從 Amazon CloudWatch 可觀測性 EKS 附加元件的 1.7.0 版開始,您可以在建立或更新附加元件或 Helm Chart 時修改 Fluent Bit 組態。您可以在附加元件進階組態的containerLogs根層級區段中提供自訂 Fluent Bit 組態,或在 Helm Chart 中提供值覆寫。在本節中,您可以在 config 區段 (適用於 Linux) 或 configWindows區段 (適用於 Windows) 中提供自訂 Fluent Bit 組態。config 會進一步細分為下列子區段:

  • service– 本節代表定義 Fluent Bit SERVICE 引擎全域行為的組態。

  • customParsers– 本節代表PARSER您希望包含的任何全域 ,能夠取得非結構化日誌項目,並為它們提供結構,使其更容易處理和進一步篩選。

  • extraFiles– 本節可用於提供要包含的其他 Fluent Bit conf 檔案。根據預設,會包含下列 3 個conf檔案:。

    • application-log.conf– 用於將應用程式日誌從叢集傳送至 CloudWatch Logs /aws/containerinsights/my-cluster-name/application中日誌群組conf的檔案。

    • dataplane-log.conf– 用於將對應於叢集資料平面元件的日誌conf檔案,包括 CRI 日誌、kubelet 日誌、kube-proxy 日誌和 Amazon VPC CNI 日誌傳送至 CloudWatch Logs /aws/containerinsights/my-cluster-name/dataplane中的日誌群組。

    • host-log.confconf用於將日誌從 /var/log/dmesg/var/log/messages和 Linux /var/log/secure上的 和 Windows winlogs上的 和 系統傳送至 CloudWatch /aws/containerinsights/my-cluster-name/host中的日誌群組。

注意

即使您只修改子區段中的一個欄位,也請提供每個個別區段的完整組態。我們建議您使用下方提供的預設組態做為基準,然後進行相應修改,以免停用預設啟用的功能。您可以在修改 Amazon EKS 附加元件的進階組態,或提供 Helm Chart 的值覆寫時,使用下列 YAML 組態。

若要尋找叢集的 config區段,請參閱 GitHub 上的 aws-observability / helm-charts,並尋找與您安裝之附加元件或 Helm Chart 版本對應的版本。然後導覽至 ,/charts/amazon-cloudwatch-observability/values.yaml在 下的 config 區段中尋找 configWindows 區段 (適用於 Linux) 和 fluentBit區段 (適用於 Windows)containerLogs

例如,您可以在這裡找到 1.7.0 版的預設 Fluent Bit 組態。

當您使用 Amazon EKS 附加元件的進階組態提供時,或當您提供它做為 Helm 安裝的值覆寫時,建議您提供config做為 YAML。請確定 YAML 符合下列結構。

containerLogs: fluentBit: config: service: | ... customParsers: | ... extraFiles: application-log.conf: | ... dataplane-log.conf: | ... host-log.conf: | ...

下列範例會將排清間隔的全域設定config變更為 45 秒。即使唯一修改是 Flush 欄位,您仍然必須提供服務子區段的完整SERVICE定義。由於此範例未指定其他子區段的覆寫,因此預設會用於它們。

containerLogs: fluentBit: config: service: | [SERVICE] Flush 45 Grace 30 Log_Level error Daemon off Parsers_File parsers.conf storage.path /var/fluent-bit/state/flb-storage/ storage.sync normal storage.checksum off storage.backlog.mem_limit 5M

下列範例組態包含額外的 Fluent 位元conf檔案。在此範例中,我們正在 my-service.conf 下新增自訂,extraFiles除了三個預設的 之外,還會包含它extraFiles

containerLogs: fluentBit: config: extraFiles: my-service.conf: | [INPUT] Name tail Tag myservice.* Path /var/log/containers/*myservice*.log DB /var/fluent-bit/state/flb_myservice.db Mem_Buf_Limit 5MB Skip_Long_Lines On Ignore_Older 1d Refresh_Interval 10 [OUTPUT] Name cloudwatch_logs Match myservice.* region ${AWS_REGION} log_group_name /aws/containerinsights/${CLUSTER_NAME}/myservice log_stream_prefix ${HOST_NAME}- auto_create_group true

下一個範例會從 完全移除現有conf檔案extraFiles。這會以空字串覆寫 ,以application-log.conf完全排除 。只要application-log.conf從 省略 extraFiles,就表示使用預設值,這不是我們在此範例中嘗試達成的目標。這同樣適用於移除您先前可能已新增至 的任何自訂conf檔案extraFiles

containerLogs: fluentBit: config: extraFiles: application-log.conf: ""

管理已安裝 Pod 工作負載的 Kubernetes 容錯

從 Amazon CloudWatch 可觀測性 EKS 附加元件的 1.7.0 版開始,附加元件和 Helm Chart 預設會設定 Kubernetes 公差,以容忍附加元件或 Helm Chart 安裝之 Pod 工作負載上的所有污點。這可確保 CloudWatch 代理程式和 Fluent Bit 等常駐程式集預設可以在叢集中的所有節點上排程 Pod。如需容錯和污點的詳細資訊,請參閱 Kubernetes 文件中的 提示和容錯

附加元件或 Helm Chart 設定的預設公差如下所示:

tolerations: - operator: Exists

您可以在使用附加元件進階組態時,或使用值覆寫來安裝或升級 Helm Chart 時,在根層級設定 tolerations 欄位來覆寫預設容錯。範例如下所示:

tolerations: - key: "key1" operator: "Exists" effect: "NoSchedule"

若要完全省略公差,您可以使用如下所示的組態:

tolerations: []

公差的任何變更都會套用至附加元件或 Helm Chart 安裝的所有 Pod 工作負載。

選擇退出加速運算指標集合

根據預設,具有增強型可觀測性的 Container Insights 會收集加速運算監控的指標,包括 NVIDIA GPU 指標、 AWS 訓練和推論 AWS 的 Neuron AWS 指標,以及 AWS Elastic Fabric Adapter (EFA) 指標。

根據預設,會從 Amazon EKS 工作負載收集 NVIDIA GPU 指標,其開頭為 EKS 附加元件v1.3.0-eksbuild.1版本或 Helm Chart 和 1.300034.0 CloudWatch 代理程式版本。如需收集的指標和先決條件清單,請參閱NVIDIA GPU 指標

AWS 根據預設,會收集 AWS Trainium 和 AWS Inferentia 加速器的 Neuron 指標,其開頭為 v1.5.0-eksbuild.1 EKS 附加元件或 Helm Chart 版本,以及 CloudWatch 代理程式1.300036.0版本。如需收集的指標和先決條件清單,請參閱AWSAWS Trainium 和 AWS Inferentia 的 Neuron 指標

AWS 根據預設,會從 Amazon EKS 叢集上的 Linux 節點收集彈性布料轉接器 (EFA) 指標,其開頭為 EKS 附加元件v1.5.2-eksbuild.1的版本或 Helm Chart 和 CloudWatch 代理程式1.300037.0的版本。如需收集的指標和先決條件清單,請參閱AWS Elastic Fabric Adapter (EFA) 指標

您可以選擇不收集這些指標,方法是將 CloudWatch 代理程式組態檔案中accelerated_compute_metrics的欄位設定為 false。此欄位位於 CloudWatch 組態檔案中 metrics_collected區段的 kubernetes 區段中。以下是選擇退出組態的範例。如需如何使用自訂 CloudWatch 代理程式組態的詳細資訊,請參閱下一節:使用自訂 CloudWatch 代理程式組態

{ "logs": { "metrics_collected": { "kubernetes": { "enhanced_container_insights": true, "accelerated_compute_metrics": false } } } }

使用自訂 CloudWatch 代理程式組態

若要使用 CloudWatch 代理程式收集其他指標、日誌或追蹤,您可指定自訂組態,同時保持啟用 Container Insights 和 CloudWatch Application Signals。若要這樣做,請將 CloudWatch 代理程式組態檔案內嵌在進階組態的代理程式金鑰下,您可以在建立或更新 EKS 附加元件或 Helm Chart 時使用。以下表示未提供任何其他組態時的預設代理程式組態。

重要

您使用其他組態設定提供的任何自訂組態會覆寫代理程式使用的預設組態。請注意不要意外停用預設啟用的功能,例如具有增強可觀測性的 Container Insights 和 CloudWatch Application Signals。在需要提供自訂代理程式組態的案例中,建議您使用下列預設組態作為基準,然後進行相應的修改。

  • 用於使用 Amazon CloudWatch 可觀測性 EKS 附加元件

    --configuration-values '{ "agent": { "config": { "logs": { "metrics_collected": { "application_signals": {}, "kubernetes": { "enhanced_container_insights": true } } }, "traces": { "traces_collected": { "application_signals": {} } } } }'
  • 使用 Helm Chart

    --set agent.config='{ "logs": { "metrics_collected": { "application_signals": {}, "kubernetes": { "enhanced_container_insights": true } } }, "traces": { "traces_collected": { "application_signals": {} } } }'

下列範例顯示 Windows 上 CloudWatch 代理程式的預設代理程式組態。Windows 上的 CloudWatch 代理程式不支援自訂組態。

{ "logs": { "metrics_collected": { "kubernetes": { "enhanced_container_insights": true }, } } }

管理許可 Webhook TLS 憑證

Amazon CloudWatch 可觀測性 EKS 附加元件和 Helm Chart 會利用 Kubernetes 許可 Webhook 來驗證和變更AmazonCloudWatchAgentInstrumentation自訂資源 (CR) 請求,以及啟用 CloudWatch Application Signals 時叢集上的選擇性 Kubernetes Pod 請求。在 Kubernetes 中,Webhook 需要 API 伺服器設定為信任的 TLS 憑證,以確保安全通訊。

根據預設,Amazon CloudWatch 可觀測性 EKS 附加元件和 Helm Chart 會自動產生自我簽署的 CA 和此 CA 簽署的 TLS 憑證,以保護 API 伺服器和 Webhook 伺服器之間的通訊。此自動產生的憑證預設有效期為 10 年,且不會在到期時自動續訂。此外,每次升級或重新安裝附加元件或 Helm Chart 時,CA 套件和憑證都會重新產生,因此會重設到期時間。如果您想要變更自動產生的憑證預設到期日,可以在建立或更新附加元件時使用下列其他組態。將 expiry-in-days 取代為您想要的到期時間 (以天為單位)。

  • 將此用於 Amazon CloudWatch 可觀測性 EKS 附加元件

    --configuration-values '{ "admissionWebhooks": { "autoGenerateCert": { "expiryDays": expiry-in-days } } }'
  • 將此用於 Helm Chart

    --set admissionWebhooks.autoGenerateCert.expiryDays=expiry-in-days

為了獲得更安全且功能豐富的憑證授權機構解決方案,附加元件可選擇支援 cert-manager,這是在 Kubernetes 中廣泛採用的 TLS 憑證管理解決方案,它可簡化獲取、更新、管理和使用這些憑證的程序。它可確保憑證有效且最新,並嘗試在到期前的設定時間更新憑證。cert-manager 也有助於從各種支援來源 (包括 AWS Certificate Manager 私有憑證授權機構) 發行憑證。

建議您檢閱叢集上的 TLS 憑證管理最佳實務,並建議您選擇使用適合生產環境的 cert-manager。請注意,如果您選擇加入啟用 cert-manager 來管理許可 Webhook TLS 憑證,您必須先在 Amazon EKS 叢集上預先安裝 cert-manager,再安裝 Amazon CloudWatch Observability EKS 附加元件或 Helm Chart。如需可用安裝選項的詳細資訊,請參閱 cert-manager 文件。安裝之後,您可以選擇使用 cert-manager 來管理許可 Webhook TLS 憑證,並使用下列其他組態。

  • 如果您使用的是 Amazon CloudWatch 可觀測性 EKS 附加元件

    --configuration-values '{ "admissionWebhooks": { "certManager": { "enabled": true } } }'
  • 如果您使用的是 Helm Chart

    --set admissionWebhooks.certManager.enabled=true
--configuration-values '{ "admissionWebhooks": { "certManager": { "enabled": true } } }'

本節中討論的進階組態預設會使用自我簽署發行者。

收集 Amazon EBS 磁碟區 IDs

若您想要在效能日誌中收集 Amazon EBS 磁碟區 ID,必須將另一項政策新增至附接到工作節點或服務帳戶的 IAM 角色。新增以下內容作為內嵌政策。如需詳細資訊,請參閱新增和移除 IAM 身分許可

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:DescribeVolumes" ], "Resource": "*", "Effect": "Allow" } ] }

對 Amazon CloudWatch 可觀測性 EKS 附加元件或 Helm Chart 進行故障診斷

使用下列資訊協助疑難排解 Amazon CloudWatch 可觀測性 EKS 附加元件或 Helm Chart 的問題

更新和刪除 Amazon CloudWatch 可觀測性 EKS 附加元件或 Helm Chart

如需有關更新或刪除 Amazon CloudWatch Observability EKS 附加元件的相關指示,請參閱管理 Amazon EKS 附加元件。使用 amazon-cloudwatch-observability 作為附加元件的名稱。

若要刪除叢集中的 Helm Chart,請輸入下列命令。

helm delete amazon-cloudwatch-observability -n amazon-cloudwatch --wait

驗證 Amazon CloudWatch 可觀測性 EKS 附加元件或 Helm Chart 所使用的 CloudWatch 代理程式版本 Amazon CloudWatch

Amazon CloudWatch 可觀測性 EKS 附加元件和 Helm Chart 會安裝自訂資源AmazonCloudWatchAgent,以控制叢集上 CloudWatch 代理程式協助程式集的行為,包括正在使用的 CloudWatch 代理程式版本。可以透過輸入下列命令,取得叢集 u 上安裝的所有 AmazonCloudWatchAgent 自訂資源清單:

kubectl get amazoncloudwatchagent -A

在此命令的輸出中,應該可以檢查 CloudWatch 代理程式版本。或者,您也可以描述 amazoncloudwatchagent 資源或叢集上執行的其中一個 cloudwatch-agent-* Pod,以檢查正在使用的映像。

管理附加元件或 Helm Chart 時處理 ConfigurationConflict

當您安裝或更新 Amazon CloudWatch 可觀測性 EKS 附加元件或 Helm Chart 時,如果您注意到現有資源造成的故障,可能是因為您已在叢集上安裝 CloudWatch 代理程式及其相關元件,例如 ServiceAccount、ClusterRole 和 ClusterRoleBinding。

附加元件顯示的錯誤將包含 Conflicts found when trying to apply. Will not continue due to resolve conflicts mode

Helm Chart 顯示的錯誤將類似於 Error: INSTALLATION FAILED: Unable to continue with install and invalid ownership metadata.

當附加元件或 Helm Chart 嘗試安裝 CloudWatch 代理程式及其相關聯的元件時,如果偵測到內容有任何變更,預設會失敗安裝或更新,以避免覆寫叢集上資源的狀態。

如果您嘗試加入 Amazon CloudWatch 可觀測性 EKS 附加元件,而您看到此失敗,建議您刪除先前安裝在叢集上的現有 CloudWatch 代理程式設定,然後安裝 EKS 附加元件或 Helm Chart。請務必備份您可能對原始 CloudWatch 代理程式設定所做的任何自訂,例如自訂代理程式組態,並在下次安裝或更新時將這些設定提供給附加元件或 Helm Chart。如果之前已安裝 CloudWatch 代理程式以登入 Container Insights,請參閱 刪除 CloudWatch 代理程式和 Fluent Bit for Container Insights 以取得詳細資訊。

或者,附加元件也支援衝突解決組態選項,該選項可指定 OVERWRITE。您可以使用此選項覆寫叢集上的衝突來繼續安裝或更新附加元件。如果您使用 Amazon EKS 主控台,則在建立或更新附加元件時選擇可選組態設定,可找到衝突解決方法。如果您使用的是 AWS CLI,您可以將 --resolve-conflicts OVERWRITE 提供給命令,以建立或更新附加元件。

收集 Java 管理延伸模組 (JMX) 指標

CloudWatch 代理程式支援在 Amazon EKS 上收集 Java Management Extensions (JMX) 指標。這可讓您從在 Amazon EKS 叢集上執行的 Java 應用程式收集其他指標,以深入了解效能、記憶體用量、流量和其他關鍵指標。如需詳細資訊,請參閱收集 Java 管理延伸模組 (JMX) 指標

啟用 Kueue 指標

從 CloudWatch 可觀測性 EKS 附加元件v2.4.0-eksbuild.1的版本開始,適用於 Amazon EKS 的 Container Insights 支援從 Amazon EKS 叢集收集 Kueue 指標。如需這些指標的詳細資訊,請參閱 線索指標

如果您使用的是 Amazon SageMaker AI Hyperpod 任務控管 EKS 附加元件,您可以略過先決條件區段中的步驟,並僅遵循 中的步驟啟用組態旗標

先決條件

在 Amazon EKS 叢集中安裝 Kueue 之前,請在資訊清單檔案中執行下列更新:

  1. 啟用 Kueue 的選用叢集佇列資源指標。若要這樣做,請在 ConfigMap kueue-system controller_manager_config.yaml中修改內嵌。在 metrics區段中,新增或取消註解行 enableClusterQueueResources: true

    apiVersion: v1 data: controller_manager_config.yaml: | apiVersion: config.kueue.x-k8s.io/v1beta1 kind: Configuration health: healthProbeBindAddress: :8081 metrics: bindAddress: :8080 enableClusterQueueResources: true <-- ADD/UNCOMMENT THIS LINE
  2. 根據預設,所有 k8s 服務在叢集範圍內皆可使用。Kueue 會建立 服務kueue-controller-manager-metrics-service來公開指標。若要防止指標的重複觀察,請修改此服務,以僅允許從相同節點存取指標服務。若要這樣做,請將 行新增至internalTrafficPolicy: Localkueue-controller-manager-metrics-service定義。

    apiVersion: v1 kind: Service metadata: labels: ... name: kueue-controller-manager-metrics-service namespace: kueue-system spec: ports: - name: https port: 8443 protocol: TCP targetPort: https internalTrafficPolicy: Local <-- ADD THIS LINE selector: control-plane: controller-manager
  3. 最後,Pod kueue-controller-manager 會建立kube-rbac-proxy容器。此容器目前具有高層級的記錄動詞,當指標抓取器存取 時,會導致該容器記錄叢集的承載符記kueue-controller-manager-metrics-service。我們建議您減少此記錄的真實性。Kueue 分佈的資訊清單中的預設值為 10,建議將其變更為 0。

    apiVersion: apps/v1 kind: Deployment metadata: labels: ... name: kueue-controller-manager namespace: kueue-system spec: ... template: ... spec: containers: ... - args: - --secure-listen-address=0.0.0.0:8443 - --upstream=http://127.0.0.1:8080/ - --logtostderr=true - --v=0 <-- CHANGE v=10 TO v=0 image: gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0 name: kube-rbac-proxy ...

啟用組態旗標

若要啟用 Kueue 指標,您必須在附加元件額外組態kueue_container_insights中啟用 。您可以使用 AWS CLI 來設定 EKS 可觀測性附加元件,或使用 Amazon EKS 主控台來執行此操作。

使用下列其中一種方法成功安裝 EKS 可觀測性附加元件後,您可以在 HyperPod 主控台儀表板索引標籤下檢視 Amazon EKS 叢集指標。

AWS CLI
使用 啟用 Kueue 指標 AWS CLI
  • 輸入下列 AWS CLI 命令來安裝 附加元件。

    aws eks create-addon --cluster-name cluster-name --addon-name amazon-cloudwatch-observability --configuration-values "configuration_json_file"

    以下是具有組態值的 JSON 檔案範例。

    { "agent": { "config": { "logs": { "metrics_collected": { "kubernetes": { "kueue_container_insights": true, "enhanced_container_insights": true }, "application_signals": { } } }, "traces": { "traces_collected": { "application_signals": { } } } }, }, }
Amazon EKS console
使用 Amazon EKS 主控台啟用 Kueue 指標
  1. 在以下網址開啟 Amazon EKS 主控台:https://console.aws.amazon.com/eks/home#/clusters

  2. 選取叢集的名稱。

  3. 選擇附加元件

  4. 在清單中尋找 Amazon CloudWatch 可觀測性附加元件,並進行安裝。執行此操作時,請選擇選用組態,並包含下列 JSON 組態值。

    { "agent": { "config": { "logs": { "metrics_collected": { "kubernetes": { "kueue_container_insights": true, "enhanced_container_insights": true }, "application_signals": { } } }, "traces": { "traces_collected": { "application_signals": { } } } }, }, }

附加 OpenTelemetry 收集器組態檔案

CloudWatch 代理程式支援補充 OpenTelemetry 收集器組態檔案及其自己的組態檔案。此功能可讓您透過 CloudWatch 代理程式組態使用 CloudWatch Application Signals 或 Container Insights 等 CloudWatch 代理程式功能,並使用單一代理程式加入現有的 OpenTelemetry 收集器組態。

為了防止與 CloudWatch 代理程式自動建立的管道發生合併衝突,我們建議您將自訂字尾新增至 OpenTelemetry 收集器組態中的每個元件和管道。這將防止衝突和合併衝突。

  • 如果您使用的是 Amazon CloudWatch 可觀測性 EKS 附加元件

    --configuration-values file://values.yaml

    --configuration-values ' agent: otelConfig: receivers: otlp/custom-suffix: protocols: http: {} exporters: awscloudwatchlogs/custom-suffix: log_group_name: "test-group" log_stream_name: "test-stream" service: pipelines: logs/custom-suffix: receivers: [otlp/custom-suffix] exporters: [awscloudwatchlogs/custom-suffix] '
  • 如果您使用的是 Helm Chart

    --set agent.otelConfig=' receivers: otlp/custom-suffix: protocols: http: {} exporters: awscloudwatchlogs/custom-suffix: log_group_name: "test-group" log_stream_name: "test-stream" service: pipelines: logs/custom-suffix: receivers: [otlp/custom-suffix] exporters: [awscloudwatchlogs/custom-suffix] '