View a markdown version of this page

Stellen Sie Otel Container Insights mit Helm bereit - 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.

Stellen Sie Otel Container Insights mit Helm bereit

Das Amazon CloudWatch Observability Helm-Diagramm bietet eine flexible Bereitstellungsoption für oTEL Container Insights. Es installiert den CloudWatch Agenten (OTel-based) mit dem OpenTelemetry Filelog-Empfänger für die Protokollerfassung. Das Helm-Diagramm wird unter verwaltet. https://github.com/aws-observability/helm-charts

Verwenden Sie das Helm-Diagramm, wenn Sie eine oder mehrere der folgenden Funktionen benötigen:

  • Fine-grained Kontrolle über die Agentenkonfiguration

  • OTel-native Erfassung von Protokollen mithilfe des Filelog-Empfängers (keine Fluent-Bit-Abhängigkeit)

  • Verwaltung benutzerdefinierter TLS-Zertifikate über Cert-Manager

  • Non-EKS Kubernetes-Cluster (ROSA, selbstverwaltetes Kubernetes)

  • GitOps Workflows mit ArgoCD oder Flux

Voraussetzungen

Bevor Sie OTel Container Insights mit Helm einsetzen, stellen Sie sicher, dass Sie die folgenden Anforderungen erfüllen.

  • Ein vorhandener Amazon EKS-Cluster mit Kubernetes Version 1.28 oder höher

  • Helm Version 3.9 oder höher

  • kubectlkonfiguriert für die Kommunikation mit Ihrem Zielcluster

  • IAM-Berechtigungen: CloudWatchAgentServerPolicy verwaltete Richtlinie, die der Agentenrolle zugeordnet ist

  • Ein OpenID Connect (OIDC) -Anbieter, der für IAM-Rollen für Dienstkonten (IRSA) konfiguriert ist

  • Ausgehender Internetzugang vom Cluster zu den Endpunkten CloudWatch

Installieren Sie das Helm-Diagramm

Führen Sie die folgenden Schritte aus, um oTEL Container Insights mithilfe des Helm-Diagramms bereitzustellen.

Schritt 1: Fügen Sie das Helm-Repository hinzu

Fügen Sie das AWS Observability Helm-Chart-Repository zu Ihrer lokalen Helm-Konfiguration hinzu.

Um das Helm-Repository hinzuzufügen
  1. Führen Sie den folgenden Befehl aus, um das Repository hinzuzufügen.

    helm repo add aws-observability \ https://aws-observability.github.io/helm-charts
  2. Aktualisieren Sie das Repository, um die neuesten Diagrammversionen zu erhalten.

    helm repo update

Schritt 2: Erstellen der IAM-Rolle

Erstellen Sie eine IAM-Rolle, an die der CloudWatch Agent Daten senden CloudWatch kann. Diese Rolle verwendet IRSA, um IAM-Berechtigungen einem Kubernetes-Dienstkonto zuzuordnen.

Um die IAM-Rolle für den Agenten zu erstellen CloudWatch
  1. Rufen Sie die OIDC-Aussteller-URL für Ihren Cluster ab. cluster-nameErsetzen Sie durch den Namen Ihres Amazon EKS-Clusters.

    aws eks describe-cluster \ --name cluster-name \ --query "cluster.identity.oidc.issuer" \ --output text
  2. Erstellen Sie die IAM-Rolle mit einer Vertrauensrichtlinie für IRSA. account-idErsetzen Sie sie durch Ihre AWS Konto-ID und oidc-id durch die OIDC-Anbieter-ID aus dem vorherigen Schritt (den Teil danach). https://oidc.eks.region.amazonaws.com/id/

    aws iam create-role \ --role-name EKS-CW-Observability-Role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::account-id:oidc-provider/oidc.eks.region.amazonaws.com/id/oidc-id" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region.amazonaws.com/id/oidc-id:sub": "system:serviceaccount:amazon-cloudwatch:cloudwatch-agent" } } }] }'
  3. Hängen Sie die von CloudWatchAgentServerPolicy verwaltete Richtlinie an die Rolle an.

    aws iam attach-role-policy \ --role-name EKS-CW-Observability-Role \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy

Schritt 3: Installieren Sie das Diagramm

Installieren Sie das Amazon CloudWatch Observability Helm-Diagramm mit aktiviertem oTEL Container Insights.

