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:
CloudWatchAgentServerPolicyverwaltete 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
-
Führen Sie den folgenden Befehl aus, um das Repository hinzuzufügen.
helm repo add aws-observability \ https://aws-observability.github.io/helm-charts -
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
-
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 \ --namecluster-name\ --query "cluster.identity.oidc.issuer" \ --output text -
Erstellen Sie die IAM-Rolle mit einer Vertrauensrichtlinie für IRSA.
account-idErsetzen Sie sie durch Ihre AWS Konto-ID undoidc-iddurch 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" } } }] }' -
Hängen Sie die von
CloudWatchAgentServerPolicyverwaltete 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,regiondurch Ihre AWS Region undaccount-iddurch 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=trueWichtig
Der Parameter
otelContainerInsights.enabledmuss 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
-
Stellen Sie sicher, dass der Helm-Release-Status angezeigt wird
deployed.helm list -n amazon-cloudwatch -
Vergewissern Sie sich, dass der Operator-Pod läuft.
kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=amazon-cloudwatch-observability -
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-agentAlle Agent-Pods müssen
Runningden 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/ |
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
-
Stellen Sie sicher, dass Cert-Manager in Ihrem Cluster installiert ist.
kubectl get pods -n cert-manager -
Installieren Sie das Helm-Diagramm mit aktiviertem Cert-Manager.
cluster-nameErsetzen Sie es durch den Namen Ihres Amazon EKS-Clusters,regiondurch Ihre AWS Region undaccount-iddurch 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
-
Aktualisieren Sie das Helm-Repository, um die neuesten Diagrammversionen zu erhalten.
helm repo update -
Führen Sie den Upgrade-Befehl mit den gewünschten Werten aus.
cluster-nameErsetzen Sie es durch den Namen Ihres Amazon EKS-Clusters,regiondurch Ihre AWS Region undaccount-iddurch 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 -
Stellen Sie sicher, dass das Upgrade erfolgreich abgeschlossen wurde.
helm list -n amazon-cloudwatchDie Revisionsnummer muss erhöht werden und der Status muss angezeigt
deployedwerden.
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
-
Führen Sie den folgenden Befehl aus, um die Version zu deinstallieren.
helm uninstall amazon-cloudwatch-observability \ --namespace amazon-cloudwatch -
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
-
Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/
. -
Wählen Sie im Navigationsbereich Container Insights aus.
-
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.
-
Ü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 -
Stellen Sie sicher, dass das TLS-Geheimnis des Webhooks im Namespace vorhanden ist.
kubectl get secrets -n amazon-cloudwatch | grep webhook -
Wenn Sie cert-manager verwenden, stellen Sie sicher, dass der Ressourcenstatus angezeigt wird
Certificate.Readykubectl get certificate -n amazon-cloudwatch -
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.
-
Überprüfen Sie den DaemonSet Status von Terminproblemen.
kubectl get daemonset -n amazon-cloudwatch cloudwatch-agent -
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 -
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" -
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