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à.
Configurazione avanzata per OTel Container Insights su Amazon EKS
Questo argomento tratta scenari di configurazione avanzati per OTel Container Insights su Amazon EKS. Utilizza queste configurazioni per personalizzare la raccolta delle metriche, filtrare i log, raccogliere dati di telemetria tra gli account, aggiungere dimensioni personalizzate e ottimizzare l'allocazione delle risorse per cluster di grandi dimensioni.
Prerequisiti
Prima di configurare le impostazioni avanzate, verifica di soddisfare i seguenti requisiti.
-
OTel Container Insights installato e
ACTIVEdisponibile sul tuo cluster Amazon EKS -
Cluster Amazon EKS che esegue Kubernetes versione 1.28 o successiva
-
AWS CLI versione 2.15.0 o successiva
-
kubectlconfigurato per comunicare con il cluster di destinazione -
Autorizzazioni IAM:
eks:UpdateAddoneks:DescribeAddon, eiam:AttachRolePolicy(richieste per la configurazione tra più account)
Schema di configurazione generale
Tutte le configurazioni avanzate seguono lo stesso schema. Si passa una configurazione JSON al amazon-cloudwatch-observability componente aggiuntivo utilizzando il comando. aws eks
update-addon
aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values 'JSON-configuration' \ --resolve-conflicts OVERWRITE
Importante
Il --resolve-conflicts OVERWRITE flag sostituisce qualsiasi configurazione aggiuntiva esistente. Per preservare le impostazioni esistenti, uniscile alla nuova configurazione prima di eseguire il comando.
Filtraggio dei log
È possibile ridurre CloudWatch i costi dei registri escludendo i registri che soddisfano criteri specifici. Utilizza il filtro dei log per eliminare i log a livello di debug o dettagliati prima che l'agente li invii a. CloudWatch
Per configurare il filtraggio dei log
-
Esegui il comando seguente per aggiornare il componente aggiuntivo con una configurazione del filtro di registro. Sostituisci
cluster-namecon il nome del tuo cluster Amazon EKS.aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{ "otelContainerInsights": { "enabled": true }, "agent": { "config": { "logs": { "metrics_collected": { "kubernetes": { "enhanced_container_insights": true } }, "exclude_filters": [ { "type": "log_level_filter", "log_level": "DEBUG" } ] } } } }' \ --resolve-conflicts OVERWRITE -
Verifica che lo stato del componente aggiuntivo sia
ACTIVEsuccessivo all'aggiornamento.aws eks describe-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --query "addon.status" \ --output text
La exclude_filters configurazione rimuove le voci di registro che corrispondono al livello di registro specificato prima che l'agente le invii a CloudWatch Logs. Ciò riduce il volume di acquisizione dei log e i costi associati.
Multi-account raccolta
Puoi inviare dati di telemetria dagli account dei carichi di lavoro a un account di monitoraggio centrale configurando l'assunzione di ruoli IAM tra account. Questo approccio offre una visione unica delle metriche e dei log di più cluster Amazon EKS su diversi account. AWS
Per configurare una raccolta per più account
Per creare il ruolo interaccount nell'account di monitoraggio
-
Nell'account di monitoraggio centrale, crea un ruolo IAM con una policy di fiducia che consenta all'account del carico di lavoro di assumerlo. Sostituiscilo
workload-account-idcon l'ID dell' AWS account del carico di lavoro.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::workload-account-id:root" }, "Action": "sts:AssumeRole" } ] } -
Allega la policy
CloudWatchAgentServerPolicygestita al ruolo interaccount.
Per configurare il componente aggiuntivo per la distribuzione tra account
-
Nell'account di carico di lavoro, aggiorna il componente aggiuntivo per assumere il ruolo tra account. Sostituiscilo
cluster-namecon il nome del tuo cluster Amazon EKS emonitoring-account-idcon l'ID AWS account dell'account di monitoraggio centralizzato.aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{ "otelContainerInsights": { "enabled": true }, "agent": { "config": { "credentials": { "role_arn": "arn:aws:iam::monitoring-account-id:role/CrossAccountCWObservabilityRole" } } } }' \ --resolve-conflicts OVERWRITE -
Verifica che lo stato del componente aggiuntivo sia
ACTIVEsuccessivo all'aggiornamento.aws eks describe-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --query "addon.status" \ --output text
Dimensioni metriche personalizzate
Puoi aggiungere dimensioni personalizzate derivate dalle etichette Kubernetes alle metriche di Container Insights. Le dimensioni personalizzate consentono di filtrare e raggruppare le metriche con una maggiore granularità, ad esempio per team, ambiente o livello di applicazione.
Per aggiungere dimensioni personalizzate dalle etichette Kubernetes
-
Esegui il comando seguente per configurare dimensioni personalizzate. Sostituiscilo
cluster-namecon il nome del tuo cluster Amazon EKS elabel-keycon l'etichetta Kubernetes da utilizzare come dimensione.aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{ "otelContainerInsights": { "enabled": true }, "agent": { "config": { "logs": { "metrics_collected": { "kubernetes": { "enhanced_container_insights": true, "metric_dimensions": { "custom_dimensions": ["label-key"] } } } } } } }' \ --resolve-conflicts OVERWRITE -
Verifica che lo stato del componente aggiuntivo sia
ACTIVEdopo l'aggiornamento.aws eks describe-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --query "addon.status" \ --output text
Dopo l'entrata in vigore della configurazione, le etichette Kubernetes specificate vengono visualizzate come dimensioni nelle metriche di Container Insights in. CloudWatch
Ottimizzazione delle risorse per cluster di grandi dimensioni
Per i cluster di grandi dimensioni, potrebbe essere necessario aumentare i limiti di CPU e memoria per l'agente. CloudWatch DaemonSet L'allocazione delle risorse predefinita funziona bene per i cluster di piccole dimensioni, ma i cluster più grandi generano più dati di telemetria e richiedono risorse aggiuntive per gli agenti.
La tabella seguente fornisce linee guida per il dimensionamento in base alle dimensioni del cluster.
| Dimensione del cluster | Richiesta CPU | Limite della CPU | Richiesta di memoria | Memory limit (Limite memoria) |
|---|---|---|---|---|
| Piccolo (20 nodi o meno) | 100 m | 200 m | 128 Mi | 256 Mi |
| Medio (21—100 nodi) | 200 m | 400 m | 256 Mi | 512 Mi |
| Grande (oltre 100 nodi) | 300 m | 500 metri | 384 Mi | 768 Mi |
| Extra-large (oltre 500 nodi) | 500 m | 1000 m | 512 Mi | 1 Gi |
Per configurare i limiti delle risorse per l'agente DaemonSet
-
Esegui il comando seguente per impostare le richieste e i limiti delle risorse. Sostituisci
cluster-namecon il nome del tuo cluster Amazon EKS e i valori delle risorse con i valori della tabella precedente.aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{ "otelContainerInsights": { "enabled": true }, "agent": { "resources": { "requests": { "cpu": "cpu-request", "memory": "memory-request" }, "limits": { "cpu": "cpu-limit", "memory": "memory-limit" } } } }' \ --resolve-conflicts OVERWRITE -
Verifica che lo stato del componente aggiuntivo sia valido
ACTIVEe che i pod degli agenti si riavviino con la nuova allocazione delle risorse.aws eks describe-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --query "addon.status" \ --output text -
Verificate che i pod degli agenti funzionino con i nuovi limiti di risorse.
kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent -o jsonpath='{.items[0].spec.containers[0].resources}'
Verifica le modifiche alla configurazione
Dopo aver applicato una configurazione avanzata, verificate che il componente aggiuntivo sia integro e che gli agent pods siano stati riavviati correttamente.
Per verificare le modifiche alla configurazione
-
Verifica che lo stato del componente aggiuntivo sia
ACTIVE. Sostituiscicluster-namecon il nome del tuo cluster Amazon EKS.aws eks describe-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --query "addon.{Status:status,ConfigValues:configurationValues}" \ --output table -
Verifica che gli agent pod siano stati riavviati e siano in stato.
Runningkubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agentTutti i pod degli agenti devono mostrare
Runninglo stato con un orario di riavvio recente.
Risoluzione dei problemi
Utilizza le seguenti linee guida per risolvere i problemi più comuni con le configurazioni avanzate.
Add-on l'aggiornamento non riesce con ConfigurationConflict
Sintomo: il aws eks update-addon comando restituisce un ConfigurationConflict errore.
Causa: la configurazione JSON fornita non è valida o contiene chiavi non valide.
Soluzione: completa i seguenti passaggi per risolvere il problema.
-
Convalida la configurazione JSON utilizzando un linter JSON o eseguendo il comando seguente.
echo 'your-json-configuration' | python3 -m json.tool -
Verifica che tutte le chiavi di configurazione siano valide per il componente aggiuntivo.
amazon-cloudwatch-observability -
Riprova l'aggiornamento con il codice JSON corretto.
Cross-account le metriche non compaiono nell'account di monitoraggio
Sintomo: dopo aver configurato la raccolta per più account, le metriche non vengono visualizzate nell'account di monitoraggio centralizzato.
Causa: la policy o le autorizzazioni relative ai ruoli IAM per più account non sono corrette.
Soluzione: completa i seguenti passaggi per risolvere questo problema.
-
Verifica che la politica di attendibilità nell'account di monitoraggio consenta all'account del carico di lavoro di assumere il ruolo.
-
Verifica che al ruolo interaccount sia associata la policy
CloudWatchAgentServerPolicygestita. -
Verifica la presenza di errori nei registri degli agenti.
AssumeRolekubectl logs -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent --tail=100 | grep -i "AssumeRole\|AccessDenied" -
Verifica che il ruolo IAM dell'agente nell'account del carico di lavoro disponga dell'
sts:AssumeRoleautorizzazione per il ruolo ARN tra account.