Um das Helm-Diagramm zu installieren
  • Führen Sie den folgenden Befehl aus. cluster-nameErsetzen Sie es durch den Namen Ihres Amazon EKS-Clusters, region durch Ihre AWS Region und account-id durch Ihre AWS Konto-ID.

    helm install amazon-cloudwatch-observability \ aws-observability/amazon-cloudwatch-observability \ --namespace amazon-cloudwatch \ --create-namespace \ --set clusterName=cluster-name \ --set region=region \ --set agent.serviceAccount.name=cloudwatch-agent \ --set "agent.serviceAccount.annotations.eks\\.amazonaws\\.com/role-arn=arn:aws:iam::account-id:role/EKS-CW-Observability-Role" \ --set otelContainerInsights.enabled=true
    Wichtig

    Der Parameter otelContainerInsights.enabled muss angegeben werden. oTEL Container Insights ist standardmäßig nicht aktiviert.

Schritt 4: Überprüfen Sie die Installation

Vergewissern Sie sich, dass die Helm-Version und die Agent-Pods erfolgreich bereitgestellt wurden.

Um die Helm-Installation zu überprüfen
  1. Stellen Sie sicher, dass der Helm-Release-Status angezeigt wirddeployed.

    helm list -n amazon-cloudwatch
  2. Vergewissern Sie sich, dass der Operator-Pod läuft.

    kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=amazon-cloudwatch-observability
  3. Vergewissern Sie sich, dass die CloudWatch Agenten-Pods auf allen Knoten ausgeführt werden.

    kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent

    Alle Agent-Pods müssen Running den Status anzeigen.

Wichtige Konfigurationsoptionen

In den folgenden Tabellen werden die wichtigsten Helm-Diagrammwerte beschrieben, die Sie konfigurieren können. Übergeben Sie diese Werte mithilfe des --set Flags oder einer benutzerdefinierten values.yaml Datei.

Cluster-Einstellungen

Parameter Standard Description
clusterName Der Name des Amazon EKS-Clusters. Erforderlich
region Die AWS Region, in der der Cluster ausgeführt wird. Erforderlich
otelContainerInsights.enabled false Aktiviert oTEL Container Insights mit dem Filelog-Empfänger.

Container-Protokolle (oTEL Filelog-Empfänger)

Parameter Standard Description
containerLogs.enabled true Aktiviert die Erfassung von Container-Protokollen mithilfe des OTel Filelog-Empfängers.
containerLogs.logGroupName /aws/containerinsights/cluster-name/application Der Name der CloudWatch Logs-Protokollgruppe für Container-Logs.
containerLogs.logRetentionDays 7 Die Anzahl der Tage, für die Container-Logs in CloudWatch Logs aufbewahrt werden sollen.

Agent (Metriken)

Parameter Standard Description
agent.enabled true Aktiviert den CloudWatch Agenten DaemonSet für die Erfassung von Metriken.
agent.serviceAccount.name cloudwatch-agent Der Name des Kubernetes-Dienstkontos für den Agenten.
agent.resources.requests.cpu 100m Die CPU-Anfrage für den Agent-Container.
agent.resources.requests.memory 128Mi Die Speicheranforderung für den Agent-Container.
agent.resources.limits.cpu 200m Das CPU-Limit für den Agent-Container.
agent.resources.limits.memory 256Mi Das Speicherlimit für den Agent-Container.

GPU-Überwachung

Parameter Standard Description
agent.config.logs.metrics_collected.kubernetes.enhanced_container_insights true Aktiviert erweiterte Container Insights-Metriken, einschließlich GPU-Metriken.
dcgmExporter.enabled false Aktiviert den DCGM-Exporter für NVIDIA-GPU-Metriken. Erfordert NVIDIA-GPU-Knoten.
neuronMonitor.enabled false Aktiviert den Neuron-Monitor für AWS Inferentia- und Trainium-Metriken.

Verwaltung von TLS-Zertifikaten

Der CloudWatch Observability-Operator benötigt TLS-Zertifikate für die Webhook-Kommunikation. Standardmäßig generiert das Diagramm selbstsignierte Zertifikate. Sie können Cert-Manager verwenden, um Zertifikate automatisch zu verwalten.

Self-signed Zertifikate (Standard)

