Richten Sie den CloudWatch Agenten für die Erfassung von Cluster-Metriken ein - Amazon CloudWatch

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Richten Sie den CloudWatch Agenten für die Erfassung von Cluster-Metriken ein

Wichtig

Wenn Sie Container Insights auf einem EKS Amazon-Cluster installieren, empfehlen wir Ihnen, das Amazon CloudWatch EKS Observability-Add-on für die Installation zu verwenden, anstatt die Anweisungen in diesem Abschnitt zu verwenden. Weitere Informationen und Anweisungen finden Sie unter Installieren Sie das Amazon CloudWatch Observability-Add-on EKS.

Um Container Insights zum Sammeln von Metriken einzurichten, können Sie die Schritte unter Schnellstart-Setup für Container Insights auf Amazon EKS und Kubernetes oder die Schritte in diesem Abschnitt befolgen. In den folgenden Schritten richten Sie den CloudWatch Agenten so ein, dass er Metriken aus Ihren Clustern sammeln kann.

Wenn Sie in einem EKS Amazon-Cluster installieren und die Anweisungen in diesem Abschnitt am oder nach dem 6. November 2023 verwenden, installieren Sie Container Insights mit verbesserter Observability für Amazon EKS im Cluster.

Schritt 1: Erstellen Sie einen Namespace für CloudWatch

Verwenden Sie den folgenden Schritt, um einen angeforderten Kubernetes-Namespace zu erstellen. amazon-cloudwatch CloudWatch Sie können diesen Schritt überspringen, wenn Sie diesen Namespace bereits erstellt haben.

Um einen Namespace zu erstellen für CloudWatch
  • Geben Sie den folgenden Befehl ein.

    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

Schritt 2: Erstellen eines Servicekontos im Cluster

Verwenden Sie eine der folgenden Methoden, um ein Dienstkonto für den CloudWatch Agenten zu erstellen, falls Sie noch keines haben.

  • Verwenden von kubectl

  • Verwenden Sie eine kubeconfig Datei

kubectlFür die Authentifizierung verwenden

Wird verwendetkubectl, um ein Dienstkonto für den CloudWatch Agenten zu erstellen
  • Geben Sie den folgenden Befehl ein.

    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

Wenn Sie die vorherigen Schritte nicht befolgt haben, aber bereits über ein Dienstkonto für den CloudWatch Agenten verfügen, den Sie verwenden möchten, müssen Sie sicherstellen, dass für dieses Konto die folgenden Regeln gelten. Außerdem müssen Sie in der restlichen Schritten der Container Insights-Installation statt cloudwatch-agent den Namen des betreffenden Servicekontos verwenden.

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"]

kubeconfigFür die Authentifizierung verwenden

Alternativ können Sie eine kubeconfig Datei zur Authentifizierung verwenden. Mit dieser Methode können Sie die Notwendigkeit eines Dienstkontos umgehen, indem Sie den kubeconfig Pfad direkt in Ihrer CloudWatch Agentenkonfiguration angeben. Außerdem können Sie damit Ihre Abhängigkeit von der Kubernetes-Steuerebene API bei der Authentifizierung beseitigen, Ihre Einrichtung optimieren und möglicherweise die Sicherheit erhöhen, indem Sie die Authentifizierung über Ihre kubeconfig-Datei verwalten.

Um diese Methode zu verwenden, aktualisieren Sie Ihre CloudWatch Agentenkonfigurationsdatei, um den Pfad zu Ihrer kubeconfig Datei anzugeben, wie im folgenden Beispiel.

{ "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" } } } }

Um eine kubeconfig Datei zu erstellen, erstellen Sie eine Certificate Signing Request (CSR) für den admin/{create_your_own_user} Benutzer mit der system:masters Kubernetes-Rolle. Signieren Sie dann bei der Certificate Authority (CA) des Kubernetes-Clusters und erstellen Sie die Datei. kubeconfig

Schritt 3: Erstellen Sie eine ConfigMap für den Agenten CloudWatch

Gehen Sie wie folgt vor, um eine ConfigMap für den CloudWatch Agenten zu erstellen.

