

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à.

# Risoluzione dei problemi con Amazon ECS Action Logs
<a name="action-logs-troubleshooting"></a>

Gli Action Logs ti aiutano a diagnosticare i problemi fornendo registrazioni dettagliate delle operazioni avviate dal servizio Amazon ECS. Ogni voce di registro contiene un timestamp, un livello di registro, un nome dell'evento e un payload dettagliato con il contesto di cosa è successo e perché. Questo argomento illustra gli scenari di risoluzione dei problemi più comuni e fornisce query Logs Insights pronte all'uso CloudWatch .

## Comprensione dei livelli di log
<a name="action-logs-troubleshooting-log-levels"></a>

Gli Action Log utilizzano tre livelli di registro per indicare la gravità di ciascun evento:

`INFO`  
Operazioni normali come l’avvio della distribuzione, l’avvio dell’attività o il provisioning delle risorse. Questi eventi indicano che Amazon ECS sta eseguendo le azioni previste.

`WARN`  
Non-fatal problemi che potrebbero richiedere attenzione, come tentativi di nuovo tentativo o limiti di capacità. Amazon ECS continua a fare progressi, ma l’operazione potrebbe richiedere più tempo del previsto.

`ERROR`  
Guasti che richiedono un’azione, ad esempio distribuzione non riuscita, errore di provisioning o avvio dell’attività compromesso. Esamina questi eventi per identificare la causa principale e intraprendere azioni correttive.

**Suggerimento**  
Inizia filtrando i livelli `ERROR` o i livelli di `WARN` registro per identificare rapidamente i problemi. Puoi quindi espandere la ricerca agli `INFO` eventi per un contesto aggiuntivo.

## Debug di una distribuzione del servizio non riuscita
<a name="action-logs-troubleshooting-failed-deployment"></a>

Distribuzione bloccata in corso o ripristinata automaticamente.

Filtra i `ERROR` registri in cui `eventName` contiene`DEPLOYMENT`. Controlla nel `detail` payload l'ARN di distribuzione, il motivo dello stato e il numero di attività non riuscite.

L'esempio seguente mostra un errore di distribuzione in cui non era disponibile alcun candidato per il rollback:

```
{
  "resourceArn": "arn:aws:ecs:us-east-1:111122223333:cluster/my-cluster",
  "actionSourceId": "service/my-cluster/my-service",
  "logLevel": "ERROR",
  "eventTimestamp": 1784573730986,
  "detail": {
    "statusReason": "No rollback candidate was found to run the rollback.",
    "serviceDeploymentArn": "arn:aws:ecs:us-east-1:111122223333:service-deployment/my-cluster/my-service/abc123def456",
    "status": "FAILED",
    "eventName": "SERVICE_DEPLOYMENT_ROLLBACK_FAILED"
  }
}
```

Controlla il `detail.statusReason` campo per identificare il motivo per cui le attività non sono riuscite. Utilizza la seguente query CloudWatch Logs Insights per trovare tutti gli errori di distribuzione:

```
fields @timestamp, detail.statusReason
| filter logLevel = "ERROR" and detail.deploymentArn like /{{my-cluster}}\/{{my-service}}/
| sort @timestamp desc
| limit 20
```

## Diagnosi dei problemi relativi ai daemon gestiti
<a name="action-logs-troubleshooting-daemon"></a>

Il demone non si avvia sulle istanze o la distribuzione del daemon è bloccata.

Filtra i log in base al daemon ARN per trovare gli eventi relativi al tuo daemon. Puoi anche filtrare `logLevel` per restringere i risultati agli avvisi o agli errori.

L'esempio seguente mostra un'attività daemon che non è stata avviata a causa della memoria insufficiente sull'istanza di destinazione:

```
{
  "timestamp": 1719500050000,
  "logLevel": "WARN",
  "account": "123456789012",
  "region": "us-east-1",
  "resourceArn": "arn:aws:ecs:us-east-1:123456789012:cluster/my-cluster",
  "actionSourceId": "arn:aws:ecs:us-east-1:123456789012:daemon/my-cluster/my-logging-daemon",
  "eventName": "DAEMON_TASK_START_IMPAIRED",
  "detail": {
    "statusReason": "RESOURCE:MEMORY - Unable to place daemon task on container instance: insufficient memory",
    "containerInstanceArn": "arn:aws:ecs:us-east-1:123456789012:container-instance/my-cluster/a1b2c3d4"
  }
}
```

Verifica che le istanze di destinazione dispongano di risorse sufficienti per eseguire il daemon task. Se le istanze si stanno esaurendo, il demone potrebbe non avviarsi finché non saranno disponibili nuove istanze. Usa la seguente query per filtrare gli eventi per un demone specifico:

```
fields @timestamp, logLevel, detail.statusReason
| filter actionSourceId like /{{my-logging-daemon}}/
| filter logLevel in ["ERROR", "WARN"]
| sort @timestamp desc
| limit 20
```

## Comprendere i motivi di interruzione delle attività del daemon
<a name="action-logs-troubleshooting-daemon-task-stops"></a>

Le attività daemon si interrompono in modo imprevisto.

Filtra `WARN` e `ERROR` registra i dettagli relativi agli errori delle attività daemon. I seguenti campi del `detail` payload forniscono informazioni sul motivo per cui un'attività daemon è stata interrotta:

`detail.stopCode`  
Un codice leggibile dal computer che classifica il motivo dell'interruzione dell'attività.

`detail.statusReason`  
Una descrizione leggibile dall'uomo del motivo per cui l'attività è stata interrotta. Questo campo non è presente in tutte le voci del registro.

`detail.containerStoppedReason`  
Contesto aggiuntivo sul contenitore specifico che ha causato l'interruzione dell'attività.

Per un elenco completo dei codici di arresto delle attività e delle relative descrizioni, vedere[Amazon ECS ha interrotto i messaggi di errore relativi alle attività](stopped-task-error-codes.md).

**Nota**  
Le interruzioni previste delle attività daemon, ad esempio`UserInitiated`, vengono filtrate dai registri delle azioni. Vengono visualizzate solo le interruzioni delle attività daemon impreviste o correlate a un errore.

## Domande utili CloudWatch su Logs Insights
<a name="action-logs-troubleshooting-queries"></a>

Usa le seguenti query CloudWatch Logs Insights per analizzare i problemi più comuni con i tuoi servizi Amazon ECS.

**Tutti gli errori dell'ultima ora **

```
fields @timestamp, logLevel, eventName, detail.statusReason
| filter logLevel = "ERROR"
| sort @timestamp desc
| limit 50
```

**Nota**  
Il `detail.statusReason` campo non è presente in tutte le voci del registro. Se il campo è vuoto nei risultati, utilizza questi `eventName` e altri campi del `detail` payload come contesto.

**Eventi per un servizio specifico **

```
fields @timestamp, logLevel, detail.statusReason
| filter @message like /{{my-service}}/
| sort @timestamp desc
| limit 50
```

**Cronologia di implementazione per una distribuzione specifica **

```
fields @timestamp, logLevel, detail.statusReason
| filter detail.deploymentArn like /{{my-cluster}}\/{{my-service}}\/{{abc123}}/
| sort @timestamp asc
```

**Errori delle attività Daemon raggruppati per motivo **

```
filter logLevel = "ERROR" and detail.stopCode != ""
| stats count(*) as failureCount by detail.stopCode, detail.statusReason
| sort failureCount desc
| limit 20
```