

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.

# Erweiterte Konfiguration für oTEL Container Insights auf Amazon EKS
<a name="container-insights-eks-otel-advanced"></a>

Dieses Thema behandelt erweiterte Konfigurationsszenarien für oTEL Container Insights auf Amazon EKS. Verwenden Sie diese Konfigurationen, um die Metrikerfassung anzupassen, Protokolle zu filtern, kontenübergreifende Telemetriedaten zu sammeln, benutzerdefinierte Dimensionen hinzuzufügen und die Ressourcenzuweisung für große Cluster zu optimieren.

## Voraussetzungen
<a name="container-insights-eks-otel-advanced-prereqs"></a>

Bevor Sie erweiterte Einstellungen konfigurieren, stellen Sie sicher, dass Sie die folgenden Anforderungen erfüllen.
+ oTEL Container Insights ist auf Ihrem Amazon EKS-Cluster installiert und befindet sich im `ACTIVE` Status
+ Amazon EKS-Cluster mit Kubernetes Version 1.28 oder höher
+ AWS CLI Version 2.15.0 oder höher
+ `kubectl`konfiguriert für die Kommunikation mit Ihrem Zielcluster
+ IAM-Berechtigungen: `eks:UpdateAddon``eks:DescribeAddon`, und `iam:AttachRolePolicy` (erforderlich für die kontoübergreifende Konfiguration)

## Allgemeines Konfigurationsmuster
<a name="container-insights-eks-otel-advanced-pattern"></a>

Alle erweiterten Konfigurationen folgen demselben Muster. Sie übergeben eine JSON-Konfiguration mit dem `aws eks update-addon` Befehl an das `amazon-cloudwatch-observability` Add-on.

```
aws eks update-addon \
  --cluster-name {{cluster-name}} \
  --addon-name amazon-cloudwatch-observability \
  --configuration-values '{{JSON-configuration}}' \
  --resolve-conflicts OVERWRITE
```

**Wichtig**  
Das `--resolve-conflicts OVERWRITE` Flag ersetzt jede bestehende Add-On-Konfiguration. Um bestehende Einstellungen beizubehalten, führen Sie sie mit Ihrer neuen Konfiguration zusammen, bevor Sie den Befehl ausführen.

## Filtern von Protokollen
<a name="container-insights-eks-otel-advanced-log-filtering"></a>

Sie können die CloudWatch Protokollkosten senken, indem Sie Protokolle ausschließen, die bestimmten Kriterien entsprechen. Verwenden Sie die Protokollfilterung, um Protokolle auf Debug-Ebene oder ausführliche Protokolle zu löschen, bevor der Agent sie an sie sendet. CloudWatch

**Um die Protokollfilterung zu konfigurieren**

1. Führen Sie den folgenden Befehl aus, um das Add-on mit einer Protokollfilterkonfiguration zu aktualisieren. {{cluster-name}}Ersetzen Sie durch den Namen Ihres Amazon EKS-Clusters.

   ```
   aws eks update-addon \
     --cluster-name {{cluster-name}} \
     --addon-name amazon-cloudwatch-observability \
     --configuration-values '{
       "otelContainerInsights": {
         "enabled": true
       },
       "agent": {
         "config": {
           "logs": {
             "metrics_collected": {
               "kubernetes": {
                 "enhanced_container_insights": true
               }
             },
             "exclude_filters": [
               {
                 "type": "log_level_filter",
                 "log_level": "DEBUG"
               }
             ]
           }
         }
       }
     }' \
     --resolve-conflicts OVERWRITE
   ```

1. Stellen Sie sicher, dass der Status des Add-ons `ACTIVE` nach dem Update lautet.

   ```
   aws eks describe-addon \
     --cluster-name {{cluster-name}} \
     --addon-name amazon-cloudwatch-observability \
     --query "addon.status" \
     --output text
   ```

Die `exclude_filters` Konfiguration entfernt Protokolleinträge, die der angegebenen Protokollebene entsprechen, bevor der Agent sie an CloudWatch Logs sendet. Dadurch werden das Volumen der Protokollaufnahme und die damit verbundenen Kosten reduziert.

## Multi-account Sammlung
<a name="container-insights-eks-otel-advanced-multi-account"></a>

Sie können Telemetriedaten von Workload-Konten an ein zentrales Überwachungskonto senden, indem Sie die kontoübergreifende IAM-Rollenübernahme konfigurieren. Dieser Ansatz bietet Ihnen eine zentrale Ansicht von Metriken und Protokollen aus mehreren Amazon EKS-Clustern über verschiedene AWS Konten hinweg.

### So richten Sie die Erfassung mehrerer Konten ein
<a name="container-insights-eks-otel-advanced-multi-account-setup"></a>

**Um die kontenübergreifende Rolle im Überwachungskonto zu erstellen**

