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.

Fase 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

  • Utilizzare un file kubeconfig

Utilizzare kubectl per l'autenticazione

Da utilizzare kubectl per creare un account di servizio per l' CloudWatchagente
  • 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"] - apiGroups: [ "discovery.k8s.io" ] resources: [ "endpointslices" ] verbs: [ "list", "watch", "get" ]

Utilizzare kubeconfig per l'autenticazione

In alternativa, puoi utilizzare un file kubeconfig 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. Inoltre, consente di eliminare la dipendenza dall'API del piano di controllo di Kubernetes per l'autenticazione, semplificando la configurazione e potenzialmente aumentando la sicurezza grazie alla gestione dell'autenticazione tramite il file kubeconfig.

Per utilizzare questo metodo, aggiorna il file di configurazione dell' CloudWatch agente per specificare il percorso kubeconfig del file, come nell'esempio seguente.

{ "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 file kubeconfig, crea una richiesta di firma del certificato (CSR) per l'utente admin/{create_your_own_user} con il ruolo system:masters in Kubernetes. Quindi firma con l'Autorità di certificazione (CA) del cluster Kubernetes e crea il file kubeconfig.

Fase 3: Creare un ConfigMap file per l' CloudWatchagente

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 utilizzi un file kubeconfig per l'autenticazione, aggiungi il parametro kube_config_path 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 il file DaemonSet YAML sull'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