

 **Aidez à améliorer cette page** 

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien **Modifier cette page sur** qui se trouve dans le volet droit de chaque page.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Capturez le trafic réseau sur un nœud géré à l'aide de kubectl et S3
<a name="auto-get-tcpdump"></a>

Découvrez comment capturer le trafic réseau sur un nœud géré par Amazon EKS doté de l'agent de surveillance des nœuds. L'agent exécute tcpdump sur le nœud, compresse les fichiers de capture et les télécharge dans votre compartiment S3.

## Conditions préalables
<a name="_prerequisites"></a>

Vérifiez que vous avez les éléments suivants :
+ Un cluster Amazon EKS Auto Mode existant avec l'agent de surveillance des nœuds. Pour de plus amples informations, veuillez consulter [Détectez les problèmes de santé des nœuds et activez la réparation automatique des nœuds](node-health.md).
+ L’outil en ligne de commande `kubectl` installé et configuré pour communiquer avec votre cluster.
+ La AWS CLI s'est installée et s'est connectée avec des autorisations suffisantes pour créer des compartiments et des objets S3.
+ Une version récente de Python 3 est installée.
+ Le AWS SDK pour Python 3, Boto 3, est installé.
+ La bibliothèque PyYAML installée (). `pip install pyyaml`

## Étape 1 : créer un compartiment S3 de destination (facultatif)
<a name="_step_1_create_s3_bucket_destination_optional"></a>

Si vous ne possédez pas encore de compartiment S3 pour stocker les fichiers de capture, créez-en un. Remplacez {{bucket-name}} et {{region}} par vos valeurs.

```
aws s3api create-bucket --bucket {{<bucket-name>}} \
    --region {{<region>}} \
    --create-bucket-configuration LocationConstraint={{<region>}}
```

**Note**  
Le `--create-bucket-configuration` paramètre est obligatoire pour toutes les régions sauf`us-east-1`.

## Étape 2 : démarrer la capture des paquets
<a name="_step_2_start_packet_capture"></a>

Utilisez le `start-capture.py` script du [référentiel de l'agent de surveillance des nœuds](https://github.com/aws/eks-node-monitoring-agent) (`tools/start-capture.py`) pour générer des informations d'identification S3 pré-signées, créer la `NodeDiagnostic` ressource et l'appliquer à votre cluster.

1. Identifiez le nœud à partir duquel vous souhaitez capturer le trafic.

   ```
   kubectl get nodes
   ```

1. Enregistrez le script [start-capture.py](https://github.com/aws/eks-node-monitoring-agent/blob/main/tools/start-capture.py) depuis le référentiel de l'agent de surveillance des nœuds sur votre machine locale, puis exécutez-le. Remplacez {{<bucket-name>}} et {{<node-name>}} par vos valeurs.

   ```
   python3 start-capture.py --bucket {{<bucket-name>}} --node {{<node-name>}}
   ```

   Options courantes :

   ```
   # Capture for 5 minutes on eth0 with a filter
   python3 start-capture.py --bucket {{<bucket-name>}} --node {{<node-name>}} \
       --duration 5m --interface eth0 --filter "tcp port 443"
   
   # Preview the YAML without applying
   python3 start-capture.py --bucket {{<bucket-name>}} --node {{<node-name>}} --dry-run
   ```

   Le script nécessite Python 3 `pyyaml` installé `boto3` et `kubectl` configuré pour votre cluster.

   Le script génère une `NodeDiagnostic` ressource semblable à la suivante. Cet exemple est fourni à titre de référence ; notez que les `upload` champs nécessitent des informations d'identification S3 POST pré-signées qui sont générées par programmation par le script.

   ```
   apiVersion: eks.amazonaws.com/v1alpha1
   kind: NodeDiagnostic
   metadata:
     name: {{<node-name>}}                    # Required: node instance ID
   spec:
     packetCapture:
       duration: "30s"                       # Required: capture duration (max 1h)
       # interface: "eth0"                   # Optional: default is primary ENI. Use "any" for all interfaces
       # filter: "tcp port 443"             # Optional: tcpdump filter expression
       # chunkSizeMB: 10                    # Optional: file rotation size in MB (1-100, default: 10)
       upload:                               # Required: pre-signed S3 POST credentials
         url: "https://{{<bucket>}}.s3.amazonaws.com/"
         fields:
           key: "captures/{{<node-name>}}/${filename}"
           # ... other pre-signed POST fields (generated by the script)
   ```

## Étape 3 : Surveiller la progression de la capture
<a name="_step_3_monitor_capture_progress"></a>

Vérifiez l'état de la capture.

```
kubectl describe nodediagnostic {{<node-name>}}
```

Le statut indiquera :
+  `Running`pendant que la capture est en cours.
+  `Completed`avec raison `Success` lorsque la capture est terminée et que tous les fichiers sont téléchargés.
+  `Completed`avec raison `Failure` si la capture a rencontré des erreurs.

Pour voir l'état complet, y compris `captureID` (utilisé pour l'identification du chemin S3) :

```
kubectl get nodediagnostic {{<node-name>}} -o jsonpath='{.status.captureStatuses}'
```

## Étape 4 : Téléchargez les fichiers de capture depuis S3
<a name="_step_4_download_capture_files_from_s3"></a>

Une fois le statut affiché`Success`, téléchargez les fichiers de capture depuis S3.

```
aws s3 cp s3://{{<bucket-name>}}/captures/ ./captures/ --recursive
```

Les fichiers sont au format pcap compressé par gzip. Décompressez et analysez avec tcpdump ou Wireshark :

```
gunzip captures/*.gz
tcpdump -r captures/capture.pcap0000 -n
```

## Étape 5 : nettoyer
<a name="_step_5_clean_up"></a>

 `NodeDiagnostic`les ressources ne sont pas automatiquement supprimées. Nettoyez une fois que vous avez obtenu vos fichiers de capture. La suppression de la ressource alors qu'une capture est en cours d'exécution arrête immédiatement la capture.

```
kubectl delete nodediagnostic {{<node-name>}}
```

## Options de configuration et comportement
<a name="_configuration_options_and_behavior"></a>

Pour la référence complète des `packetCapture` spécifications, les options de configuration et les détails du comportement, consultez la [documentation de capture de paquets](https://github.com/aws/eks-node-monitoring-agent/blob/main/docs/packet-capture.adoc) dans le référentiel des agents de surveillance des nœuds.