Un guide expert pour maîtriser le flux de travail de dépannage AWS
Utilisez un flux de travail de dépannage AWS reproductible avec CloudWatch, CloudTrail, les journaux de flux VPC, AWS Config et Systems Manager.
Un guide expert pour maîtriser le flux de travail de dépannage AWS
Le dépannage AWS devient plus facile lorsque vous suivez le même flux de travail à chaque fois : définir le symptôme, réduire le périmètre, vérifier les modifications récentes, inspecter les journaux et les métriques, puis tester une cause probable à la fois. Sans cette structure, il est facile de sauter entre CloudWatch, IAM, les paramètres VPC et les journaux d'application sans rien prouver.
Ce guide vous offre un flux de travail pratique de dépannage AWS et montre où CloudWatch, CloudTrail, AWS Config, les journaux de flux VPC et Systems Manager s'intègrent.
Le flux de travail de base du dépannage AWS
Un flux de travail de dépannage efficace n'est pas une série d'actions aléatoires mais une méthodologie structurée qui vous guide de la détection du problème à la résolution et à la prévention. Adopter un processus reproductible garantit la cohérence, réduit le stress et accélère la résolution des incidents.
1. Définir le problème : recueillir les informations initiales
La première étape consiste à comprendre clairement ce qui se passe. Évitez de faire des suppositions. Recueillez autant d'informations objectives que possible.
- Symptômes : Qu'est-ce qui échoue ou se comporte de manière inattendue ? (par exemple, "les appels API expirent", "le site Web renvoie des erreurs 5xx", "l'instance EC2 est inaccessible").
- Périmètre : Quelle est l'ampleur du problème ? (par exemple, une seule instance, une application spécifique, toute une région, des utilisateurs spécifiques). Cela affecte-t-il la production, la préproduction ou le développement ?
- Impact : Quel est l'impact commercial ? (par exemple, perte de revenus, insatisfaction des clients, risque de sécurité).
- Dernier état connu correct : Quand cela a-t-il fonctionné correctement pour la dernière fois ?
- Messages d'erreur : Collectez tous les messages d'erreur provenant des applications, des consoles de navigateur ou des réponses directes des services AWS.
Astuce : Encouragez les utilisateurs ou les systèmes à fournir des messages d'erreur et des horodatages spécifiques. Ces données sont inestimables.
2. Vérifier le périmètre : isoler les composants affectés
Une fois le problème défini, réduisez le rayon d'explosion potentiel. Cela vous aide à concentrer vos efforts d'investigation.
- Santé AWS : Vérifiez l'état de santé AWS dans votre compte et la page publique de statut AWS pour les problèmes régionaux en cours. Un événement de service généralisé peut souvent expliquer de nombreux symptômes.
- Isoler la ressource : Si un serveur web est en panne, s'agit-il d'une seule instance EC2 ou de toutes ? La base de données est-elle accessible depuis d'autres instances ?
- Réplication : Le problème peut-il être reproduit de manière cohérente ? Si oui, dans quelles conditions ?
3. Examiner les modifications récentes : identifier les déclencheurs potentiels
La plupart des problèmes sont déclenchés par une modification. C'est souvent le chemin le plus rapide vers la résolution.
- Modifications de déploiement : Nouveaux déploiements de code, mises à jour de l'infrastructure en tant que code (IaC).
- Modifications de configuration : Modifications des groupes de sécurité, mises à jour des politiques IAM, paramètres de l'équilibreur de charge, groupes de paramètres de base de données.
- Événements de mise à l'échelle : Activités de mise à l'échelle automatique, mise à l'échelle manuelle des services.
- AWS CloudFormation / Terraform : Examinez les mises à jour récentes de la pile ou les modifications de ressources.
Mise en avant de l'outil : AWS CloudTrail est votre outil principal ici, montrant qui a fait quoi, quand et d'où.
4. Utiliser les outils de surveillance AWS : plonger en profondeur dans les données
C'est là que vous exploitez les outils d'observabilité natifs d'AWS pour recueillir des preuves empiriques.
- Amazon CloudWatch : Pour les métriques, les journaux et les alarmes.
- AWS CloudTrail : Pour l'activité API et l'historique des modifications.
- Journaux de flux VPC : Pour l'analyse du trafic réseau.
- AWS Config : Pour l'historique de configuration et la conformité.
- Journaux d'application : Journaux de vos applications fonctionnant sur EC2, ECS, Lambda, etc.
5. Formuler et tester des hypothèses : développer et valider des théories
Sur la base des données collectées, développez une ou plusieurs hypothèses sur la cause racine. Ensuite, testez systématiquement chacune d'elles.
- Exemple d'hypothèse : "L'instance EC2 est inaccessible car son groupe de sécurité n'autorise pas le trafic SSH entrant."
- Test : Vérifiez les règles du groupe de sécurité. Si nécessaire, modifiez-les temporairement (avec prudence et plan de restauration) pour voir si la connectivité est rétablie.
6. Mettre en œuvre et vérifier la solution : appliquer les correctifs et confirmer la résolution
Une fois qu'une hypothèse est confirmée, appliquez le correctif. Faites-le avec précaution et, si possible, d'abord dans un environnement contrôlé.
- Correctif : Mettez à jour une politique IAM, reconfigurez un groupe de sécurité, annulez un déploiement de code, augmentez la taille d'un service.
- Vérification : Assurez-vous que les symptômes d'origine ont disparu et qu'aucun nouveau problème n'a été introduit. Surveillez les métriques et les journaux pertinents après le correctif.
7. Documenter et apprendre : améliorer le dépannage futur
Chaque incident est une opportunité d'apprentissage. Documenter le problème, les étapes d'investigation, la résolution et les mesures préventives est crucial.
- Rapport d'incident : Créez un bref rapport détaillant la chronologie, les symptômes, la cause racine, la résolution et les leçons apprises.
- Base de connaissances : Ajoutez à la base de connaissances de votre équipe pour référence future.
- Mesures préventives : Mettez en œuvre une surveillance, des alarmes ou des modifications architecturales pour éviter la récurrence.
- Post-mortem : Menez une post-mortem sans blâme pour identifier les faiblesses systémiques.
Outils clés de dépannage AWS en profondeur
AWS fournit une suite puissante d'outils pour faciliter le dépannage. Comprendre leurs forces est essentiel.
Amazon CloudWatch
CloudWatch collecte les données de surveillance et d'exploitation sous forme de journaux, de métriques et d'événements. Il est essentiel pour comprendre la santé et les performances de vos ressources et applications AWS.
- Métriques : Visualisez les données de performance (utilisation CPU, E/S réseau, opérations disque, connexions base de données, invocations/erreurs Lambda). Créez des métriques personnalisées pour vos applications.
- Journaux : Centralisez les journaux des instances EC2 (agent CloudWatch), des fonctions Lambda, des journaux de flux VPC, des journaux CloudTrail, etc. Utilisez CloudWatch Logs Insights pour des requêtes puissantes.
- Alarmes : Définissez des seuils sur les métriques pour déclencher des notifications (SNS, Lambda) lorsque des problèmes surviennent.
Exemple pratique : enquête sur une instance EC2 qui ne répond pas
- Vérifier les vérifications d'état de l'instance EC2 : Dans la console EC2, regardez les vérifications d'état de l'instance (état du système et état de l'instance). Si l'une d'elles échoue, c'est un indicateur fort.
- Métriques CloudWatch : Accédez aux métriques CloudWatch pour l'instance.
CPUUtilization: Le CPU est-il constamment à 100 % ?NetworkIn/NetworkOut: Y a-t-il un trafic inattendu ou une chute soudaine ?DiskReadOps/DiskWriteOps: Les E/S disque sont-elles saturées ?StatusCheckFailed_Instance/StatusCheckFailed_System: Ces métriques seront à1si une vérification a échoué.
- Journaux CloudWatch : Si l'agent CloudWatch est configuré, vérifiez
/aws/ec2/instance_id/pour les journaux d'application ou système (par exemple,syslog,nginx_access_log). Utilisez CloudWatch Logs Insights pour rechercher des erreurs ou des événements spécifiques.
# Exemple de requête CloudWatch Logs Insights pour les erreurs dans les journaux d'une instance EC2
fields @timestamp, @message
| sort @timestamp desc
| filter @message like /ERROR|FAIL|EXCEPTION/ and @logStream = 'i-0abcdef1234567890'
| limit 50
AWS CloudTrail
CloudTrail enregistre les appels API effectués dans votre compte AWS, fournissant un historique des actions effectuées par les utilisateurs, les rôles ou les services AWS. Il est essentiel pour l'audit de sécurité, la conformité et, surtout, le dépannage des modifications.
- Historique des événements : Affichez un historique des événements de gestion (par exemple,
RunInstances,AuthorizeSecurityGroupIngress,UpdateFunctionConfiguration). - Événements de données : Configurez des sentiers pour enregistrer les opérations du plan de données pour les objets S3, les invocations de fonctions Lambda, etc.
Exemple pratique : diagnostic d'une erreur d'autorisation IAM (Accès refusé)
Une application ou un utilisateur reçoit une erreur "Accès refusé" en essayant d'effectuer une action AWS (par exemple, s3:GetObject).
- Identifier l'action qui échoue : Quel appel API AWS spécifique a échoué ?
- Aller dans l'historique des événements CloudTrail : Filtrez les événements par :
- Nom de l'événement : L'appel API exact (par exemple,
GetObject). - Nom d'utilisateur : L'utilisateur ou le rôle IAM qui a effectué l'appel.
- Source de l'événement : Le service AWS impliqué (par exemple,
s3.amazonaws.com). - Plage de temps : Autour du moment où l'erreur s'est produite.
- Nom de l'événement : L'appel API exact (par exemple,
- Examiner les détails de l'événement : Recherchez les événements avec
errorCode: "AccessDenied".- Le champ
errorMessagefournit souvent des indices sur l'autorisation spécifique manquante ou la violation de politique de ressource. - Le champ
requestParametersmontre les arguments passés, comme le bucket ou la clé S3. - Le champ
userIdentityconfirme qui a tenté l'action.
- Le champ
Cela identifiera exactement quel utilisateur ou rôle a tenté quelle action sur quelle ressource et a échoué en raison des autorisations, vous permettant de modifier la politique IAM ou la politique de ressource concernée.
AWS Config
AWS Config fournit un inventaire détaillé de vos ressources AWS, de leurs configurations et de la façon dont elles changent au fil du temps. Il peut évaluer les modifications de configuration par rapport aux paramètres souhaités.
- Historique de configuration : Voyez comment la configuration d'une ressource a changé (par exemple, quand une règle de groupe de sécurité a été ajoutée ou supprimée, ou quand une politique de bucket S3 a été modifiée).
- Conformité : Définissez des règles pour vérifier les configurations des ressources par rapport aux meilleures pratiques ou aux exigences réglementaires.
Cas d'utilisation : Si une application perd soudainement l'accès à une base de données, vous pouvez utiliser AWS Config pour vérifier si le groupe de sécurité de la base de données a été modifié récemment, révoquant potentiellement l'accès pour les instances de votre application.
Journaux de flux VPC
Les journaux de flux VPC capturent des informations sur le trafic IP entrant et sortant des interfaces réseau dans votre VPC. Ils sont inestimables pour les problèmes de connectivité réseau.
- Analyse du trafic : Identifiez le trafic bloqué (actions REJECT), les connexions inattendues ou les volumes importants de trafic vers/depuis des IP spécifiques.
- Dépanner la connectivité : Déterminez si les groupes de sécurité, les NACL ou les tables de routage bloquent le trafic légitime.
Cas d'utilisation : Votre instance EC2 ne peut pas se connecter à une API externe. Vérifiez les journaux de flux pour les entrées REJECT de l'ENI de l'instance vers l'adresse IP de l'API, ce qui pourrait indiquer un groupe de sécurité ou une NACL restrictif.
AWS Systems Manager
Systems Manager offre une interface unifiée pour visualiser les données opérationnelles de plusieurs services AWS et automatiser les tâches opérationnelles. Les composants clés pour le dépannage incluent :
- Session Manager : Accédez de manière sécurisée à une session shell sur les instances EC2 sans ouvrir de ports entrants (comme le port SSH 22), réduisant ainsi les risques de sécurité et simplifiant l'accès.
- Run Command : Exécutez à distance des scripts ou des commandes sur des instances EC2 pour recueillir des données de diagnostic ou appliquer des correctifs (par exemple, redémarrer un service, récupérer des journaux).
- Automation : Créez des runbooks pour automatiser les étapes courantes de dépannage et de correction.
Scénarios courants de dépannage AWS et solutions
Problèmes de connectivité
Les problèmes de connectivité sont fréquents et peuvent provenir de divers composants réseau.
- Groupes de sécurité : Agissent comme des pare-feu virtuels pour les instances EC2. Vérifiez les règles entrantes et sortantes pour les ports et plages IP requis.
- Listes de contrôle d'accès réseau (NACL) : Pare-feu sans état au niveau du sous-réseau. Examinez les règles entrantes et sortantes, en prêtant attention à l'ordre des règles et aux règles
DENYexplicites. - Tables de routage : Assurez-vous que des routes appropriées existent pour que le trafic atteigne sa destination (par exemple, passerelle Internet pour le trafic public, passerelle NAT pour les instances privées accédant à Internet, peering VPC pour la communication inter-VPC).
- Résolution DNS : Vérifiez que les instances peuvent résoudre les noms d'hôte. Vérifiez les paramètres DNS du VPC et tout serveur DNS personnalisé.
- Chevauchements de CIDR de sous-réseau : Si vous utilisez le peering VPC ou des VPN, assurez-vous qu'il n'y a pas de chevauchement de blocs CIDR.
Erreurs d'autorisation (Accès refusé)
Ces erreurs se produisent lorsqu'un principal IAM (utilisateur, rôle) tente une action sans les autorisations nécessaires.
- Politiques IAM : Le coupable le plus courant. Vérifiez la politique IAM attachée à l'utilisateur ou au rôle. Utilisez le simulateur de politique IAM pour tester des actions et des ressources spécifiques.
- Politiques de ressource : Pour des services comme S3, SQS, KMS et ECR, les politiques de ressource définissent qui peut accéder à la ressource. Assurez-vous que le principal appelant se voit accorder l'accès ici.
- Politiques de contrôle de service (SCP) : Si vous utilisez AWS Organizations, les SCP peuvent restreindre les actions au niveau du compte ou de l'unité organisationnelle.
- Limite d'autorisations : Une fonctionnalité IAM avancée qui peut limiter les autorisations maximales qu'une entité IAM peut avoir.
- Politiques de session : Politiques temporaires qui peuvent remplacer ou restreindre les autorisations effectives d'une identité.
Limites de service et limitation
Les services AWS ont des limites souples et dures. Atteindre ces limites peut entraîner une dégradation du service ou des échecs.
- Surveiller les limites : Vérifiez régulièrement vos quotas de service via la console AWS Service Quotas. Créez des alarmes CloudWatch pour les métriques approchant des limites critiques.
- Demander des augmentations : La plupart des limites souples peuvent être augmentées en soumettant un ticket de support à AWS.
- Limitation : Des services comme Lambda, DynamoDB et API Gateway peuvent limiter les demandes lorsque les taux d'appel dépassent la capacité provisionnée ou les limites de burst. Recherchez les erreurs
TooManyRequestsExceptionouThrottlingExceptiondans les journaux. - Mise à l'échelle : Assurez-vous que vos groupes de mise à l'échelle automatique, vos services ECS ou vos réplicas de lecture de base de données sont configurés pour évoluer de manière adéquate en fonction de la demande.
Meilleures pratiques pour un dépannage proactif
Mieux vaut prévenir que guérir. Mettez en œuvre ces pratiques pour minimiser les incidents et accélérer la résolution.
- Mettre en œuvre une surveillance et des alertes robustes : Configurez des alarmes CloudWatch pour les métriques critiques, la santé du système et les erreurs d'application. Intégrez-les à des systèmes de notification (SNS, Slack, PagerDuty).
- Journalisation centralisée : Consolidez tous les journaux d'application et d'infrastructure dans CloudWatch Logs ou une solution de journalisation dédiée (par exemple, pile ELK sur EC2/ECS, Datadog, Splunk).
- Infrastructure en tant que code (IaC) : Gérez votre infrastructure à l'aide de CloudFormation, Terraform ou CDK. Cela fournit un contrôle de version et simplifie les restaurations.
- Principe du moindre privilège : Accordez uniquement les autorisations nécessaires aux utilisateurs et aux rôles. Cela réduit le rayon d'explosion des incidents de sécurité potentiels et simplifie le dépannage des autorisations.
- Examiner régulièrement les politiques IAM : Auditez périodiquement les politiques IAM pour les déclarations trop permissives ou les autorisations inutilisées.
- Comprendre les limites de service : Soyez conscient des quotas de service par défaut pour votre région et votre compte. Demandez des augmentations de manière proactive pour une croissance anticipée.
- Automatiser les tâches courantes : Utilisez AWS Systems Manager Automation ou les fonctions Lambda pour automatiser les vérifications de diagnostic et les corrections pour les problèmes récurrents.
- Stratégie de balisage : Mettez en œuvre une stratégie de balisage cohérente pour toutes vos ressources. Cela aide à l'organisation, à la répartition des coûts et au filtrage des ressources lors du dépannage.
- Pratiquer la réponse aux incidents : Effectuez des exercices réguliers pour les incidents critiques. Cela aide les équipes à se familiariser avec le flux de travail et les outils sous pression.
Point clé à retenir
Un bon dépannage AWS est discipliné, pas frénétique. Définissez le problème, vérifiez le périmètre et les modifications récentes, utilisez la bonne source de données AWS et documentez le correctif afin que le prochain incident soit plus rapide à résoudre.