1. Erstellen Sie im zentralen Überwachungskonto eine IAM-Rolle mit einer Vertrauensrichtlinie, die es dem Workload-Konto ermöglicht, diese Rolle zu übernehmen. {{workload-account-id}}Ersetzen Sie es durch die AWS Konto-ID des Workload-Kontos.

   ```
   {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::{{workload-account-id}}:root"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

1. Ordnen Sie die `CloudWatchAgentServerPolicy` verwaltete Richtlinie der kontoübergreifenden Rolle zu.

**Um das Add-on für die kontoübergreifende Bereitstellung zu konfigurieren**

1. Aktualisieren Sie das Add-on im Workload-Konto, sodass es die kontoübergreifende Rolle übernimmt. {{cluster-name}}Ersetzen Sie durch den Namen Ihres Amazon EKS-Clusters und {{monitoring-account-id}} durch die AWS Konto-ID des zentralen Monitoring-Kontos.

   ```
   aws eks update-addon \
     --cluster-name {{cluster-name}} \
     --addon-name amazon-cloudwatch-observability \
     --configuration-values '{
       "otelContainerInsights": {
         "enabled": true
       },
       "agent": {
         "config": {
           "credentials": {
             "role_arn": "arn:aws:iam::{{monitoring-account-id}}:role/CrossAccountCWObservabilityRole"
           }
         }
       }
     }' \
     --resolve-conflicts OVERWRITE
   ```

1. Stellen Sie sicher, dass sich der Status des Add-ons `ACTIVE` nach dem Update befindet.

   ```
   aws eks describe-addon \
     --cluster-name {{cluster-name}} \
     --addon-name amazon-cloudwatch-observability \
     --query "addon.status" \
     --output text
   ```

## Benutzerdefinierte metrische Abmessungen
<a name="container-insights-eks-otel-advanced-dimensions"></a>

Sie können Ihren Container Insights-Metriken benutzerdefinierte Dimensionen hinzufügen, die von Kubernetes-Labels abgeleitet wurden. Mit benutzerdefinierten Dimensionen können Sie Metriken detaillierter filtern und gruppieren, z. B. nach Team, Umgebung oder Anwendungsebene.

**Um benutzerdefinierte Dimensionen aus Kubernetes-Labels hinzuzufügen**

1. Führen Sie den folgenden Befehl aus, um benutzerdefinierte Dimensionen zu konfigurieren. {{cluster-name}}Ersetzen Sie es durch den Namen Ihres Amazon EKS-Clusters und {{label-key}} durch das Kubernetes-Label, das als Dimension verwendet werden soll.

   ```
   aws eks update-addon \
     --cluster-name {{cluster-name}} \
     --addon-name amazon-cloudwatch-observability \
     --configuration-values '{
       "otelContainerInsights": {
         "enabled": true
       },
       "agent": {
         "config": {
           "logs": {
             "metrics_collected": {
               "kubernetes": {
                 "enhanced_container_insights": true,
                 "metric_dimensions": {
                   "custom_dimensions": ["{{label-key}}"]
                 }
               }
             }
           }
         }
       }
     }' \
     --resolve-conflicts OVERWRITE
   ```

1. Stellen Sie sicher, dass sich der Status des Add-ons `ACTIVE` nach dem Update befindet.

   ```
   aws eks describe-addon \
     --cluster-name {{cluster-name}} \
     --addon-name amazon-cloudwatch-observability \
     --query "addon.status" \
     --output text
   ```

Nachdem die Konfiguration wirksam geworden ist, werden die angegebenen Kubernetes-Labels als Dimensionen in Ihren Container Insights-Metriken in angezeigt. CloudWatch

## Ressourcenoptimierung für große Cluster
<a name="container-insights-eks-otel-advanced-resource-tuning"></a>

Bei großen Clustern müssen Sie möglicherweise die CPU- und Speicherlimits für den CloudWatch Agenten erhöhen DaemonSet. Die Standardressourcenzuweisung funktioniert gut für kleine Cluster, aber größere Cluster generieren mehr Telemetriedaten und erfordern zusätzliche Agentenressourcen.

Die folgende Tabelle enthält Richtlinien zur Größenbestimmung, die auf der Clustergröße basieren.


| Cluster-Größe | CPU-Anfrage | CPU-Limit | Speicheranforderung | Speicherlimit | 
| --- | --- | --- | --- | --- | 
| Klein (20 Knoten oder weniger) | 100 m | 200m | 128 Minuten | 256 Mi | 
| Mittel (21—100 Knoten) | 200m | 400 m | 256 Meilen | 512 Mi | 
| Groß (über 100 Knoten) | 300 m | 500 m | 384 Meilen | 768 Mi | 
| Extra-large (500\+ Knoten) | 500 m | 1000m | 512 Mi | 1 Gi | 

**Um Ressourcenlimits für den Agenten zu konfigurieren DaemonSet**

1. Führen Sie den folgenden Befehl aus, um Ressourcenanforderungen und Grenzwerte festzulegen. {{cluster-name}}Ersetzen Sie durch den Namen Ihres Amazon EKS-Clusters und die Ressourcenwerte durch Werte aus der vorherigen Tabelle.

   ```
   aws eks update-addon \
     --cluster-name {{cluster-name}} \
     --addon-name amazon-cloudwatch-observability \
     --configuration-values '{
       "otelContainerInsights": {
         "enabled": true
       },
       "agent": {
         "resources": {
           "requests": {
             "cpu": "{{cpu-request}}",
             "memory": "{{memory-request}}"
           },
           "limits": {
             "cpu": "{{cpu-limit}}",
             "memory": "{{memory-limit}}"
           }
         }
       }
     }' \
     --resolve-conflicts OVERWRITE
   ```

1. Vergewissern Sie sich, dass der Status des Add-ons lautet `ACTIVE` und dass die Agent-Pods mit der neuen Ressourcenzuweisung neu gestartet werden.

   ```
   aws eks describe-addon \
     --cluster-name {{cluster-name}} \
     --addon-name amazon-cloudwatch-observability \
     --query "addon.status" \
     --output text
   ```

1. Vergewissern Sie sich, dass die Agent-Pods mit den neuen Ressourcenlimits ausgeführt werden.

   ```
   kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent -o jsonpath='{.items[0].spec.containers[0].resources}'
   ```

## Überprüfen Sie die Konfigurationsänderungen
<a name="container-insights-eks-otel-advanced-verify"></a>

Nachdem Sie eine erweiterte Konfiguration angewendet haben, stellen Sie sicher, dass das Add-on fehlerfrei ist und dass die Agent-Pods erfolgreich neu gestartet wurden.

**Um die Konfigurationsänderungen zu überprüfen**

1. Überprüfen Sie, ob der Status des Add-ons lautet`ACTIVE`. {{cluster-name}}Ersetzen Sie durch den Namen Ihres Amazon EKS-Clusters.

   ```
   aws eks describe-addon \
     --cluster-name {{cluster-name}} \
     --addon-name amazon-cloudwatch-observability \
     --query "addon.{Status:status,ConfigValues:configurationValues}" \
     --output table
   ```

1. Stellen Sie sicher, dass die Agenten-Pods neu gestartet wurden und sich im `Running` Status befinden.

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

   Alle Agenten-Pods müssen `Running` den Status mit einer kürzlichen Neustartzeit anzeigen.

## Fehlerbehebung
<a name="container-insights-eks-otel-advanced-troubleshoot"></a>

Verwenden Sie die folgenden Anleitungen, um häufig auftretende Probleme mit erweiterten Konfigurationen zu lösen.

### Add-on Das Update schlägt fehl mit ConfigurationConflict
<a name="container-insights-eks-otel-advanced-ts-config-conflict"></a>

**Symptom:** Der `aws eks update-addon` Befehl gibt einen `ConfigurationConflict` Fehler zurück.

**Ursache:** Die von Ihnen angegebene JSON-Konfiguration ist falsch formatiert oder enthält ungültige Schlüssel.

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

1. Überprüfen Sie Ihre JSON-Konfiguration, indem Sie einen JSON-Linter verwenden oder den folgenden Befehl ausführen.

   ```
   echo '{{your-json-configuration}}' | python3 -m json.tool
   ```

1. Stellen Sie sicher, dass alle Konfigurationsschlüssel für das `amazon-cloudwatch-observability` Add-on gültig sind.

1. Versuchen Sie erneut, das Update mit dem korrigierten JSON durchzuführen.

### Cross-account Metriken, die nicht im Monitoring-Konto erscheinen
<a name="container-insights-eks-otel-advanced-ts-cross-account"></a>

**Symptom:** Nachdem Sie die Erfassung mehrerer Konten konfiguriert haben, werden die Messwerte nicht im zentralen Überwachungskonto angezeigt.

**Ursache:** Die kontoübergreifende IAM-Rollen-Vertrauensrichtlinie oder die Berechtigungen sind falsch.

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

1. Stellen Sie sicher, dass die Vertrauensrichtlinie im Überwachungskonto es dem Workload-Konto ermöglicht, die Rolle zu übernehmen.

1. Stellen Sie sicher, dass der kontoübergreifenden Rolle die `CloudWatchAgentServerPolicy` verwaltete Richtlinie angehängt ist.

1. Überprüfen Sie die Agentenprotokolle auf `AssumeRole` Fehler.

   ```
   kubectl logs -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent --tail=100 | grep -i "AssumeRole\|AccessDenied"
   ```

1. Stellen Sie sicher, dass die Agent-IAM-Rolle im Workload-Konto über die `sts:AssumeRole` Berechtigung für die kontoübergreifende Rolle ARN verfügt.