Configurazione dell' CloudWatch agente per raccogliere le metriche del cluster - Amazon CloudWatch

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
  1. 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
  2. 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.

  3. (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 sezione agent, 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 alla metrics 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 il kube_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" } } } }
  4. 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:

      1. 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
      2. Rimuovi il commento della sezione port nel file cwagent-daemonset.yaml come descritto di seguito:

        ports: - containerPort: 8125 hostPort: 8125 protocol: UDP
      3. Distribuisci l' CloudWatch agente nel tuo cluster eseguendo il comando seguente.

        kubectl apply -f cwagent-daemonset.yaml
      4. 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
  1. 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/Cluster_Name/performance 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.

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