Standardmäßig generiert das Helm-Diagramm eine selbstsignierte Zertifizierungsstelle und stellt Zertifikate von dieser Zertifizierungsstelle aus. Es ist keine zusätzliche Konfiguration erforderlich. Das Diagramm rotiert diese Zertifikate bei Upgrades automatisch.

Cert-Manager-Integration

Sie können Cert-Manager verwenden, um die Ausstellung und Verlängerung von Zertifikaten zu automatisieren. Dieser Ansatz ist nützlich, wenn Ihr Unternehmen extern signierte Zertifikate oder eine zentrale Zertifikatsverwaltung benötigt.

Um die Cert-Manager-Integration zu konfigurieren
  1. Stellen Sie sicher, dass Cert-Manager in Ihrem Cluster installiert ist.

    kubectl get pods -n cert-manager
  2. Installieren Sie das Helm-Diagramm mit aktiviertem Cert-Manager. cluster-nameErsetzen Sie es durch den Namen Ihres Amazon EKS-Clusters, region durch Ihre AWS Region und account-id durch Ihre AWS Konto-ID.

    helm install amazon-cloudwatch-observability \ aws-observability/amazon-cloudwatch-observability \ --namespace amazon-cloudwatch \ --create-namespace \ --set clusterName=cluster-name \ --set region=region \ --set agent.serviceAccount.name=cloudwatch-agent \ --set "agent.serviceAccount.annotations.eks\\.amazonaws\\.com/role-arn=arn:aws:iam::account-id:role/EKS-CW-Observability-Role" \ --set otelContainerInsights.enabled=true \ --set admissionWebhooks.certManager.enabled=true

Wenn cert-manager aktiviert ist, erstellt das Diagramm eine Certificate Ressource, die cert-manager verwendet, um das Webhook-TLS-Zertifikat automatisch auszustellen und zu verwalten.

Anmerkung

Sie können den Cert-Manager auch mit externen Emittenten wie Vault verwenden. HashiCorp Um einen externen Emittenten zu konfigurieren, legen Sie Ihren Cert-Manager-Emittenten fest admissionWebhooks.certManager.issuerRef.name und passen admissionWebhooks.certManager.issuerRef.kind ihn an.

Aktualisieren Sie das Diagramm

Aktualisieren Sie das Helm-Diagramm, um neue Konfigurationswerte anzuwenden oder auf eine neuere Diagrammversion zu aktualisieren.

Um das Helm-Diagramm zu aktualisieren
  1. Aktualisieren Sie das Helm-Repository, um die neuesten Diagrammversionen zu erhalten.

    helm repo update
  2. Führen Sie den Upgrade-Befehl mit den gewünschten Werten aus. cluster-nameErsetzen Sie es durch den Namen Ihres Amazon EKS-Clusters, region durch Ihre AWS Region und account-id durch Ihre AWS Konto-ID.

    helm upgrade amazon-cloudwatch-observability \ aws-observability/amazon-cloudwatch-observability \ --namespace amazon-cloudwatch \ --set clusterName=cluster-name \ --set region=region \ --set agent.serviceAccount.name=cloudwatch-agent \ --set "agent.serviceAccount.annotations.eks\\.amazonaws\\.com/role-arn=arn:aws:iam::account-id:role/EKS-CW-Observability-Role" \ --set otelContainerInsights.enabled=true
  3. Stellen Sie sicher, dass das Upgrade erfolgreich abgeschlossen wurde.

    helm list -n amazon-cloudwatch

    Die Revisionsnummer muss erhöht werden und der Status muss angezeigt deployed werden.

Tipp

Um zu vermeiden, dass Konfigurationswerte bei Upgrades verloren gehen, speichern Sie Ihre benutzerdefinierten Werte in einer values.yaml Datei und übergeben Sie sie mit dem -f values.yaml Flag.

Deinstallieren Sie das Diagramm

Um oTEL Container Insights aus Ihrem Cluster zu entfernen, deinstallieren Sie die Helm-Version.

Um das Helm-Diagramm zu deinstallieren
  1. Führen Sie den folgenden Befehl aus, um die Version zu deinstallieren.

    helm uninstall amazon-cloudwatch-observability \ --namespace amazon-cloudwatch
  2. Löschen Sie optional den Namespace, falls er nicht mehr benötigt wird.

    kubectl delete namespace amazon-cloudwatch

