

 **Contribuisci a migliorare questa pagina** 

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Per contribuire a questa guida per l'utente, scegli il GitHub link **Modifica questa pagina** nel riquadro destro di ogni pagina.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Recuperare i log dei nodi per un nodo gestito usando kubectl e S3
<a name="auto-get-logs"></a>

Scopri come recuperare i log dei nodi per un nodo gestito di Amazon EKS che dispone dell’agente di monitoraggio dei nodi.

## Prerequisiti
<a name="_prerequisites"></a>

Verifica di disporre di quanto segue:
+ Un cluster Amazon EKS esistente con agente di monitoraggio dei nodi. Per ulteriori informazioni, consulta [Rileva i problemi di integrità dei nodi e abilita la riparazione automatica dei nodi](node-health.md).
+ Lo strumento di riga di comando `kubectl` installato e configurato per comunicare con il cluster.
+ La AWS CLI è stata installata e ha effettuato l'accesso con autorizzazioni sufficienti per creare bucket e oggetti S3.
+ Una versione recente di Python 3 installata
+ L' AWS SDK per Python 3, Boto 3, è installato.

## Fase 1: Creare di una destinazione bucket S3 (facoltativo)
<a name="_step_1_create_s3_bucket_destination_optional"></a>

Se non disponi già di un bucket S3 in cui archiviare i log, creane uno. Usa il seguente comando AWS CLI. Per impostazione predefinita, il bucket è l’elenco di controllo degli accessi `private`. Sostituisci *bucket-name* con il nome univoco del bucket scelto.

```
aws s3api create-bucket --bucket <bucket-name>
```

## Fase 2: Creare un URL S3 prefirmato per HTTP Put
<a name="_step_2_create_pre_signed_s3_url_for_http_put"></a>

Amazon EKS restituisce i log dei nodi eseguendo un’operazione HTTP PUT su un URL specificato. In questo tutorial, genereremo un URL PUT HTTP S3 prefirmato.

I log verranno restituiti come gzip tarball, con l’estensione `.tar.gz`.

**Nota**  
È necessario utilizzare l' AWS API o un SDK per creare l'URL di caricamento S3 prefirmato per consentire a EKS di caricare il file di registro. Non puoi creare un URL di caricamento S3 prefirmato utilizzando la CLI AWS .

1. Determina in che punto del bucket desideri archiviare i log. Ad esempio, puoi usare *2024-11-12/logs1.tar.gz* come chiave.

1. Salva il seguente codice Python sul file *presign-upload.py*. Sostituisci *<bucket-name>* e *<key>*. La chiave deve terminare con `.tar.gz`.

   ```
   import boto3; print(boto3.client('s3').generate_presigned_url(
      ClientMethod='put_object',
      Params={'Bucket': '<bucket-name>', 'Key': '<key>'},
      ExpiresIn=1000
   ))
   ```

1. Esegui lo script con

   ```
   python presign-upload.py
   ```

1. Annota l’output dell’URL. Usa questo valore nella fase successiva come *http-put-destination*.

Per ulteriori informazioni, consulta [Generare un URL predefinito per caricare un file nella documentazione](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-presigned-urls.html#generating-a-presigned-url-to-upload-a-file) AWS Boto3 SDK per Python.

## Fase 3: Creare una risorsa NodeDiagnostic
<a name="_step_3_create_nodediagnostic_resource"></a>

Identifica il nome del nodo da cui si desidera raccogliere i log.

Crea un manifesto `NodeDiagnostic` che utilizzi il nome del nodo come nome della risorsa e fornire una destinazione URL PUT HTTP.

```
apiVersion: eks.amazonaws.com/v1alpha1
kind: NodeDiagnostic
metadata:
    name: <node-name>
spec:
    logCapture:
        destination: http-put-destination
```

Applica il file manifesto al cluster.

```
kubectl apply -f nodediagnostic.yaml
```

Puoi controllare lo stato della raccolta descrivendo la risorsa `NodeDiagnostic`:
+ Uno stato di `Success` o `SuccessWithErrors` indica che l’attività è stata completata e i log sono stati caricati nella destinazione fornita (`SuccessWithErrors` indica che alcuni log potrebbero mancare).
+ Se lo stato è Failure, conferma che l’URL di caricamento è ben formato e non è scaduto.

```
kubectl describe nodediagnostics.eks.amazonaws.com/<node-name>
```

## Fase 4: Scaricare log da S3
<a name="_step_4_download_logs_from_s3"></a>

Attendi circa un minuto prima di tentare di scaricare i log. Quindi, usa la CLI di S3 per scaricare i log.

```
# Once NodeDiagnostic shows Success status, download the logs
aws s3 cp s3://<bucket-name>/key ./<path-to-node-logs>.tar.gz
```

## Fase 5: Pulizia della NodeDiagnostic risorsa
<a name="_step_5_clean_up_nodediagnostic_resource"></a>
+  Le risorse `NodeDiagnostic` non vengono eliminate automaticamente. Devi eliminarle in autonomia dopo aver ottenuto gli artefatti del log.

```
# Delete the NodeDiagnostic resource
kubectl delete nodediagnostics.eks.amazonaws.com/<node-name>
```

## NodeDiagnostic `node`Destinazione
<a name="_nodediagnostic_node_destination"></a>

A partire dalla versione `v1.6.0` di Node Monitoring Agent, è disponibile un'opzione su cui impostare la destinazione della raccolta dei log`node`. L'utilizzo di questa destinazione porterà alla raccolta e alla persistenza temporanea dei log sul nodo per la raccolta successiva. Oltre a questa funzionalità, all'interno del GitHub repository di Node Monitoring Agent è presente un `kubectl` plug-in che è possibile installare per facilitare l'interazione e la raccolta dei log. Per ulteriori informazioni, consulta [la documentazione del `kubectl ekslogs` plugin](https://github.com/aws/eks-node-monitoring-agent/blob/main/tools/kubectl-ekslogs/README.md).

## Esempio di utilizzo
<a name="_example_usage"></a>

```
# Collect NodeDiagnostic logs from a single node
kubectl ekslogs <node-name>

# Collect NodeDiagnostic logs from multiple nodes
kubectl ekslogs <node-name-1> <node-name-2> <node-name-3>

# Collect NodeDiagnostic logs from all nodes with a specific label
kubectl ekslogs -l <key>=<value>
```