

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
<a name="container-insights-eks-otel-helm"></a>

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](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
<a name="container-insights-eks-otel-helm-prereqs"></a>

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
+ `kubectl`konfiguriert 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
<a name="container-insights-eks-otel-helm-setup"></a>

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
<a name="container-insights-eks-otel-helm-step1"></a>

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
   ```

1. Aktualisieren Sie das Repository, um die neuesten Diagrammversionen zu erhalten.

   ```
   helm repo update
   ```

### Schritt 2: Erstellen der IAM-Rolle
<a name="container-insights-eks-otel-helm-step2"></a>

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-name}}Ersetzen Sie durch den Namen Ihres Amazon EKS-Clusters.

   ```
   aws eks describe-cluster \
     --name {{cluster-name}} \
     --query "cluster.identity.oidc.issuer" \
     --output text
   ```

1. Erstellen Sie die IAM-Rolle mit einer Vertrauensrichtlinie für IRSA. {{account-id}}Ersetzen 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"
           }
         }
       }]
     }'
   ```

1. 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
<a name="container-insights-eks-otel-helm-step3"></a>

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-name}}Ersetzen 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
<a name="container-insights-eks-otel-helm-step4"></a>

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 wird`deployed`.

   ```
   helm list -n amazon-cloudwatch
   ```

1. Vergewissern Sie sich, dass der Operator-Pod läuft.

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

1. 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
<a name="container-insights-eks-otel-helm-config"></a>

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
<a name="container-insights-eks-otel-helm-config-cluster"></a>


| 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)
<a name="container-insights-eks-otel-helm-config-logs"></a>


| 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)
<a name="container-insights-eks-otel-helm-config-agent"></a>


| 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
<a name="container-insights-eks-otel-helm-config-gpu"></a>


| 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
<a name="container-insights-eks-otel-helm-tls"></a>

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)
<a name="container-insights-eks-otel-helm-tls-default"></a>

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
<a name="container-insights-eks-otel-helm-tls-certmanager"></a>

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
   ```

1. Installieren Sie das Helm-Diagramm mit aktiviertem Cert-Manager. {{cluster-name}}Ersetzen 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
<a name="container-insights-eks-otel-helm-upgrade"></a>

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
   ```

1. Führen Sie den Upgrade-Befehl mit den gewünschten Werten aus. {{cluster-name}}Ersetzen 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
   ```

1. 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
<a name="container-insights-eks-otel-helm-uninstall"></a>

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
   ```

1. 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
<a name="container-insights-eks-otel-helm-verify"></a>

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

### Überprüfen Sie die Kennzahlen
<a name="container-insights-eks-otel-helm-verify-metrics"></a>

**Um Metriken einzuchecken CloudWatch**

1. Öffnen Sie die CloudWatch Konsole unter [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Wählen Sie im Navigationsbereich **Container Insights** aus.

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

### -Protokolle überprüfen
<a name="container-insights-eks-otel-helm-verify-logs"></a>

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Protokollgruppen für Ihren Cluster existieren. {{cluster-name}}Ersetzen 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
<a name="container-insights-eks-otel-helm-troubleshoot"></a>

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
<a name="container-insights-eks-otel-helm-ts-operator-crash"></a>

**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
   ```

1. Stellen Sie sicher, dass das TLS-Geheimnis des Webhooks im Namespace vorhanden ist.

   ```
   kubectl get secrets -n amazon-cloudwatch | grep webhook
   ```

1. Wenn Sie cert-manager verwenden, stellen Sie sicher, dass der Ressourcenstatus angezeigt wird`Certificate`. `Ready`

   ```
   kubectl get certificate -n amazon-cloudwatch
   ```

1. 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
<a name="container-insights-eks-otel-helm-ts-agent-scheduling"></a>

**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
   ```

1. 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
   ```

1. 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"
   ```

1. 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
   ```