Dépanner des applications déployées

Déployer des applications sur AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Task timed out

  • Une fonction échoue, mais seulement parfois
  • Le journal indique « Task timed out »
  • La signature pointe la vraie cause

Un chronomètre à côté d'une ligne de journal d'erreur montrant une tâche Lambda expirée

Déployer des applications sur AWS

Signatures d'échec Lambda courantes

Grille 2x2 de signatures d'échec Lambda : Timeout avec journal task-timed-out, Throttled avec TooManyRequestsException, Accès refusé avec AccessDeniedException, et Mémoire insuffisante avec erreur signal-killed

  • Délai dépassé : « Task timed out after N seconds »
  • Limitation : TooManyRequestsException
  • Refus IAM : AccessDenied, non autorisé
  • Mémoire insuffisante : l'environnement est interrompu en cours d'exécution
Déployer des applications sur AWS

Premiers réflexes face à une fonction en échec

  • Lire le message d'erreur avant tout changement
  • L'associer à une signature connue
  • Vérifier la latence de l'appel aval pour les délais dépassés
  • Changer un élément, puis retester

Boucle de décision pour le dépannage : lire le message d'erreur, associer à une signature connue, vérifier la latence en aval, changer un élément puis retester

Déployer des applications sur AWS

CloudWatch Logs Insights

Une requête Logs Insights utilise filter pour restreindre et stats pour agréger. Ici, elle compte les erreurs par minute :

fields @timestamp, @message
| filter level = "ERROR"
| stats count() as errors by bin(1m)
| sort errors desc
Déployer des applications sur AWS

Déboguer une intégration des deux côtés

  • Les échecs surviennent souvent entre services
  • Lire le journal de l'appelant et de l'appelé
  • Faire correspondre par ID de requête ou ID de trace
  • L'écart entre les deux révèle la rupture

Journaux de l'appelant et de l'appelé alignés côte à côte par ID de requête, avec un écart indiqué comme point de rupture d'intégration où la requête s'arrête

Déployer des applications sur AWS

Vérifications d'état et sondes de préparation

Répartiteur de charge acheminant le trafic vers des cibles saines avec coches vertes, et une cible en échec retirée de la rotation après des échecs de vérification d'état successifs

  • Vérification d'état : l'instance est-elle vivante et répond-elle ?
  • Les répartiteurs n'acheminent que vers des cibles saines
  • Disponibilité : est-elle prête à recevoir du trafic ?
  • Des échecs répétés retirent la cible de la rotation
Déployer des applications sur AWS

Guide de dépannage

  • Lire l'erreur et associer la signature
  • Interroger les journaux avec Logs Insights pour circonscrire
  • Corréler les deux côtés par ID de requête ou de trace
  • Changer un élément et vérifier

Guide de dépannage en quatre étapes : lire l'erreur et associer la signature, interroger les journaux avec Insights pour circonscrire, corréler les deux côtés par ID de trace, changer un élément et vérifier

Déployer des applications sur AWS

Passons à la pratique !

Déployer des applications sur AWS

Preparing Video For Download...