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 dell' CloudWatch agente per raccogliere le metriche del cluster
Importante
Se stai installando Container Insights su un cluster Amazon EKS, ti consigliamo di utilizzare il componente aggiuntivo Amazon CloudWatch Observability EKS per l'installazione, anziché seguire le istruzioni in questa sezione. Per ulteriori informazioni e istruzioni, consulta Avvio rapido con il componente aggiuntivo Amazon CloudWatch Observability EKS.
Per configurare Container Insights per raccogliere i parametri, puoi seguire le fasi in Configurazione di Quick Start per Container Insights su Amazon EKS e Kubernetes oppure le fasi in questa sezione. Nei passaggi seguenti, configuri l' CloudWatch agente in modo che sia in grado di raccogliere metriche dai tuoi cluster.
Se esegui l'installazione su un cluster Amazon EKS e segui le istruzioni riportate in questa sezione a partire dal 6 novembre 2023, sul cluster installerai Approfondimenti sui container con osservabilità migliorata per Amazon EKS.
Passaggio 1: creare un namespace per CloudWatch
Usa il passaggio seguente per creare uno spazio dei nomi Kubernetes richiesto. amazon-cloudwatch
CloudWatch Puoi ignorare questa fase se questo spazio dei nomi è già stato creato.
Per creare uno spazio dei nomi per CloudWatch
-
Inserire il seguente comando.
kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cloudwatch-namespace.yaml
Fase 2: creazione di un account di servizio nel cluster
Utilizza uno dei seguenti metodi per creare un account di servizio per l' CloudWatch agente, se non ne hai già uno.
Utilizzare
kubectl
Usa un
kubeconfig
file
Utilizzare kubectl
per l'autenticazione
Da utilizzare kubectl
per creare un account di servizio per l' CloudWatch agente
-
Inserire il seguente comando.
kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cwagent/cwagent-serviceaccount.yaml
Se non hai seguito i passaggi precedenti, ma disponi già di un account di servizio per l' CloudWatch agente che desideri utilizzare, devi assicurarti che abbia le seguenti regole. Inoltre, nelle restanti fasi dell'installazione di Container Insights devi utilizzare il nome di quell'account di servizio invece di cloudwatch-agent
.
rules: - apiGroups: [""] resources: ["pods", "nodes", "endpoints"] verbs: ["list", "watch"] - apiGroups: [ "" ] resources: [ "services" ] verbs: [ "list", "watch" ] - apiGroups: ["apps"] resources: ["replicasets", "daemonsets", "deployments", "statefulsets"] verbs: ["list", "watch"] - apiGroups: ["batch"] resources: ["jobs"] verbs: ["list", "watch"] - apiGroups: [""] resources: ["nodes/proxy"] verbs: ["get"] - apiGroups: [""] resources: ["nodes/stats", "configmaps", "events"] verbs: ["create", "get"] - apiGroups: [""] resources: ["configmaps"] resourceNames: ["cwagent-clusterleader"] verbs: ["get","update"] - nonResourceURLs: ["/metrics"] verbs: ["get", "list", "watch"]
Utilizzare kubeconfig
per l'autenticazione
In alternativa, è possibile utilizzare un kubeconfig
file per l'autenticazione. Questo metodo consente di aggirare la necessità di un account di servizio specificando direttamente il kubeconfig
percorso nella configurazione dell' CloudWatch agente. Consente inoltre di eliminare la dipendenza dall'API del piano di controllo di Kubernetes per l'autenticazione, semplificando la configurazione e potenzialmente aumentando la sicurezza gestendo l'autenticazione tramite il file kubeconfig.
Per utilizzare questo metodo, aggiorna il file di configurazione CloudWatch dell'agente per specificare il percorso del file, come nell'esempio seguente. kubeconfig
{ "logs": { "metrics_collected": { "kubernetes": { "cluster_name": "
YOUR_CLUSTER_NAME
", "enhanced_container_insights": false, "accelerated_compute_metrics": false, "tag_service": false, "kube_config_path": "/path/to/your/kubeconfig" "host_ip": "
HOSTIP
" } } } }
Per creare un kubeconfig
file, crea una Richiesta di firma del certificato (CSR) per l'admin/{create_your_own_user}
utente con il ruolo system:masters
Kubernetes. Quindi firma con l'Autorità di certificazione (CA) del cluster Kubernetes e crea il file. kubeconfig
Passaggio 3: crea un file per l'agente ConfigMap CloudWatch
Utilizza i seguenti passaggi per creare un messaggio ConfigMap per l' CloudWatch agente.
Per creare un file ConfigMap per l' CloudWatch agente
-
Scaricate il file ConfigMap YAML sul vostro host
kubectl
client eseguendo il seguente comando:curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cwagent/cwagent-configmap-enhanced.yaml
-
Modifica il file YAML scaricato come segue:
-
cluster_name: nella sezione
kubernetes
, sostituisci{{cluster_name}}
con il nome del cluster. Rimuovi i caratteri{{}}
. In alternativa, se stai utilizzando un cluster Amazon EKS, puoi eliminare il campo"cluster_name"
e il valore. In tal caso, l' CloudWatch agente rileva il nome del cluster dai EC2 tag Amazon.
-
-
(Facoltativo) Apporta ulteriori modifiche al file ConfigMap in base ai tuoi requisiti di monitoraggio, come segue:
-
metrics_collection_interval: nella sezione
kubernetes
, puoi specificare ogni quanto l'agente raccoglie i parametri. Il valore predefinito è 60 secondi. L'intervallo di raccolta cadvisor predefinito in Kubelet è 15 secondi, quindi non impostare questo valore su meno di 15 secondi. -
endpoint_override — Nella
logs
sezione, puoi specificare l'endpoint CloudWatch Logs se desideri sovrascrivere l'endpoint predefinito. Questo può essere necessario se stai pubblicando da un cluster in un VPC e desideri che i dati vadano a un endpoint VPC. -
force_flush_interval — Nella
logs
sezione, puoi specificare l'intervallo per il raggruppamento in batch degli eventi di registro prima che vengano pubblicati su Logs. CloudWatch Il valore predefinito è 5 secondi. -
region: per impostazione predefinita, l'agente pubblica i parametri nella regione in cui si trova il nodo worker. Per sostituire questa impostazione, è possibile aggiungere un campo
region
nella sezioneagent
, ad esempio"region":"us-west-2"
. -
sezione statsd — Se desideri che l'agente CloudWatch Logs venga eseguito anche come listener StatsD in ogni nodo di lavoro del cluster, puoi aggiungere una
statsd
sezione allametrics
sezione, come nell'esempio seguente. Per informazioni sulle altre opzioni StatsD per questa sezione, consulta Recupero dei parametri personalizzati con StatsD."metrics": { "metrics_collected": { "statsd": { "service_address":":8125" } } }
Di seguito un esempio completo della sezione JSON. Se stai usando un
kubeconfig
file per l'autenticazione, aggiungi ilkube_config_path
parametro per specificare il percorso del tuo file kubeconfig.{ "agent": { "region": "us-east-1" }, "logs": { "metrics_collected": { "kubernetes": { "cluster_name": "MyCluster", "metrics_collection_interval": 60, "kube_config_path": "
/path/to/your/kubeconfig
" //if using kubeconfig for authentication } }, "force_flush_interval": 5, "endpoint_override": "logs.us-east-1.amazonaws.com" }, "metrics": { "metrics_collected": { "statsd": { "service_address": ":8125" } } } }
-
-
Crea il file ConfigMap nel cluster eseguendo il comando seguente.
kubectl apply -f cwagent-configmap-enhanced.yaml
Fase 4: Implementare l' CloudWatch agente come DaemonSet
Per completare l'installazione dell' CloudWatch agente e iniziare a raccogliere le metriche dei container, procedi nel seguente modo.
Per distribuire l' CloudWatch agente come DaemonSet
-
-
Se non desideri utilizzare StatsD sul cluster, immetti il comando seguente.
kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cwagent/cwagent-daemonset.yaml
-
Se desideri utilizzare StatsD, procedi nel modo seguente:
-
Scarica DaemonSet YAML sul tuo host
kubectl
client eseguendo il comando seguente.curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cwagent/cwagent-daemonset.yaml
-
Rimuovi il commento della sezione
port
nel filecwagent-daemonset.yaml
come descritto di seguito:ports: - containerPort: 8125 hostPort: 8125 protocol: UDP
-
Distribuisci l' CloudWatch agente nel tuo cluster eseguendo il comando seguente.
kubectl apply -f cwagent-daemonset.yaml
Distribuisci l' CloudWatch agente sui nodi Windows del cluster eseguendo il comando seguente. Il listener StatSD non è supportato dall' CloudWatch agente in Windows.
kubectl apply -f cwagent-daemonset-windows.yaml
-
-
-
Convalida che l'agente venga implementato eseguendo il seguente comando.
kubectl get pods -n amazon-cloudwatch
Al termine, l' CloudWatch agente crea un gruppo di log denominato /aws/containerinsights/
e invia gli eventi del registro delle prestazioni a questo gruppo di log. Se lo configuri anche come listener StatsD, l'agente ascolta anche i parametri StatsD sulla porta 8125 con l'indirizzo IP del nodo dove è pianificato il pod dell'applicazione.Cluster_Name
/performance
Risoluzione dei problemi
Se l'agente non viene implementato correttamente, prova quanto segue:
-
Per ottenere l'elenco di pod esegui il seguente comando.
kubectl get pods -n amazon-cloudwatch
-
Esegui il comando seguente e controlla gli eventi nella parte inferiore dell'output.
kubectl describe pod
pod-name
-n amazon-cloudwatch -
Esegui il comando seguente per controllare i log.
kubectl logs
pod-name
-n amazon-cloudwatch