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.
Den CloudWatch Agenten für die Erfassung von Cluster-Metriken einrichten
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
kubectl
Fü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"]
kubeconfig
Fü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 Agenten-Konfigurationsdatei, 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
-
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
-
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.
-
-
(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 Abschnittagent
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 denkube_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" } } } }
-
-
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:
-
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
-
Heben Sie die Kommentierung des
port
-Abschnitts in dercwagent-daemonset.yaml
-Datei wie folgt auf:ports: - containerPort: 8125 hostPort: 8125 protocol: UDP
-
Stellen Sie den CloudWatch Agenten in Ihrem Cluster bereit, indem Sie den folgenden Befehl ausführen.
kubectl apply -f cwagent-daemonset.yaml
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
-
-
-
Ü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/
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.Cluster_Name
/performance
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