Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Installa l' CloudWatch agente con il componente aggiuntivo Amazon CloudWatch Observability EKS o il diagramma Helm
Puoi utilizzare il componente aggiuntivo Amazon CloudWatch Observability EKS o il grafico Amazon CloudWatch Observability Helm per installare l' CloudWatch agente e l' Fluent-bit agente su un cluster Amazon EKS. Puoi anche utilizzare il diagramma Helm per installare l' CloudWatch agente e l' Fluent-bit agente su un cluster Kubernetes non ospitato su Amazon EKS.
L'utilizzo di entrambi i metodi su un cluster Amazon EKS abilita sia Container Insights for Amazon EKS che CloudWatch Application Signals per impostazione predefinita. Utilizzando il componente aggiuntivo, è possibile raccogliere le metriche dell'infrastruttura, la telemetria delle prestazioni delle applicazioni e i log dei container dal cluster.
A partire dalla versione v6.2.0-eksbuild.1 o successiva del componente aggiuntivo, è possibile abilitare Container Insights with OpenTelemetry metrics, che raccoglie le metriche utilizzando il OpenTelemetry protocollo (OTLP) e supporta le query ProMQL. Per ulteriori informazioni, consulta Otel Container Insights (consigliato).
Con Container Insights with OpenTelemetry for Amazon EKS, le metriche di Container Insights vengono addebitate per GB ingerito o per osservazione se si utilizza Enhanced Container Insights (Classic). Per Application Signals, la fatturazione si basa sulle richieste in entrata alle applicazioni, sulle richieste in uscita dalle applicazioni e su ogni obiettivo del livello di servizio (SLO) configurato. Ogni richiesta in entrata ricevuta e ogni richiesta in uscita effettuata genera un segnale di applicazione. Ogni SLO crea due segnali di applicazione per ciascun periodo di misurazione. Per ulteriori informazioni sui CloudWatch prezzi, consulta Amazon Pricing. CloudWatch
Entrambi i metodi abilitano Approfondimenti sui container su nodi di lavoro Linux e Windows nel cluster Amazon EKS. Per abilitare Approfondimenti sui container su Windows, è necessario utilizzare la versione 1.5.0 o successiva del componente aggiuntivo Amazon EKS o il grafico Helm. Application Signals non è supportato su Windows nei cluster Amazon EKS.
Il componente aggiuntivo Amazon CloudWatch Observability EKS è supportato sui cluster Amazon EKS in esecuzione con Kubernetes versione 1.23 o successiva.
Quando installi il componente aggiuntivo o il grafico Helm, devi anche concedere le autorizzazioni IAM per consentire all' CloudWatch agente di inviare metriche, log e tracce a. CloudWatch Ci sono due modi per effettuare questa operazione:
-
Collega una policy al ruolo IAM dei nodi di lavoro. Questa opzione concede ai nodi di lavoro le autorizzazioni a cui inviare dati di telemetria. CloudWatch
-
Utilizza un ruolo IAM per gli account di servizio per i pod dell'agente e collega la policy a questo ruolo. Questo metodo funziona solo per i cluster Amazon EKS. Questa opzione consente di CloudWatch accedere solo agli agent pod appropriati.
Argomenti
Opzione 1: installazione utilizzando EKS Pod Identity
Se si utilizza la versione 3.1.0 o successiva del componente aggiuntivo, è possibile utilizzare EKS Pod Identity per concedere le autorizzazioni richieste al componente aggiuntivo. EKS Pod Identity è l'opzione consigliata e offre vantaggi come il privilegio minimo, la rotazione delle credenziali e la verificabilità. Inoltre, l'utilizzo di EKS Pod Identity consente di installare il componente aggiuntivo EKS come parte della creazione del cluster stesso.
Per utilizzare questo metodo, segui innanzitutto i passaggi di Associazione EKS Pod Identity per creare il ruolo IAM e configurare l'agente EKS Pod Identity.
Quindi installa il componente aggiuntivo Amazon CloudWatch Observability EKS. Per installare il componente aggiuntivo, puoi utilizzare la AWS CLI console Amazon EKS o Terraform CloudFormation.
Opzione 2: installazione con autorizzazioni IAM sui nodi di lavoro
Per utilizzare questo metodo, collega innanzitutto la policy CloudWatchAgentServerPolicy IAM ai nodi di lavoro inserendo il seguente comando. In questo comando, sostituisci my-worker-node-role con il ruolo IAM utilizzato dai tuoi nodi di lavoro Kubernetes.
aws iam attach-role-policy \ --role-namemy-worker-node-role\ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
Quindi installa il componente aggiuntivo Amazon CloudWatch Observability EKS. Per installare il componente aggiuntivo, puoi utilizzare la AWS CLI console o Terraform CloudFormation.
Opzione 3: installazione tramite il ruolo dell'account di servizio IAM (si applica solo all'utilizzo del componente aggiuntivo)
Questo metodo è valido solo se utilizzi il componente aggiuntivo Amazon CloudWatch Observability EKS. Prima di utilizzare questo metodo, verifica di soddisfare i seguenti prerequisiti:
-
Disponi di un cluster Amazon EKS funzionale con nodi collegati in una delle Regioni AWS che supportano Approfondimenti sui container. Per l'elenco delle regioni supportate, consulta Container Insights.
-
kubectldeve essere installato e configurato per il cluster. Per ulteriori informazioni, consulta la pagina relativa all'installazione dikubectlnella Guida per l'utente di Amazon EKS. -
eksctldeve essere installato. Per ulteriori informazioni, consulta la pagina Installing or updatingeksctlnella Guida per l'utente di Amazon EKS.
(Facoltativo) Configurazione aggiuntiva
Argomenti
Disattivazione della raccolta di log di container
Per impostazione predefinita, l'add-on utilizza Fluent Bit per raccogliere i log dei container da tutti i pod e quindi inviarli a Logs. CloudWatch Per informazioni su quali log vengono raccolti, consulta la pagina Inviare i CloudWatch log ai Logs.
Nota
Né il componente aggiuntivo né il grafico Helm gestiscono le risorse Fluentd o Fluent Bit esistenti in un cluster. È possibile eliminare le risorse Fluentd o Fluent Bit esistenti prima di installare il componente aggiuntivo o il grafico Helm. In alternativa, per mantenere la configurazione esistente ed evitare che il componente aggiuntivo o il grafico Helm installino anche Fluent Bit, è possibile disabilitarla seguendo le istruzioni in questa sezione.
Per disattivare la raccolta dei log dei container se stai utilizzando il componente aggiuntivo Amazon CloudWatch Observability EKS, passa la seguente opzione quando crei o aggiorni il componente aggiuntivo:
--configuration-values '{ "containerLogs": { "enabled": false } }'
Per annullare la raccolta dei log dei container se utilizzi il grafico Helm, utilizza la seguente opzione quando crei o aggiorni il componente aggiuntivo:
--set containerLogs.enabled=false
Utilizzo di una configurazione Fluent Bit personalizzata
A partire dalla versione 1.7.0 del componente aggiuntivo Amazon CloudWatch Observability EKS, puoi modificare la configurazione di Fluent Bit quando crei o aggiorni il componente aggiuntivo o il grafico Helm. Fornisci la configurazione Fluent Bit personalizzata nella sezione di livello root containerLogs della configurazione avanzata del componente aggiuntivo o sostituisci i valori nel grafico Helm. All'interno di questa sezione, fornisci la configurazione Fluent Bit personalizzata nella sezione config (per Linux) o nella sezione configWindows (per Windows). config è ulteriormente suddiviso nelle seguenti sottosezioni:
-
service: questa sezione rappresenta la configurazioneSERVICEper definire il comportamento globale del motore Fluent Bit. -
customParsers: questa sezione rappresenta tutti iPARSERglobali che si desidera includere in grado di prendere voci di log non strutturate e fornire loro una struttura per facilitarne l'elaborazione e il successivo filtraggio. -
extraFiles: questa sezione può essere utilizzata per fornire fileconfFluent Bit aggiuntivi da includere. Per impostazione predefinita, sono inclusi i seguenti tre fileconf:-
application-log.conf— Unconffile per l'invio dei log delle applicazioni dal cluster al gruppo di log in Logs./aws/containerinsights/CloudWatchmy-cluster-name/application -
dataplane-log.conf— Unconffile per l'invio dei log corrispondenti ai componenti del piano dati del cluster, inclusi i log CRI, i log kubelet, i log kube-proxy e i log CNI di Amazon VPC al gruppo di log in Logs./aws/containerinsights/CloudWatchmy-cluster-name/dataplane -
host-log.conf— Aconfper l'invio di log da/var/log/dmesge/var/log/securesu Linux e Systemwinlogssu Windows al gruppo di log in./var/log/messages/aws/containerinsights/CloudWatchmy-cluster-name/host
-
Nota
Fornisci la configurazione completa per ciascuna di queste singole sezioni anche se stai modificando solo un campo all'interno di una sottosezione. Ti consigliamo di utilizzare la configurazione predefinita fornita di seguito come base e di modificarla di conseguenza in modo da non disabilitare la funzionalità abilitata per impostazione predefinita. Puoi utilizzare la seguente configurazione YAML quando modifichi la configurazione avanzata per il componente aggiuntivo Amazon EKS o quando fornisci valori sostitutivi per il grafico Helm.
Per trovare la config sezione relativa al tuo cluster, consulta aws-observability/helm-charts /charts/amazon-cloudwatch-observability/values.yaml per individuare la sezione config (per Linux) e la sezione configWindows (per Windows) all'interno della sezione fluentBit sotto containerLogs.
Ad esempio, la configurazione predefinita di Fluent Bit per la versione 1.7.0 è disponibile qui
Ti consigliamo di fornirlo config come YAML quando lo fornisci utilizzando la configurazione avanzata del componente aggiuntivo Amazon EKS o quando lo fornisci come valore sostitutivo per l'installazione di Helm. Assicurati che YAML sia conforme alla seguente struttura.
containerLogs: fluentBit: config: service: | ... customParsers: | ... extraFiles: application-log.conf: | ... dataplane-log.conf: | ... host-log.conf: | ...
L'esempio seguente di config modifica l'impostazione globale per l'intervallo di flush in modo che sia di 45 secondi. Anche se l'unica modifica riguarda il campo Flush, è comunque necessario fornire la definizione di SERVICE completa per la sottosezione del servizio. Poiché questo esempio non ha specificato le sostituzioni per le altre sottosezioni, per esse vengono utilizzate le impostazioni predefinite.
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
La configurazione di esempio seguente include un file conf Fluent bit aggiuntivo. In questo esempio, stai aggiungendo un sottoinsieme personalizzato che verrà incluso my-service.conf in extraFiles aggiunta ai tre predefiniti. 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
Il prossimo esempio rimuove completamente un file conf esistente da extraFiles. Ciò lo esclude completamente da application-log.conf sovrascrivendolo con una stringa vuota. La semplice omissione application-log.conf da extraFiles comporterebbe invece l'utilizzo dell'impostazione predefinita, che non è ciò che si sta cercando di ottenere in questo esempio. Lo stesso vale per la rimozione di qualsiasi file conf personalizzato che potresti aver aggiunto in precedenza a extraFiles.
containerLogs: fluentBit: config: extraFiles: application-log.conf: ""
Gestione delle tolleranze di Kubernetes per i carichi di lavoro dei pod installati
A partire dalla versione 1.7.0 del componente aggiuntivo Amazon CloudWatch Observability EKS, il componente aggiuntivo e il diagramma Helm impostano di default le tolleranze di Kubernetes per tollerare tutte le contaminazioni sui carichi di lavoro del pod installati dall'add-on o dal diagramma Helm. Ciò garantisce che i daemonset come l'agent e Fluent Bit possano pianificare i pod su tutti i nodi del cluster per impostazione predefinita. CloudWatch Per ulteriori informazioni su taint e tolleranze, consulta Taints and Tolerations
Le tolleranze predefinite impostate dal componente aggiuntivo o dal grafico Helm sono le seguenti:
tolerations: - operator: Exists
È possibile sovrascrivere le tolleranze predefinite impostando il campo tolerations al livello root quando si utilizza la configurazione avanzata del componente aggiuntivo o quando si installa o si aggiorna il grafico Helm con sostituzioni dei valori. Di seguito è riportato un possibile esempio:
tolerations: - key: "key1" operator: "Exists" effect: "NoSchedule"
Per omettere completamente le tolleranze, puoi utilizzare una configurazione simile alla seguente:
tolerations: []
Qualsiasi modifica alle tolleranze si applica a tutti i carichi di lavoro dei pod installati dal componente aggiuntivo o dal grafico Helm.
Disattivazione della raccolta di metriche di calcolo accelerato
Per impostazione predefinita, Container Insights con osservabilità avanzata raccoglie metriche per il monitoraggio di Accelerated Compute, tra cui le metriche NVIDIA GPU, le metriche AWS Neuron per Trainium e Inferentia e le metriche Elastic Fabric Adapter (EFA). AWS AWS AWS
Le metriche delle GPU NVIDIA dai carichi di lavoro di Amazon EKS vengono raccolte per impostazione predefinita a partire dalla versione del componente aggiuntivo EKS o dal diagramma Helm e dalla versione dell'agente. v1.3.0-eksbuild.1 1.300034.0 CloudWatch Per un elenco delle metriche raccolte e dei prerequisiti, consulta Metriche della GPU NVIDIA.
AWS Le metriche Neuron per gli acceleratori AWS Trainium e AWS Inferentia vengono raccolte per impostazione predefinita a partire dalla versione del componente aggiuntivo EKS o del diagramma Helm e dalla versione v1.5.0-eksbuild.1 dell'agente. 1.300036.0 CloudWatch Per un elenco delle metriche raccolte e dei prerequisiti, consulta AWS Metriche dei neuroni per AWS Trainium e AWS Inferentia.
AWS Le metriche di Elastic Fabric Adapter (EFA) dai nodi Linux sui cluster Amazon EKS vengono raccolte per impostazione predefinita a partire dalla versione del componente aggiuntivo EKS o dal diagramma Helm e dalla versione v1.5.2-eksbuild.1 dell'agente. 1.300037.0 CloudWatch Per un elenco delle metriche raccolte e dei prerequisiti, consulta AWS Metriche Elastic Fabric Adapter (EFA).
Puoi scegliere di non raccogliere queste metriche impostando il accelerated_compute_metrics campo nel file di configurazione dell'agente su. CloudWatch false Questo campo si trova nella kubernetes sezione della metrics_collected sezione del file di CloudWatch configurazione. Di seguito è riportato un esempio di configurazione di non adesione. Per ulteriori informazioni su come utilizzare le configurazioni personalizzate degli CloudWatch agenti, vedere la sezione seguente,Utilizza una configurazione personalizzata CloudWatch dell'agente.
{ "logs": { "metrics_collected": { "kubernetes": { "enhanced_container_insights": true, "accelerated_compute_metrics": false } } } }
Utilizza una configurazione personalizzata CloudWatch dell'agente
Per raccogliere altre metriche, log o tracce utilizzando l' CloudWatch agente, puoi specificare una configurazione personalizzata mantenendo abilitati anche Container Insights e CloudWatch Application Signals. Per fare ciò, incorpora il file di configurazione CloudWatch dell'agente nella chiave di configurazione sotto la chiave agente della configurazione avanzata che puoi usare per creare o aggiornare il componente aggiuntivo EKS o il grafico Helm. Di seguito è rappresentata la configurazione predefinita dell'agente quando non si fornisce alcuna configurazione aggiuntiva.
Importante
Qualsiasi configurazione personalizzata fornita utilizzando impostazioni di configurazione aggiuntive ha la precedenza sulla configurazione predefinita utilizzata dall'agente. Fai attenzione a non disabilitare involontariamente funzionalità abilitate per impostazione predefinita, come Container Insights with Enhanced Observability e Application Signals. CloudWatch Se è necessario fornire una configurazione personalizzata dell'agente, consigliamo di utilizzare la seguente configurazione predefinita come base e modificarla di secondo le necessità.
-
Per utilizzare il componente aggiuntivo Amazon Observability EKS CloudWatch
--configuration-values '{ "agent": { "config": { "logs": { "metrics_collected": { "application_signals": {}, "kubernetes": { "enhanced_container_insights": true } } }, "traces": { "traces_collected": { "application_signals": {} } } } } }' -
Per utilizzare il grafico Helm
--set agent.config='{ "logs": { "metrics_collected": { "application_signals": {}, "kubernetes": { "enhanced_container_insights": true } } }, "traces": { "traces_collected": { "application_signals": {} } } }'
L'esempio seguente mostra la configurazione predefinita dell' CloudWatch agente su Windows. L' CloudWatch agente su Windows non supporta la configurazione personalizzata.
{ "logs": { "metrics_collected": { "kubernetes": { "enhanced_container_insights": true }, } } }
Gestisci i certificati webhook di ammissione TLS
L'add-on Amazon CloudWatch Observability EKS e il grafico Helm utilizzano i webhook di ammissione Kubernetes Instrumentation personalizzate AmazonCloudWatchAgent e, facoltativamente, le richieste pod Kubernetes sul cluster se Application Signals è abilitato. CloudWatch In Kubernetes, i webhook richiedono un certificato TLS di cui il server API è configurato in modo affidabile per garantire una comunicazione sicura.
Per impostazione predefinita, il componente aggiuntivo Amazon CloudWatch Observability EKS e il grafico Helm generano automaticamente una CA autofirmata e un certificato TLS firmato da questa CA per proteggere la comunicazione tra il server API e il server webhook. Questo certificato generato automaticamente ha una scadenza predefinita di 10 anni e non viene rinnovato automaticamente alla scadenza. Inoltre, il bundle CA e il certificato vengono rigenerati ogni volta che il componente aggiuntivo o il grafico Helm viene aggiornato o reinstallato, reimpostando così la scadenza. Se desideri modificare la scadenza predefinita del certificato generato automaticamente, puoi utilizzare le seguenti configurazioni aggiuntive durante la creazione o l'aggiornamento del componente aggiuntivo. Sostituiscilo con la durata expiry-in-days di scadenza desiderata in giorni.
-
Usalo per il componente aggiuntivo Amazon CloudWatch Observability EKS
--configuration-values '{ "admissionWebhooks": { "autoGenerateCert": { "expiryDays":expiry-in-days} } }' -
Utilizzare questo per il grafico Helm
--set admissionWebhooks.autoGenerateCert.expiryDays=expiry-in-days
Per una soluzione di autorità di certificazione più sicura e ricca di funzionalità, il componente aggiuntivo offre il supporto opt-in per cert-manager
Ti consigliamo di esaminare le best practice per la gestione dei certificati TLS sui tuoi cluster e di scegliere di utilizzare cert-manager per gli ambienti di produzione. Tieni presente che se scegli di abilitare cert-manager per la gestione dei certificati TLS del webhook di ammissione, devi preinstallare cert-manager sul tuo cluster Amazon EKS prima di installare il componente aggiuntivo Amazon CloudWatch Observability EKS o il diagramma Helm. Per ulteriori informazioni sulle opzioni di installazione disponibili, consulta la documentazione di cert-manager
-
Se stai utilizzando il componente aggiuntivo Amazon Observability EKS CloudWatch
--configuration-values '{ "admissionWebhooks": { "certManager": { "enabled": true } } }' -
Se stai usando il grafico Helm
--set admissionWebhooks.certManager.enabled=true
--configuration-values '{ "admissionWebhooks": { "certManager": { "enabled": true } } }'
La configurazione avanzata discussa in questa sezione utilizza per impostazione predefinita un SelfSigned
Raccolta degli ID dei volumi Amazon EBS
Se desideri raccogliere gli ID dei volumi Amazon EBS nei log delle prestazioni, ti basta aggiungere al ruolo IAM un'altra policy collegata ai nodi worker o all'account di servizio. Aggiungi quanto segue come una policy inline. Per ulteriori informazioni, consulta la pagina Adding and Removing IAM Identity Permissions.
Raccolta delle metriche di Java Management Extensions (JMX)
L' CloudWatch agente supporta la raccolta di metriche Java Management Extensions (JMX) su Amazon EKS. Ciò consente di raccogliere metriche aggiuntive dalle applicazioni Java in esecuzione su cluster Amazon EKS, consentendo di ottenere informazioni dettagliate su prestazioni, utilizzo della memoria, traffico e altre metriche critiche. Per ulteriori informazioni, consulta Raccolta delle metriche di Java Management Extensions (JMX).
Abilitazione delle metriche di Kueue
A partire dalla versione v2.4.0-eksbuild.1 del componente aggiuntivo CloudWatch Observability EKS, Container Insights for Amazon EKS supporta la raccolta di metriche Kueue dai cluster Amazon EKS. Per ulteriori informazioni su questi parametri, consulta Metriche Kueue.
Se stai utilizzando il componente aggiuntivo Amazon SageMaker AI Hyperpod Task Governance EKS, puoi saltare i passaggi nella sezione Prerequisiti e seguire semplicemente i passaggi indicati. Abilitazione del flag di configurazione
Prerequisiti
Prima di installare Kueue nel cluster Amazon EKS, apporta le seguenti modifiche al file manifesto:
-
Abilita le metriche opzionali delle risorse della coda del cluster per Kueue. Per fare ciò, modifica la riga in.
controller_manager_config.yamlkueue-systemConfigMap Nella sezionemetrics, aggiungi o togli il commento dalla rigaenableClusterQueueResources: 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 -
Per impostazione predefinita, tutti i servizi
k8ssono disponibili a livello di cluster. Kueue crea un serviziokueue-controller-manager-metrics-serviceper esporre le metriche. Per evitare osservazioni duplicate per le metriche, modifica questo servizio per consentire l'accesso solo al servizio della metrica dallo stesso nodo. Per fare ciò, aggiungi la rigainternalTrafficPolicy: Localalla definizionekueue-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 -
Infine, il pod
kueue-controller-managercrea un containerkube-rbac-proxy. Questo container ha attualmente un alto livello di verbosità di registrazione, il che fa sì che il token bearer del cluster venga registrato da quel container quando lo scraper di metriche accede akueue-controller-manager-metrics-service. Si consiglia di ridurre questa verbosità della registrazione. Il valore predefinito nel manifesto distribuito da Kueue è 10, si consiglia di impostarlo su 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 ...
Abilitazione del flag di configurazione
Per abilitare le metriche di Kueue, è necessario abilitare kueue_container_insights nella configurazione aggiuntiva del componente aggiuntivo. Puoi farlo utilizzando il componente aggiuntivo EKS Observability AWS CLI per configurare o utilizzando la console Amazon EKS.
Dopo aver installato correttamente il componente aggiuntivo EKS Observability con uno dei seguenti metodi, puoi visualizzare le metriche del cluster Amazon EKS nella scheda Dashboard della console. HyperPod
Aggiungere i file di configurazione del OpenTelemetry raccoglitore
L' CloudWatch agente supporta file di configurazione supplementari del OpenTelemetry raccoglitore insieme ai propri file di configurazione. Questa funzionalità consente di utilizzare le funzionalità degli CloudWatch agenti come CloudWatch Application Signals o Container Insights attraverso la configurazione dell' CloudWatch agente e di inserire la configurazione esistente del OpenTelemetry raccoglitore con un singolo agente.
Per evitare conflitti di fusione con le pipeline create automaticamente dall' CloudWatch agente, aggiungete un suffisso personalizzato a ciascuno dei componenti e delle pipeline nella configurazione del raccoglitore. OpenTelemetry In questo modo si eviteranno scontri e conflitti di unione.
-
Se stai utilizzando il componente aggiuntivo Amazon Observability EKS CloudWatch
--configuration-values file://values.yamlor
--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] ' -
Se stai usando il grafico Helm
--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] '
Abilitazione dell'APM tramite Application Signals per il tuo cluster Amazon EKS
Per impostazione predefinita, OpenTelemetry l'Application Performance Monitoring (APM) basato su (OTEL) è abilitato tramite Application Signals quando si installa il componente aggiuntivo CloudWatch Observability EKS (V5.0.0 o versione successiva) o il diagramma Helm. Puoi personalizzare ulteriormente impostazioni specifiche utilizzando la configurazione avanzata per il componente aggiuntivo Amazon EKS o sovrascrivendo i valori con il grafico Helm.
Nota
Se si utilizza una soluzione APM basata su OpenTelemetry (OTEL), l'attivazione di Application Signals influisce sulla configurazione di osservabilità esistente. Rivedi la tua attuale implementazione prima di procedere. Per mantenere la configurazione APM esistente dopo l'aggiornamento V5.0.0 o successivo, consulta. Disattiva i segnali delle applicazioni
Monitor automatico di Application Signals
La versione 5.0.0 del componente aggiuntivo CloudWatch Observability Amazon EKS e del grafico Helm introduce nuove funzionalità. Ora puoi abilitare automaticamente Application Signals per tutti o specifici carichi di lavoro di servizio nel tuo cluster EKS tramite la configurazione di Monitor automatico. Le seguenti impostazioni autoMonitor possono essere specificate nella sezione applicationSignals sotto la sezione manager della configurazione avanzata.
-
monitor AllServices: un flag booleano per abilitare (true) o disabilitare (false) il monitoraggio di tutti i carichi di lavoro del servizio tramite Auto monitor. Il valore predefinito è true. L'attivazione di questo flag assicurerà che tutti i carichi di lavoro Kubernetes (distribuzioni e StatefulSets) nel cluster mappati su un servizio Kubernetes rientrino nell'ambito dell'abilitazione automatica degli Application Signals quando vengono aperti per la prima volta (o quando vengono riavviati per i carichi di lavoro esistenti). DaemonSets Per impostazione predefinita, il sistema esclude i carichi di lavoro nei namespace
kube-systemeamazon-cloudwatch. -
languages: un elenco di stringhe che specificano il set di linguaggi con cui Application Signals cercherà di instrumentare automaticamente i tuoi servizi, quando
monitorAllServicesè abilitato. L'impostazione predefinita è tutti i linguaggi supportati. -
restartPods: un flag booleano controlla se i carichi di lavoro vengono riavviati dopo le modifiche alla configurazione. Il valore predefinito è false (falso). L'abilitazione di questo flag su
truecontrolla se i carichi di lavoro Kubernetes nell'ambito di Monitor automatico si riavviano automaticamente quando si salvano le modifiche alla configurazione. Verranno prese in considerazione tutte le impostazioni dei carichi di lavoro Kubernetes che influiscono sul riavvio dei pod, ad esempioupdateStrategy. Tieni presente che il riavvio può causare tempi di inattività del servizio. -
customSelector: impostazioni per selezionare namespace o carichi di lavoro Kubernetes specifici per Monitor automatico.
-
java: specifica i carichi di lavoro per l'instrumentazione automatica con Java
-
python: specifica i carichi di lavoro per l'instrumentazione automatica con Python
-
nodejs: specifica i carichi di lavoro con cui eseguire automaticamente gli strumenti Node.js
-
dotnet: specifica i carichi di lavoro per l'instrumentazione automatica con .NET
Per ciascuno dei linguaggi di cui sopra, è possibile configurare i seguenti campi.
-
namespaces: un elenco di stringhe che specifica i namespace da selezionare. Il valore predefinito è un elenco vuoto, ossia []
-
implementazioni: un elenco di stringhe che specifica le implementazioni da selezionare. Specifica il valore nel formato
namespace/deployment. Il valore predefinito è un elenco vuoto, ossia [] -
daemonsets: un elenco di stringhe che specifica i daemonsets da selezionare. Specifica il valore nel formato
namespace/daemonset. Il valore predefinito è un elenco vuoto, ossia [] -
statefulsets: un elenco di stringhe che specifica gli statefulsets da selezionare. Specifica il valore nel formato
namespace/statefulset. Il valore predefinito è un elenco vuoto, ossia []
-
-
exclude: impostazioni per escludere namespace o carichi di lavoro Kubernetes specifici da Monitor automatico. L'esclusione di un carico di lavoro ha la precedenza quando lo stesso carico di lavoro rientra anche nell'ambito di
monitorAllServicesocustomSelector.-
java: specifica i carichi di lavoro da escludere dall'instrumentazione automatica con Java
-
python: specifica i carichi di lavoro da escludere dall'instrumentazione automatica con Python
-
nodejs — Specifica i carichi di lavoro con cui escludere la strumentazione automatica Node.js
-
dotnet: specifica i carichi di lavoro da escludere dall'instrumentazione automatica con .NET
Per ciascuno dei linguaggi di cui sopra, è possibile configurare i seguenti campi.
-
namespaces: un elenco di stringhe che specifica i namespace da escludere. Il valore predefinito è un elenco vuoto, ossia []
-
implementazioni: un elenco di stringhe che specifica le implementazioni da escludere. Specifica il valore nel formato
namespace/deployment. Il valore predefinito è un elenco vuoto, ossia [] -
daemonsets: un elenco di stringhe che specifica i daemonsets da escludere. Specifica il valore nel formato
namespace/daemonset. Il valore predefinito è un elenco vuoto, ossia [] -
statefulsets: un elenco di stringhe che specifica gli statefulsets da escludere. Specifica il valore nel formato
namespace/statefulset. Il valore predefinito è un elenco vuoto, ossia []
-
Di seguito è riportato un esempio di configurazione che abilita automaticamente Application Signals per tutti i carichi di lavoro di servizio esistenti e nuovi sul cluster.
manager: applicationSignals: autoMonitor: monitorAllServices: true restartPods: true
Di seguito è riportato un esempio di configurazione che abilita automaticamente Application Signals per ogni nuovo carico di lavoro di servizio che viene attivato e per qualsiasi carico di lavoro di servizio esistente che viene riavviato in modo esplicito nel cluster.
manager: applicationSignals: autoMonitor: monitorAllServices: true
Di seguito è riportato un esempio di configurazione che abilita automaticamente Application Signals con Java per tutti i pod esistenti e nuovi che corrispondono a un carico di lavoro nel namespace pet-warehouse.
manager: applicationSignals: autoMonitor: restartPods: true customSelector: java: namespaces: ["pet-warehouse"]
Di seguito è riportato un esempio di configurazione che abilita automaticamente Application Signals con Python per tutti i carichi di lavoro di servizio esistenti e nuovi sul cluster, ad eccezione dell'implementazione pet-clinic.
manager: applicationSignals: autoMonitor: monitorAllServices: true languages: ["python"] restartPods: true exclude: python: deployments: ["pet-warehouse/pet-clinic"]
Di seguito è riportato un esempio di configurazione che abilita automaticamente Application Signals con Java per tutti i carichi di lavoro di servizio nel cluster, ad eccezione di quelli nel namespace python-apps, e inoltre abilita Application Signals con Python specificamente per l'implementazione sample-python-app nel namespace python-apps.
manager: applicationSignals: autoMonitor: monitorAllServices: true languages: ["java"] restartPods: true customSelector: python: deployments: ["python-apps/sample-python-app"] exclude: java: namespaces: ["python-apps"]
Considerazioni per i cluster Kubernetes di grandi dimensioni
Se utilizzi cluster Kubernetes di grandi dimensioni, potresti aver bisogno di una configurazione aggiuntiva per assicurarti che l'agente funzioni in modo affidabile. CloudWatch Le sezioni seguenti descrivono i problemi comuni e le configurazioni consigliate per cluster di grandi dimensioni.
Installazioni separate degli agenti per le metriche a livello di cluster e a livello di nodo
Nota
Questa sezione si applica solo se hai abilitato Container Insights con osservabilità avanzata. Se utilizzi Container Insights esclusivamente con OpenTelemetry le metriche, l'installazione predefinita implementa già installazioni di agenti separate.
Per impostazione predefinita, l' CloudWatch agente viene eseguito come daemonset su ogni nodo del cluster. Un agente Pod viene eletto leader per raccogliere le metriche a livello di cluster. Queste metriche includono le metriche del piano di controllo e le metriche sullo stato del carico di lavoro. Su cluster di grandi dimensioni, questo leader Pod può essere interrotto con un errore di memoria esaurita (OOM) perché esegue un lavoro aggiuntivo condividendo gli stessi limiti di risorse di tutti gli altri agenti. Pod
Per determinare se stai riscontrando questo problema, verifica la presenza di agenti Pod in stato di errore con codice di uscita e motivo. 137 OOMKilled Un sintomo comune è che un agente Pod (il leader) si blocca, viene eletto un nuovo leader e Pod anche questo si blocca, creando un ciclo ricorrente. Per confermare questo comportamento, controlla l'elezione del leader ConfigMap eseguendo il comando seguente.
kubectl describe configmap cwagent-clusterleader -n amazon-cloudwatch
Se ConfigMap mostra frequenti modifiche alla voce del leader, ciò indica che un nuovo leader viene eletto ripetutamente, il che conferma il problema.
Per evitare questo problema, è possibile separare l'agente in due installazioni:
Un daemset per le metriche a livello di nodo e i segnali applicativi
Un'implementazione per metriche a livello di cluster
Questa separazione consente di gestire e scalare ogni installazione in modo indipendente.
Per abilitare questa configurazione, utilizzate la configurazione avanzata per definire due voci nella agents sezione:
Imposta la variabile di
CWAGENT_ROLEambienteNODEsu sull'agente daemonset.Imposta la variabile di
CWAGENT_ROLEambiente suLEADERsull'agente di distribuzione.
Importante
La configurazione dell'agente di distribuzione deve abilitare solo Container Insights. Non abilitare Application Signals sull'agente di distribuzione. Entrambe le installazioni vengono eseguite hostNetwork per impostazione predefinita e l'attivazione di Application Signals su entrambe causa conflitti di associazione delle porte.
L'esempio seguente mostra una configurazione avanzata che separa l'agente in due installazioni.
agents: - name: cloudwatch-agent env: - name: CWAGENT_ROLE value: NODE - name: cloudwatch-agent-ci-leader mode: deployment config: { "logs": { "metrics_collected": { "kubernetes": { "enhanced_container_insights": true } } } } env: - name: CWAGENT_ROLE value: LEADER resources: limits: memory: 10Gi cpu: 2000m
In questo esempio, oltre a impostare la variabile di CWAGENT_ROLE ambiente su ogni installazione dell'agente, sovrascrive la modalità, la configurazione e i limiti di risorse predefiniti solo per l'agente di distribuzione. L'cloudwatch-agentinstallazione di base utilizza le impostazioni predefinite.
È possibile personalizzare ulteriormente l'installazione di ogni agente aggiungendo nodeSelectortolerations, o nodeAffinity campi per pianificare il leader Pod su un nodo specifico. I limiti delle risorse mostrati nell'esempio precedente sono illustrativi. Modifica questi valori in base alle dimensioni del cluster e al numero di metriche raccolte dal leader. Pod
Considerazioni per Amazon EKS Hybrid Nodes
Node-level le metriche non sono disponibili per i nodi ibridi perché Container Insights dipendono dalla disponibilità dell'EC2 Instance Metadata Service (IMDS) per le metriche a livello di nodo. Per i nodi ibridi sono disponibili metriche a livello di cluster, Pod, carico di lavoro e container.
Dopo aver installato il componente aggiuntivo, applica una patch alla amazoncloudwatchagents risorsa per aggiungere la variabile di RUN_WITH_IRSA ambiente in modo che l'agente funzioni correttamente sui nodi ibridi:
kubectl patch amazoncloudwatchagents cloudwatch-agent -n amazon-cloudwatch --type=json -p '[{"op":"add","path":"/spec/env/-","value":{"name":"RUN_WITH_IRSA","value":"True"}}]'
Risoluzione dei problemi relativi al componente aggiuntivo Amazon CloudWatch Observability EKS o al diagramma Helm
Utilizza le seguenti informazioni per risolvere i problemi con il componente aggiuntivo Amazon CloudWatch Observability EKS o il diagramma Helm
Argomenti
Aggiornamento ed eliminazione del componente aggiuntivo Amazon CloudWatch Observability EKS o del diagramma Helm
Per istruzioni sull'aggiornamento o l'eliminazione del componente aggiuntivo Amazon CloudWatch Observability EKS, consulta Gestione dei componenti aggiuntivi Amazon EKS. https://docs.aws.amazon.com/eks/latest/userguide/managing-add-ons.html Usa amazon-cloudwatch-observability come nome del componente aggiuntivo.
Per eliminare il grafico Helm in un cluster, immetti il comando seguente.
helm delete amazon-cloudwatch-observability -n amazon-cloudwatch --wait
Verifica la versione dell' CloudWatch agente utilizzata dal componente aggiuntivo Amazon CloudWatch Observability EKS o dal grafico Helm
Il componente aggiuntivo Amazon CloudWatch Observability EKS e il diagramma Helm installano una risorsa personalizzata di tipo AmazonCloudWatchAgent che controlla il comportamento del daemonset dell' CloudWatch agente nel cluster, inclusa la versione dell'agente utilizzata. CloudWatch È possibile ottenere un elenco di tutte le risorse AmazonCloudWatchAgent personalizzate installate sul cluster u immettendo il seguente comando:
kubectl get amazoncloudwatchagent -A
Nell'output di questo comando, dovresti essere in grado di controllare la versione dell'agente. CloudWatch In alternativa, puoi anche descrivere la risorsa amazoncloudwatchagent o uno dei pod cloudwatch-agent-* in esecuzione sul cluster per ispezionare l'immagine utilizzata.
Gestione di un ConfigurationConflict quando si gestisce il componente aggiuntivo o il grafico Helm
Quando installi o aggiorni il componente aggiuntivo Amazon CloudWatch Observability EKS o il diagramma Helm, se noti un errore causato dalle risorse esistenti, è probabile che l' CloudWatch agente e i componenti associati come ServiceAccount, the e the siano già installati nel ClusterRole cluster. ClusterRoleBinding
L'errore visualizzato dal componente aggiuntivo includerà Conflicts found when
trying to apply. Will not continue due to resolve conflicts mode,
L'errore visualizzato dal grafico Helm sarà simile a Error:
INSTALLATION FAILED: Unable to continue with install and invalid ownership
metadata..
Quando l'add-on o il diagramma Helm tenta di installare l' CloudWatch agente e i componenti associati, se rileva modifiche nei contenuti, per impostazione predefinita fallisce l'installazione o l'aggiornamento per evitare di sovrascrivere lo stato delle risorse sul cluster.
Se stai tentando di eseguire l'onboarding del componente aggiuntivo Amazon CloudWatch Observability EKS e riscontri questo errore, ti consigliamo di eliminare una configurazione di CloudWatch agente esistente che avevi precedentemente installato nel cluster e quindi di installare il componente aggiuntivo EKS o il diagramma Helm. Assicurati di eseguire il backup di tutte le personalizzazioni che potresti aver apportato alla configurazione originale CloudWatch dell'agente, ad esempio una configurazione personalizzata dell'agente, e forniscile al componente aggiuntivo o al diagramma Helm la prossima volta che lo installerai o lo aggiornerai. Se in precedenza avevi installato l' CloudWatch agente per l'onboarding in Container Insights, consulta Guida all'installazione (AWS CLI) per ulteriori informazioni.
In alternativa, il componente aggiuntivo supporta un'opzione di configurazione per la risoluzione dei conflitti che può specificare OVERWRITE. È possibile utilizzare questa opzione per procedere con l'installazione o l'aggiornamento del componente aggiuntivo sovrascrivendo i conflitti nel cluster. Se utilizzi la console Amazon EKS, trovi il metodo di risoluzione dei conflitti selezionando le impostazioni di configurazione facoltative quando crei o aggiorni il componente aggiuntivo. Se stai usando il AWS CLI, puoi fornire il comando --resolve-conflicts OVERWRITE per creare o aggiornare il componente aggiuntivo.
Disattiva i segnali delle applicazioni
Fine-tune le tue preferenze di monitoraggio del servizio nella CloudWatch console o con l'SDK.
Per disattivare il monitoraggio automatico di Application Signals, segui la procedura seguente:
Utilizzando CLI o SDK
La seguente configurazione può essere applicata sia come configurazione avanzata all'add-on EKS sia come sovrascrittura dei valori quando si utilizza il grafico helm.
{ "manager": { "applicationSignals": { "autoMonitor": { "monitorAllServices": false } } } }
Riavviate i servizi per rendere effettive le modifiche.
Utilizzo della console
Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/
Nel pannello di navigazione, in Application Signals (APM), scegli Servizi.
Scegli Abilita Application Signals per visualizzare la pagina di abilitazione.
Deseleziona la Auto-Monitor casella di controllo per ogni servizio che non desideri monitorare.
Riavvia i servizi per rendere effettive le modifiche.