Nach der Deinstallation des Helm-Diagramms verbleiben die IAM-Rolle und die OIDC-Anbieterkonfiguration in Ihrem Konto. AWS Löschen Sie diese Ressourcen separat, wenn sie nicht mehr benötigt werden.

aws iam detach-role-policy \ --role-name EKS-CW-Observability-Role \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy aws iam delete-role \ --role-name EKS-CW-Observability-Role

Überprüfen Sie die Daten in CloudWatch

Nach der Installation des Helm-Diagramms werden die Container Insights-Daten CloudWatch innerhalb von 3 bis 5 Minuten angezeigt.

Überprüfen Sie die Kennzahlen

Um Metriken einzuchecken CloudWatch
  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie im Navigationsbereich Container Insights aus.

  3. Vergewissern Sie sich, dass Ihr Cluster in der Clusterliste erscheint und dass die Infrastrukturmetriken aufgefüllt werden.

-Protokolle überprüfen

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Protokollgruppen für Ihren Cluster existieren. cluster-nameErsetzen Sie durch den Namen Ihres Amazon EKS-Clusters.

aws logs describe-log-groups \ --log-group-name-prefix "/aws/containerinsights/cluster-name" \ --query "logGroups[].logGroupName" \ --output table

Fehlerbehebung

Verwenden Sie die folgenden Anleitungen, um häufig auftretende Probleme bei der Bereitstellung von OTel Container Insights mit Helm zu lösen.

Bediener-Pod einschalten CrashLoopBackOff

Symptom: Beim Ausführen kubectl get pods -n amazon-cloudwatch zeigt der Bediener-Pod CrashLoopBackOff den Status an.

Ursache: Der Operator-Pod kann aufgrund von TLS-Zertifikatsproblemen oder unzureichenden Berechtigungen nicht gestartet werden.

Lösung: Gehen Sie wie folgt vor, um dieses Problem zu beheben.

  1. Überprüfen Sie die Operator-Pod-Protokolle auf Fehler im Zusammenhang mit Zertifikaten.

    kubectl logs -n amazon-cloudwatch -l app.kubernetes.io/name=amazon-cloudwatch-observability --tail=50
  2. Stellen Sie sicher, dass das TLS-Geheimnis des Webhooks im Namespace vorhanden ist.

    kubectl get secrets -n amazon-cloudwatch | grep webhook
  3. Wenn Sie cert-manager verwenden, stellen Sie sicher, dass der Ressourcenstatus angezeigt wirdCertificate. Ready

    kubectl get certificate -n amazon-cloudwatch
  4. Wenn das Zertifikat fehlt oder ungültig ist, deinstallieren Sie das Diagramm und installieren Sie es erneut, um die Zertifikate neu zu generieren.

    helm uninstall amazon-cloudwatch-observability -n amazon-cloudwatch

Agent-Pods sind nicht auf allen Knoten geplant

Symptom: Der Agent DaemonSet zeigt weniger Pods an als die Anzahl der Knoten in Ihrem Cluster.

Ursache: Knotenfehler, Ressourcenbeschränkungen oder Knotenselektoren verhindern, dass die Agent-Pods auf bestimmten Knoten terminiert werden.

Lösung: Gehen Sie wie folgt vor, um dieses Problem zu beheben.

  1. Überprüfen Sie den DaemonSet Status von Terminproblemen.

    kubectl get daemonset -n amazon-cloudwatch cloudwatch-agent
  2. Suchen Sie nach Pods, die nicht geplant werden können, und sehen Sie sich deren Ereignisse an.

    kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent --field-selector=status.phase!=Running
  3. Wenn Knoten Fehler aufweisen, fügen Sie den Helm-Diagrammwerten Toleranzen hinzu. Um beispielsweise alle Fehler zu tolerieren, aktualisieren Sie das Diagramm mit dem folgenden Kennzeichen.

    helm upgrade amazon-cloudwatch-observability \ aws-observability/amazon-cloudwatch-observability \ --namespace amazon-cloudwatch \ --reuse-values \ --set "agent.tolerations[0].operator=Exists"
  4. Stellen Sie sicher, dass die Agent-Pods jetzt auf allen Knoten ausgeführt werden.

    kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent -o wide