Depanarea aplicațiilor implementate

Implementarea aplicațiilor pe AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Task timed out

  • O funcție eșuează, dar nu întotdeauna
  • Jurnalul afișează "Task timed out"
  • Semnătura indică cauza reală

Un cronometru lângă o linie din jurnalul de erori care arată o sarcină Lambda cu timeout

Implementarea aplicațiilor pe AWS

Semnăturile comune ale erorilor Lambda

Grilă 2x2 cu semnăturile erorilor Lambda: Timeout cu log task-timed-out, Throttled cu TooManyRequestsException, Access Denied cu AccessDeniedException și Out of Memory cu eroare signal-killed

  • Timeout: "Task timed out after N seconds"
  • Throttle: TooManyRequestsException
  • Refuz IAM: AccessDenied, neautorizat
  • Memorie insuficientă: runtime oprit în timpul execuției
Implementarea aplicațiilor pe AWS

Primul răspuns la o funcție cu erori

  • Citește mesajul de eroare înainte să schimbi ceva
  • Potrivește-l cu o semnătură cunoscută
  • Verifică latența apelului downstream pentru timeout-uri
  • Schimbă un singur lucru, apoi retestează

Buclă de depanare: citește mesajul de eroare, potrivește cu semnătura cunoscută, verifică latența downstream, schimbă un lucru, apoi retestează

Implementarea aplicațiilor pe AWS

CloudWatch Logs Insights

O interogare Logs Insights folosește filter pentru filtrare și stats pentru agregare. Exemplul de mai jos numără erorile pe minut:

fields @timestamp, @message
| filter level = "ERROR"
| stats count() as errors by bin(1m)
| sort errors desc
Implementarea aplicațiilor pe AWS

Depanarea erorilor de integrare din ambele perspective

  • Erorile apar adesea între servicii
  • Citește jurnalul apelantului și al celui apelat
  • Corelează după request ID sau trace ID
  • Intervalul dintre ele relevă punctul de rupere

Jurnalele apelantului și ale celui apelat, aliniate unul lângă celălalt după request ID, cu un interval marcat ca punct de rupere al integrării unde cererea se oprește

Implementarea aplicațiilor pe AWS

Health checks și sonde de readiness

Load balancer care direcționează traficul către ținte sănătoase marcate cu bifă verde, și o țintă cu erori eliminată din rotație după eșecuri repetate la verificările de stare

  • Health check: instanța funcționează și răspunde?
  • Load balancer-ele direcționează traficul doar spre ținte sănătoase
  • Readiness: este pregătită să primească trafic?
  • Verificările eșuate elimină o țintă din rotație
Implementarea aplicațiilor pe AWS

Un plan de depanare

  • Citește eroarea și potrivește semnătura
  • Interoghează jurnalele cu Logs Insights pentru a delimita problema
  • Corelează ambele părți după request ID sau trace ID
  • Schimbă un singur lucru și verifică

Plan de depanare în patru pași: Citește eroarea și potrivește semnătura, Interoghează jurnalele cu Insights, Corelează ambele părți după trace ID, Schimbă un lucru și verifică

Implementarea aplicațiilor pe AWS

Hai să exersăm!

Implementarea aplicațiilor pe AWS

Preparing Video For Download...