Um eine ConfigMap für den CloudWatch Agenten zu erstellen
  1. Laden Sie das ConfigMap YAML auf Ihren kubectl Client-Host herunter, indem Sie den folgenden Befehl ausführen:

    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. Bearbeiten Sie die heruntergeladene YAML Datei wie folgt:

    • cluster_name – Ersetzen Sie im Abschnitt kubernetes den Platzhalter {{cluster_name}} durch den Namen Ihres Clusters. Entfernen Sie die Zeichen {{}}. Wenn Sie einen EKS Amazon-Cluster verwenden, können Sie das "cluster_name" Feld und den Wert alternativ löschen. Wenn Sie dies tun, erkennt der CloudWatch Agent den Clusternamen anhand der EC2 Amazon-Tags.

  3. (Optional) Nehmen Sie auf der ConfigMap Grundlage Ihrer Überwachungsanforderungen weitere Änderungen an der vor, und zwar wie folgt:

    • metrics_collection_interval – Im Abschnitt kubernetes können Sie angeben, wie oft der Agent Metriken sammelt. Standardmäßig ist ein Zeitraum von 60 Sekunden festgelegt. Das standardmäßige cadvisor-Erfassungsintervall in Kubelet beträgt 15 Sekunden. Stellen Sie für diesen Wert also nicht weniger als 15 Sekunden ein.

    • endpoint_override — In logs diesem Abschnitt können Sie den Endpunkt CloudWatch Logs angeben, wenn Sie den Standardendpunkt überschreiben möchten. Dies empfiehlt sich möglicherweise, wenn Sie von einem Cluster in einem aus veröffentlichen VPC und die Daten an einen Endpunkt übertragen möchten. VPC

    • force_flush_interval — In logs diesem Abschnitt können Sie das Intervall angeben, in dem Protokollereignisse gebündelt werden, bevor sie in Logs veröffentlicht werden. CloudWatch Standardmäßig ist ein Zeitraum von 5 Sekunden festgelegt.

    • Region – Standardmäßig veröffentlicht der Agent Metriken in der Region, in der sich der Workerknoten befindet. Um diese Einstellung zu überschreiben, können Sie ein region-Feld zum Abschnitt agent hinzufügen. Beispiel: "region":"us-west-2".

    • statsd-Abschnitt — Wenn Sie möchten, dass der CloudWatch Logs-Agent auch als StatsD-Listener in jedem Worker-Knoten Ihres Clusters ausgeführt wird, können Sie dem statsd metrics Abschnitt einen Abschnitt hinzufügen, wie im folgenden Beispiel. Weitere Informationen zu anderen StatsD-Optionen für diesen Abschnitt finden Sie unter Abrufen benutzerdefinierter Metriken mit StatsD .

      "metrics": { "metrics_collected": { "statsd": { "service_address":":8125" } } }

      Ein vollständiges Beispiel für diesen JSON Abschnitt lautet wie folgt. Wenn Sie eine kubeconfig Datei zur Authentifizierung verwenden, fügen Sie den kube_config_path Parameter hinzu, um den Pfad zu Ihrer kubeconfig-Datei anzugeben.

      { "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. Erstellen Sie das ConfigMap im Cluster, indem Sie den folgenden Befehl ausführen.

    kubectl apply -f cwagent-configmap.yaml

Schritt 4: Stellen Sie den CloudWatch Agenten als DaemonSet

Gehen Sie wie folgt vor, um die Installation des CloudWatch Agenten abzuschließen und mit der Erfassung von Container-Metriken zu beginnen.

Um den CloudWatch Agenten als DaemonSet
    • Wenn Sie StatsD nicht auf dem Cluster verwenden möchten, geben Sie den folgenden Befehl ein.

      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
    • Wenn Sie StatsD verwenden möchten, führen Sie die folgenden Schritte aus:

      1. Laden Sie den DaemonSet YAML auf Ihren kubectl Client-Host herunter, indem Sie den folgenden Befehl ausführen.

        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. Heben Sie die Kommentierung des port-Abschnitts in der cwagent-daemonset.yaml-Datei wie folgt auf:

        ports: - containerPort: 8125 hostPort: 8125 protocol: UDP
      3. Stellen Sie den CloudWatch Agenten in Ihrem Cluster bereit, indem Sie den folgenden Befehl ausführen.

        kubectl apply -f cwagent-daemonset.yaml
      4. Stellen Sie den CloudWatch Agenten auf Windows-Knoten in Ihrem Cluster bereit, indem Sie den folgenden Befehl ausführen. Der StatsD-Listener wird auf dem CloudWatch Agenten unter Windows nicht unterstützt.

        kubectl apply -f cwagent-daemonset-windows.yaml
  1. Überprüfen Sie, ob der Agent bereitgestellt wird, indem Sie den folgenden Befehl ausführen.

    kubectl get pods -n amazon-cloudwatch

Wenn der Vorgang abgeschlossen ist, erstellt der CloudWatch Agent eine Protokollgruppe mit dem Namen /aws/containerinsights/Cluster_Name/performance und sendet die Leistungsprotokollereignisse an diese Protokollgruppe. Wenn Sie den Agenten als auch StatsD-Listener einrichten, überwacht der Agent Port 8125 mit der IP-Adresse des Knotens, auf dem der Anwendung-Pod geplant ist, auch auf StatsD-Metriken.

Fehlerbehebung

Wenn der Agent nicht korrekt bereitgestellt wird, führen Sie die folgenden Schritte aus:

  • Führen Sie den folgenden Befehl aus, um die Liste der Pods zu erhalten.

    kubectl get pods -n amazon-cloudwatch
  • Führen Sie den folgenden Befehl aus und überprüfen Sie die Ereignisse am unteren Rand der Ausgabe.

    kubectl describe pod pod-name -n amazon-cloudwatch
  • Führen Sie den folgenden Befehl aus, um die Protokolle zu überprüfen.

    kubectl logs pod-name -n amazon-cloudwatch