本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon CloudWatch 可觀測性 EKS 附加元件或 Helm Chart 安裝 CloudWatch 代理程式 Amazon CloudWatch
您可以使用 Amazon CloudWatch Observability EKS 附加元件或 Amazon CloudWatch Observability Helm Chart,在 Amazon EKS 叢集上安裝 CloudWatch 代理程式和 Fluent 位元代理程式。也可以使用 Helm Chart 在非 Amazon EKS 託管的 Kubernetes 叢集上安裝 CloudWatch 代理程式和 Fluent 位元代理程式。
根據預設,在 Amazon EKS 叢集上使用任一方法,可讓 Amazon EKS 和 CloudWatch Application Signals 的 Container Insights 具有增強的可觀測性。使用這兩個概念時,您可從叢集中收集基礎結構指標、應用程式效能遙測資料和容器日誌。
使用 Container Insights 搭配 Amazon EKS 的增強可觀測性,Container Insights 指標會按觀測,而不是存放或擷取的指標計費。對於 Application Signals,帳單以發往應用程式的傳入請求、來自應用程式的傳出請求以及每個已設定的服務水準目標 (SLO) 來計費。收到的每個傳入請求都會產生一個應用程式訊號,而發出的每個傳出請求也會產生一個應用程式訊號。每個 SLO 會在每個測量週期建立兩個應用程式訊號。如需 CloudWatch 定價的詳細資訊,請參閱 Amazon CloudWatch 定價
這兩種方法都會在 Amazon EKS 叢集的 Linux 和 Windows 工作者節點上啟用 Container Insights。若要在 Windows 上啟用 Container Insights,必須使用 1.5.0 或更高版本的 Amazon EKS 附加元件或 Helm Chart。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 身分識別安裝
如果您使用 3.1.0 或更高版本的附加元件,可以使用 EKS Pod 身分識別將必要的許可授與附加元件。EKS Pod 身分識別是建議的選項,並提供最低權限、憑證輪換和可稽核性等優點。此外,使用 EKS Pod 身分識別可讓您在建立叢集的過程中安裝 EKS 附加元件。
若要使用此方法,請先遵循 EKS Pod 身分識別關聯步驟來建立 IAM 角色並設定 EKS Pod 身分識別代理程式。
然後安裝 Amazon CloudWatch 可觀測性 EKS 附加元件。若要安裝附加元件,您可以使用 AWS CLI、Amazon EKS 主控台 CloudFormation或 Terraform。
選項 2:在工作者節點上使用 IAM 許可安裝
若要使用此方法,請先輸入下列命令,以將 CloudWatchAgentServerPolicy IAM 政策附接至您的工作節點。在此命令中,使用 Kubernetes 工作節點使用的 IAM 角色,來取代 my-worker-node-role。
aws iam attach-role-policy \ --role-namemy-worker-node-role\ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
然後安裝 Amazon CloudWatch 可觀測性 EKS 附加元件。若要安裝附加元件,您可以使用 AWS CLI CloudFormation、 主控台或 Terraform。
選項 3:使用 IAM 服務帳戶角色進行安裝 (僅適用於使用附加元件的情況)
只有在您使用 Amazon CloudWatch Observability EKS 附加元件時,此方法才有效。使用此方法之前,請驗證下列先決條件:
-
您具備的功能性 Amazon EKS 叢集,內含在支援 Container Insights 的其中一個 AWS 區域 中附接的節點。如需支援區域的清單,請參閱 Container Insights。
-
您已安裝
kubectl並設定叢集。如需詳細資訊,請參閱《Amazon EKS 使用者指南》中的安裝kubectl。 -
您已安裝
eksctl。如需詳細資訊,請參閱 Amazon EKS 使用者指南中的安裝或更新eksctl。
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 Observability EKS 附加元件時選擇不收集容器日誌,請在建立或更新附加元件時傳遞下列選項:
--configuration-values '{ "containerLogs": { "enabled": false } }'
若要停用容器日誌收集,請在建立或更新附加元件時,使用 Helm Chart 傳遞下列選項:
--set containerLogs.enabled=false
使用自訂 Fluent Bit 組態
從 Amazon CloudWatch Observability 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 Bitconf檔案。根據預設,包含以下 3 個conf檔案:-
application-log.conf– 用於將應用程式日誌從叢集傳送至 CloudWatch Logs 中的日誌群組/aws/containerinsights/的my-cluster-name/applicationconf檔案。 -
dataplane-log.conf– 用於將對應於叢集資料平面元件的日誌 (包括 CRI 日誌、kubelet 日誌、kube-proxy 日誌和 Amazon VPC CNI 日誌) 傳送至 CloudWatch Logs 中的日誌群組/aws/containerinsights/的my-cluster-name/dataplaneconf檔案。 -
host-log.conf– 用於將日誌從 Linux 上的/var/log/dmesg、/var/log/messages和/var/log/secure以及 Windows 上的系統winlogs傳送至 CloudWatch 中的日誌群組/aws/containerinsights/的my-cluster-name/hostconf。
-
注意
即使您只修改子區段中的一個欄位,也請提供這些個別區段的完整組態。我們建議您使用下方的預設組態作為基準,然後進行相應修改,以免停用預設啟用的功能。您可以在修改 Amazon EKS 附加元件的進階組態或者為 Helm Chart 提供值覆寫時,使用下列 YAML 組態。
若要尋找叢集的 config 區段,請參閱 GitHub 上的 aws-observability / helm-charts/charts/amazon-cloudwatch-observability/values.yaml,在 containerLogs 下的 fluentBit 區段中找到 config 區段 (適用於 Linux) 和 configWindows 區段 (適用於 Windows)。
例如,您可以在這裡
當您透過 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 Bit conf 檔案。在此範例中,我們會在 extraFiles 下新增自訂 my-service.conf,除了三個預設的 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
下一個範例會從 extraFiles 完全移除現有 conf 檔案。這會完全排除 application-log.conf,方法是使用空字串將其覆寫。僅從 extraFiles 省略 application-log.conf 會改為暗示使用預設值,這不是我們要在此範例中嘗試達成的目標。這同樣適用於移除您先前可能已新增至 extraFiles 的任何自訂 conf 檔案。
containerLogs: fluentBit: config: extraFiles: application-log.conf: ""
管理已安裝 Pod 工作負載的 Kubernetes 容差
從 Amazon CloudWatch Observability 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 Trainium 和 AWS Inferentia 的 AWS Neuron 指標,以及 AWS Elastic Fabric Adapter (EFA) 指標。
根據預設,從 EKS 附加元件版本 v1.3.0-eksbuild.1 或者 Helm Chart 和 CloudWatch 代理程式版本 1.300034.0 開始,系統將收集來自 Amazon EKS 工作負載的 NVIDIA GPU 指標。如需收集之指標和先決條件的清單,請參閱NVIDIA GPU 指標。
AWS 根據預設,會收集 AWS Trainium 和 AWS Inferentia 加速器的 Neuron 指標,其開頭為 EKS 附加元件或 Helm Chart v1.5.0-eksbuild.1的版本,以及 CloudWatch 代理程式1.300036.0的版本。如需收集之指標和先決條件的清單,請參閱AWS Trainium 和 AWS Inferentia 的 AWS Neuron 指標 。
AWS 根據預設,會從 Amazon EKS 叢集上的 Linux 節點收集 Elastic Fabric Adapter (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。因此,請在建立或更新 EKS 附加元件或 Helm Chart 時使用的進階組態的代理程式金鑰下,將 CloudWatch 代理程式設定檔內嵌在組態金鑰中。以下表示未提供任何其他組態時的預設代理程式組態。
重要
您使用其他組態設定提供的任何自訂組態會覆寫代理程式使用的預設組態。請注意不要意外停用預設啟用的功能,例如具有增強可觀測性的 Container Insights 和 CloudWatch Application Signals。在需要提供自訂代理程式組態的案例中,建議您使用下列預設組態作為基準,然後進行相應的修改。
-
使用 Amazon CloudWatch Observability 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 Observability EKS 附加元件和 Helm Chart 會利用 Kubernetes 許可 WebhookAmazonCloudWatchAgent 和 Instrumentation 自訂資源 (CR) 請求,以及叢集上的 Kubernetes Pod 請求 (如果啟用了 CloudWatch Application Signals)。在 Kubernetes 中,Webhook 需要 API 伺服器設定為信任的 TLS 憑證,以確保安全通訊。
根據預設,Amazon CloudWatch Observability EKS 附加元件和 Helm Chart 會自動產生由此 CA 簽署的自我簽署 CA 和 TLS 憑證,以保護 API 伺服器與 Webhook 伺服器之間的通訊安全。此自動產生的憑證預設有效期為 10 年,且不會在到期時自動續訂。此外,每次升級或重新安裝附加元件或 Helm Chart 時,都會重新產生 CA 服務包和憑證,進而重設到期日。如果您想要變更自動產生的憑證預設到期日,可以在建立或更新附加元件時使用下列其他組態。將 expiry-in-days 取代為您想要的到期時間 (以天為單位)。
-
將此用於 Amazon CloudWatch Observability EKS 附加元件
--configuration-values '{ "admissionWebhooks": { "autoGenerateCert": { "expiryDays":expiry-in-days} } }' -
將此用於 Helm Chart
--set admissionWebhooks.autoGenerateCert.expiryDays=expiry-in-days
為了獲得更安全且功能豐富的憑證授權機構解決方案,附加元件可選擇支援 cert-manager
建議您檢閱叢集上的 TLS 憑證管理最佳實務,並建議您選擇使用適合生產環境的 cert-manager。請注意,如果您選擇啟用 cert-manager 來管理許可 Webhook TLS 憑證,則必須先在 Amazon EKS 叢集上預先安裝 cert-manager,然後再安裝 Amazon CloudWatch Observability EKS 附加元件或 Helm Chart。請參閱 cert-manager 文件
-
如果使用 Amazon CloudWatch Observability EKS 附加元件
--configuration-values '{ "admissionWebhooks": { "certManager": { "enabled": true } } }' -
如果使用 Helm Chart
--set admissionWebhooks.certManager.enabled=true
--configuration-values '{ "admissionWebhooks": { "certManager": { "enabled": true } } }'
本節中討論的進階組態預設會使用自我簽署
收集 Amazon EBS 磁碟區 ID
若您想要在效能日誌中收集 Amazon EBS 磁碟區 ID,必須將另一項政策新增至附接到工作節點或服務帳戶的 IAM 角色。新增以下內容作為內嵌政策。如需詳細資訊,請參閱新增和移除 IAM 身分許可。
收集 Java Management Extensions (JMX) 指標
CloudWatch 代理程式支援在 Amazon EKS 上收集 Java Management Extensions (JMX) 指標。這可讓您從在 Amazon EKS 叢集上執行的 Java 應用程式收集其他指標,以深入了解效能、記憶體用量、流量和其他關鍵指標。如需詳細資訊,請參閱收集 Java Management Extensions (JMX) 指標。
啟用 Kueue 指標
從 CloudWatch Observability EKS 附加元件的版本 v2.4.0-eksbuild.1 開始,適用於 Amazon EKS 的 Container Insights 支援從 Amazon EKS 叢集收集 Kueue 指標。如需這些指標的詳細資訊,請參閱 Kueue 指標 。
如果您使用的是 Amazon SageMaker AI Hyperpod 任務控管 EKS 附加元件,您可以略過先決條件區段中的步驟,並僅遵循 中的步驟啟用組態旗標。
先決條件
在 Amazon EKS 叢集中安裝 Kueue 之前,請在資訊清單檔案中進行下列更新:
-
為 Kueue 啟用選用的叢集佇列資源指標。為此,請在
kueue-systemConfigMap 中修改內嵌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 -
根據預設,所有
k8s服務在叢集範圍內皆可使用。Kueue 會建立公開指標的服務kueue-controller-manager-metrics-service。若要防止重複觀測指標,請修改此服務以僅允許從相同節點存取指標服務。為此,請將行internalTrafficPolicy: Local新增至kueue-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 LINEselector: control-plane: controller-manager -
最後,
kueue-controller-managerPod 會建立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=0image: 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 叢集指標。
附加 OpenTelemetry 收集器設定檔
CloudWatch 代理程式支援補充 OpenTelemetry 收集器設定檔及其自己的設定檔。此功能可讓您透過 CloudWatch 代理程式組態,使用 CloudWatch Application Signals 或 Container Insights 等 CloudWatch 代理程式功能,並使用單一代理程式加入現有的 OpenTelemetry 收集器組態。
為避免與 CloudWatch 代理程式自動建立的管道發生合併衝突,建議您在 OpenTelemetry 收集器組態中的每個元件和管道後方,新增自訂字尾。如此可防止矛盾與合併衝突。
-
如果使用 Amazon CloudWatch Observability 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] '
透過 Amazon EKS 叢集的 Application Signals 啟用 APM
根據預設,安裝 CloudWatch 可觀測性 EKS 附加元件 (V5.0.0 或更高版本) 或 Helm Chart 時,透過 Application Signals 啟用 OpenTelemetry (OTEL) 型應用程式效能監控 (APM)。您可以使用 Amazon EKS 附加元件的進階組態或使用 Helm Chart 覆寫值,進一步自訂具體設定。
注意
如果您使用任何 OpenTelemetry (OTEL) 型 APM 解決方案,啟用 Application Signals 會影響您現有的可觀測性設定。在繼續之前,請先檢閱您目前的實作。若要在升級至 V5.0.0 或更新版本後維護現有的 APM 設定,請參閱 選擇不接收 Application Signals。
Application Signals 自動監視器
CloudWatch Observability Amazon EKS 附加元件和 Helm Chart 的 5.0.0 版推出新功能。您現在可以透過自動監視器組態,自動為 EKS 叢集中的所有或特定服務工作負載啟用 Application Signals。可以在進階組態 applicationSignals 區段下的 manager 區段中,指定下列 autoMonitor 設定。
-
monitorAllServices:一個布林值旗標,用於啟用 (true) 或停用 (false) 自動監視器對所有服務工作負載的監控。預設為 true。啟用此旗標將確保叢集中映射到 Kubernetes 服務的所有 Kubernetes 工作負載 (Deployments、DaemonSets 和 StatefulSets),在第一次啟動時 (或針對現有工作負載重新啟動時) 將在自動啟用 Application Signals 的範圍內。系統預設會排除
kube-system和amazon-cloudwatch命名空間中的工作負載。 -
languages:一個字串清單,指定 Application Signals 在
monitorAllServices啟用時嘗試自動檢測服務使用的語言集。預設為所有支援的語言。 -
restartPods:一個布林值旗標,控制工作負載在組態變更後是否重新啟動。預設為 false。將此標記設為
true可控制自動監視器範圍內的 Kubernetes 工作負載是否會在儲存組態變更時自動重新啟動。任何影響 Kubernetes 工作負載中 Pod 重啟的設定 (例如updateStrategy) 都將被納入考量。請考慮重新啟動可能導致服務停機。 -
customSelector:為自動監視器選取特定 Kubernetes 命名空間或工作負載的設定。
-
java:指定自動使用 Java 檢測的工作負載
-
python:指定自動使用 Python 檢測的工作負載
-
nodejs:指定自動使用 Node.js 檢測的工作負載
-
dotnet:指定自動使用 .NET 檢測的工作負載
對於上述每種語言,可以設定下列欄位。
-
namespaces:指定要選取之命名空間的字串清單。預設為空白清單,即 []
-
deployments:指定要選取之部署的字串清單。以
namespace/deployment格式指定。預設為空白清單,即 [] -
daemonsets:指定要選取之常駐程式集的字串清單。以
namespace/daemonset格式指定。預設為空白清單,即 [] -
statefulsets:指定要選取之狀態集的字串清單。以
namespace/statefulset格式指定。預設為空白清單,即 []
-
-
exclude:從自動監視器排除特定 Kubernetes 命名空間或工作負載的設定。當同個工作負載也在
monitorAllServices或customSelector的範圍內時,排除工作負載優先。-
java:指定要排除在外,不自動使用 Java 檢測的工作負載
-
python:指定要排除在外,不自動使用 Python 檢測的工作負載
-
nodejs:指定要排除在外,不自動使用 Node.js 檢測的工作負載
-
dotnet:指定要排除在外,不自動使用 .NET 檢測的工作負載
對於上述每種語言,可以設定下列欄位。
-
namespaces:指定要排除之命名空間的字串清單。預設為空白清單,即 []
-
deployments:指定要排除之部署的字串清單。以
namespace/deployment格式指定。預設為空白清單,即 [] -
daemonsets:指定要排除之常駐程式集的字串清單。以
namespace/daemonset格式指定。預設為空白清單,即 [] -
statefulsets:指定要排除之狀態集的字串清單。以
namespace/statefulset格式指定。預設為空白清單,即 []
-
以下是為叢集上的所有現有和新服務工作負載自動啟用 Application Signals 的組態範例。
manager: applicationSignals: autoMonitor: monitorAllServices: true restartPods: true
以下是為叢集上已啟動的任何新服務工作負載,以及任何明確將重新啟動的現有服務工作負載自動啟用 Application Signals 的組態範例。
manager: applicationSignals: autoMonitor: monitorAllServices: true
以下是使用 Java 為 pet-warehouse 命名空間中某個工作負載對應的所有現有和新 Pod 自動啟用 Application Signals 的組態範例。
manager: applicationSignals: autoMonitor: restartPods: true customSelector: java: namespaces: ["pet-warehouse"]
以下是使用 Python 為叢集上的所有現有和新服務工作負載 (pet-clinic 部署除外) 自動啟用 Application Signals 的組態範例。
manager: applicationSignals: autoMonitor: monitorAllServices: true languages: ["python"] restartPods: true exclude: python: deployments: ["pet-warehouse/pet-clinic"]
以下是使用 Java 為叢集中的所有服務工作負載 (python-apps 命名空間中的服務工作負載除外),以及使用 Python 特別為 python-apps 命名空間中的 sample-python-app 部署自動啟用 Application Signals 的組態範例。
manager: applicationSignals: autoMonitor: monitorAllServices: true languages: ["java"] restartPods: true customSelector: python: deployments: ["python-apps/sample-python-app"] exclude: java: namespaces: ["python-apps"]
Amazon CloudWatch Observability EKS 附加元件或 Helm Chart 疑難排解
可使用以下資訊來協助對 Amazon CloudWatch Observability EKS 附加元件或 Helm Chart 問題進行疑難排解
主題
更新和刪除 Amazon CloudWatch Observability 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 Observability EKS 附加元件或 Helm Chart 使用的 CloudWatch 代理程式版本
Amazon CloudWatch Observability EKS 附加元件和 Helm Chart 會安裝一種 AmazonCloudWatchAgent 類自訂資源,它可控制叢集上 CloudWatch 代理程式常駐程式集的行為,包括所使用的 CloudWatch 代理程式版本。可以透過輸入下列命令,取得叢集 u 上安裝的所有 AmazonCloudWatchAgent 自訂資源清單:
kubectl get amazoncloudwatchagent -A
在此命令的輸出中,應該可以檢查 CloudWatch 代理程式版本。或者,您也可以描述 amazoncloudwatchagent 資源或叢集上執行的其中一個 cloudwatch-agent-* Pod,以檢查正在使用的映像。
管理附加元件或 Helm Chart 時處理 ConfigurationConflict
當您安裝或更新 Amazon CloudWatch Observability EKS 附加元件時,如果注意到現有資源導致的失敗,很可能是因為您已經在叢集上安裝 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 Observability EKS 附加元件,但發現此失敗,建議刪除先前安裝在叢集上的現有 CloudWatch 代理程式設定,然後再安裝 EKS 附加元件或 Helm Chart。請務必備份您對原始 CloudWatch 代理程式設定所做的任何自訂設定 (例如自訂代理程式組態),並在下次安裝或更新附加元件時將這些自訂設定提供給附加元件或 Helm Chart。如果之前已安裝 CloudWatch 代理程式以登入 Container Insights,請參閱 刪除 Container Insights 的 CloudWatch 代理程式和 Fluent Bit 以取得詳細資訊。
或者,附加元件也支援衝突解決組態選項,該選項可指定 OVERWRITE。您可以使用此選項覆寫叢集上的衝突來繼續安裝或更新附加元件。如果您使用 Amazon EKS 主控台,則在建立或更新附加元件時選擇可選組態設定,可找到衝突解決方法。如果您使用的是 AWS CLI,您可以將 --resolve-conflicts OVERWRITE 提供給命令,以建立或更新附加元件。
選擇不接收 Application Signals
在 CloudWatch 主控台或使用 SDK 微調您的服務監控偏好設定。
對於 5.0.0 之前的版本,若要停用 Application Signals 自動監控,請遵循下列程序:
使用 CLI 或 SDK
下列組態可以套用為 EKS 附加元件的進階組態,或在使用 Helm Chart 時作為值覆寫。
{ "manager": { "applicationSignals": { "autoMonitor": { "monitorAllServices": false } } } }
重新啟動您的 服務,以使變更生效。
使用主控台
透過 https://console.aws.amazon.com/cloudwatch/
在導覽窗格的 Application Signals (APM) 下,選擇服務。
選擇啟用 Application Signals 以檢視啟用頁面。
針對您不想監控的每個服務,清除自動監控核取方塊。
重新啟動您的 服務,以使變更生效。