Michel ne vous a pas lâché, et ce matin il est avec vous pour de nouvelles aventures. Il vous enjoint de trouver une solution pour surveiller l’état de vos machines et faire remonter des alertes. Heureusement, AWS possède déjà un certain nombre de choses pour vous aider à mettre cela en place. C’est ce que nous allons voir dans ce chapitre.
Découvrez les métriques CloudWatch pour EC2
Vous n’y avez sans doute pas fait attention auparavant, mais EC2 expose un certain nombre de métriques dans l’onglet Monitoring en dessous de la description de votre instance :
Ces métriques sont les métriques “standard” remontées par toutes les instances EC2 de votre compte, sans que vous ayez rien à faire de particulier. Il existe deux modes de surveillance :
basique : les données sont disponibles toutes les 5 minutes, sans coût additionnel ;
détaillée : les données sont disponibles toutes les minutes, avec un coût supplémentaire.
Les métriques sont également disponibles dans l’écran de contrôle CloudWatch. Pour y accéder, allez dans le service CloudWatch, ou bien, depuis l’écran de EC2, cliquez sur View all CloudWatch metrics pour être redirigé.
Dans le panneau CloudWatch, cliquez sur Metrics puis cherchez votre instance de la manière suivante :
Cliquez sur EC2.
Cliquez sur Per-Instance Metrics.
Cherchez votre identifiant d’instance dans "Zone de saisie".
Sélectionnez les métriques que vous souhaitez afficher.
Vous pourrez ainsi avoir un graphique comme celui-ci :
Créez votre premier dashboard
Il existe un service dans CloudWatch qui permet de créer un aperçu visuel des différentes métriques de vos systèmes ; il s’agit de la fonction Dashboard. Cliquez à gauche sur Dashboards, puis Create dashboard. Choisissez un nom puis cliquez sur Create.
Ajoutez des éléments à votre dashboard comme ceci :
cliquez sur Add widget ;
choisissez un type d’affichage, par exemple Line ;
cliquez sur Configure ;
choisissez votre métrique comme précédemment ;
recommencez pour ajouter d’autres éléments.
Après plusieurs manipulations, vous pouvez cliquer sur Save dashboard et constater le résultat :
Un dashboard, c’est très bien pour la visualisation, mais vous n’allez probablement pas passer vos journées à regarder les graphiques, et c’est normal. Michel vous suggère de chercher un moyen d’avoir des alertes, par exemple en cas de dépassement d’un seuil sur le trafic réseau, et en particulier, de regarder comment fonctionnent les alarmes CloudWatch.
Créez une alarme CloudWatch
CloudWatch possède un composant appelé CloudWatch Alarms.
Par la suite, il vous sera même possible de configurer des actions lors du passage de l’état OK à ALARM.
Vous allez devoir choisir la métrique à surveiller dans l’alarme. Pour cela, suivez les étapes suivantes :
dans le service CloudWatch, cliquez sur Alarms ;
cliquez sur Select Metrics ;
cliquez sur EC2 ;
cliquez sur By Auto Scaling Group ;
cliquez sur la métrique NetworkPacketsOut de votre Auto Scaling Group ;
cliquez sur Select.
Vous allez configurer un seuil pour l’alarme, de manière à ce que lorsque le nombre de paquets en sortie arrivera au dessus de 1 000, l’alarme sera déclenchée. Pour configurer un tel seuil, choisissez un nom pour votre alarme et renseignez les paramètres suivants :
Laissez les autres paramètres par défaut. Dans la partie Actions, cliquez sur Delete pour supprimer l’action par défaut : nous en ajouterons une plus tard. Enfin, cliquez sur Create Alarm.
Une fois créée, votre alarme s’affiche :
Vous pouvez voir ce qu’il s’est passé dans l’historique en dessous de l’alarme :
Nous allons simuler le passage de l’alarme à l’état d’alerte. Pour cela, il faut baisser le seuil d’alerte à un niveau très bas et engendrer du trafic. Cliquez sur Actions puis Modify, et baissez le seuil à 10. Cliquez sur Save changes. Allez sur votre site, et rafraîchissez la page plusieurs fois, puis attendez quelques minutes. L’alarme devrait être passée à l’état ALARM.
Vous pouvez remettre le seuil de 1 000 pour la suite.
C’est pas mal, mais nous ne sommes toujours pas notifiés si le seuil est franchi ! Pour cela, il faut rajouter une action à cette alarme ; voici comment.
Envoyez des emails en cas d'alerte sur votre infrastructure
Envoyer un email à chaque franchissement de seuil est relativement facile. Néanmoins, parce que nous allons utiliser le service d’envoi de mails Amazon, il nous faudra confirmer que l’adresse nous appartient. Ce mécanisme permet à AWS de se protéger contre les envois de spams.
Le système d’action des alarmes CloudWatch repose sur un service appelé Amazon SNS, pour Simple Notification Service. Ce service fournit un mécanisme de notification entièrement géré et “sans serveur”. Le principe de fonctionnement est le suivant :
Créer un canal dans Amazon SNS, appelé topic, qui va recevoir les événement de franchissement de seuil de l’alarme.
Enregistrer une souscription à ce canal vers notre adresse email. L’adresse email doit avoir été vérifiée, car nous sommes dans la sandbox mail d’AWS.
Indiquer à l’alarme d’effectuer une action lorsqu’un seuil est franchi, propageant l’événement à notre canal Amazon SNS.
Pour ajouter une notification mail, suivez les étapes suivantes :
Cliquez sur votre alarme et choisissez Action puis Modify.
Dans la partie Actions de l’alarme, cliquez sur + Notification.
Dans la section Whenever this alarm, choisissez ALARM.
Devant Send notification to, cliquez sur le minuscule texte New list.
Choisissez un nom à la liste de diffusion.
Dans le panneau Email list qui s’est ouvert, entrez votre email.
Cliquez sur Save changes.
Un panneau vous indique de confirmer votre email :
Allez dans votre email et cliquez sur le mail de confirmation :
Vous allez voir un message qui confirme l’enregistrement de l’email :
Nous avons à présent créé une action à notre alarme, qui envoie un message à un canal dans le composant Amazon appelé Amazon SNS. Automatiquement, nous avons créé une souscription à ce canal, qui envoie un email à notre adresse.
Il est temps d’essayer notre envoi d’email. Montez le seuil pour que l’alarme passe à OK, puis baissez-le afin de déclencher le franchissement du seuil ALARM. Si tout s’est déroulé comme prévu, vous avez reçu un email avec le nom de votre alarme dans le sujet :
C’est terminé ! Vous et Michel serez désormais notifiés lorsque le trafic réseau est trop important dans votre groupe de machines. Michel est reparti à son bureau, et la vie a repris son cours, mais le repos fut bref. Vous avez reçu un email de l’équipe en charge de la veille, informant l’entreprise qu’une vulnérabilité a été identifiée dans le système Linux faisant tourner vos machines, et qu’il était primordial d’effectuer une mise à jour sans tarder. Nous allons donc devoir mettre à jour notre parc ; c’est ce que nous allons voir au chapitre suivant.
En résumé
le service EC2 possède des métriques permettant de visualiser la consommation de certains éléments systèmes, comme le CPU ou la charge réseau ;
il existe deux types de métriques pour EC2 : basique ou détaillée ;
il est possible de regrouper plusieurs métriques dans un dashboard ;
pour être notifié en cas de dépassement d’un seuil sur une métrique, il faut en premier lieu créer une alarme ;
une action doit être associée à l’alarme au franchissement du seuil, pour permettre d’envoyer une notification dans Amazon SNS ;
les emails sont envoyés via une souscription à l’événement dans Amazon SNS ;
afin d’envoyer des emails en automatique, l’adresse mail doit être confirmée en amont si le compte est dans la sandbox mail (état par défaut).