Risoluzione dei problemi nelle applicazioni distribuite

Distribuire applicazioni su AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Task timed out

  • Una funzione fallisce, ma solo a volte
  • Il log dice "Task timed out"
  • La firma indica la vera causa

Un cronometro accanto a una riga di log di errore che mostra una task Lambda scaduta

Distribuire applicazioni su AWS

Le firme di errore Lambda più comuni

Griglia 2x2 di firme di errore Lambda: Timeout con log task-timed-out, Throttled con TooManyRequestsException, Access Denied con AccessDeniedException e Out of Memory con errore signal-killed

  • Timeout: "Task timed out after N seconds"
  • Throttle: TooManyRequestsException
  • Negato da IAM: AccessDenied, not authorized
  • Memoria esaurita: runtime terminato a metà esecuzione
Distribuire applicazioni su AWS

Prima risposta a una funzione che fallisce

  • Leggi il messaggio di errore prima di cambiare qualcosa
  • Associalo a una firma nota
  • Controlla la latenza a valle per i timeout
  • Cambia una cosa, poi testa di nuovo

Ciclo decisionale per il troubleshooting: leggi il messaggio di errore, abbinalo a una firma nota, controlla la latenza a valle, cambia una cosa e poi ritesta

Distribuire applicazioni su AWS

CloudWatch Logs Insights

Una query Logs Insights usa filter per restringere e stats per aggregare. Qui conta gli errori per minuto:

fields @timestamp, @message
| filter level = "ERROR"
| stats count() as errors by bin(1m)
| sort errors desc
Distribuire applicazioni su AWS

Debug dei guasti di integrazione da entrambi i lati

  • I guasti spesso sono tra i servizi
  • Leggi il log del chiamante e del chiamato
  • Abbina per request ID o trace ID
  • Il divario tra i due rivela l'interruzione

Log di chiamante e chiamato allineati per request ID, con un gap etichettato come punto di rottura dell'integrazione dove la richiesta si ferma

Distribuire applicazioni su AWS

Health check e readiness probe

Load balancer che instrada il traffico verso target sani con segni di spunta verdi, e un target in errore rimosso dalla rotazione dopo ripetuti fallimenti dei controlli di integrità

  • Health check: l'istanza è attiva e risponde?
  • I bilanciatori instradano solo a target sani
  • Readiness: è pronta a ricevere traffico?
  • Se i check falliscono, il target esce dalla rotazione
Distribuire applicazioni su AWS

Un playbook per il troubleshooting

  • Leggi l'errore e abbina la firma
  • Interroga i log con Logs Insights per delimitarlo
  • Correla entrambi i lati con request o trace ID
  • Cambia una cosa e verifica

Playbook in quattro passi per il troubleshooting: leggi l'errore e abbina la firma, interroga i log con Insights per delimitarlo, correla entrambi i lati tramite trace ID, cambia una cosa e verifica

Distribuire applicazioni su AWS

Esercitiamoci!

Distribuire applicazioni su AWS

Preparing Video For Download...