Le pire avec un serveur en panne, ce n'est pas la panne : c'est de l'apprendre par un client deux heures plus tard. AWS peut vous prévenir dès que quelque chose va mal, mais par défaut il ne prévient de rien : il faut le lui demander machine par machine. Ce guide configure les deux alertes qui valent le plus la peine, « la machine ne répond pas » et « le processeur est au maximum depuis longtemps », de façon à ce qu'elles arrivent dans votre boîte e-mail.
Lightsail et EC2 procèdent différemment. Lightsail l'intègre et c'est plus simple ; EC2 utilise deux services AWS avec leur propre nom, CloudWatch et SNS, que nous expliquons plus bas.
Avant de commencer : ce que signifie chaque chose
- Métrique
- Une donnée qu'AWS mesure sur votre machine toutes les quelques minutes : utilisation du processeur, trafic réseau, réponse aux vérifications de l'état...
- Alarme
- Une règle du type « si cette métrique dépasse telle valeur pendant tant de temps, préviens-moi ».
- CPU
- Le processeur. S'il est à 100 % longtemps, le site est lent ou quelque chose est resté bloqué.
- Vérification de l'état (status check)
- Dans EC2, un test automatique qu'AWS effectue chaque minute pour voir si la machine répond. S'il échoue, la machine est en panne ou bloquée.
- CloudWatch
- Le service d'AWS qui conserve les métriques et gère les alarmes d'EC2 et des autres services.
- SNS
- Simple Notification Service, le service d'alertes d'Amazon : il reçoit un message d'une alarme et l'envoie à qui est abonné, par exemple à votre e-mail.
- Rubrique SNS
- Le « canal » vers lequel les alertes sont envoyées et auquel vous vous abonnez avec votre adresse e-mail.
Pas à pas
Lightsail : ouvrez les métriques de la machine
Dans la console Lightsail, cliquez sur la machine puis sur l'onglet Métriques. Vous verrez des graphiques de CPU, de réseau et de vérifications de l'état. Sous chaque graphique se trouve un lien Ajouter une alarme.
Lightsail : créez l'alarme « ne répond pas »
Sur le graphique Échecs de vérification de l'état, cliquez sur Ajouter une alarme. Condition : supérieur ou égal à 1 pendant 2 périodes de 5 minutes (vous évitez ainsi une alerte pour un clignotement d'une minute). Dans Notifications, cochez E-mail et saisissez votre adresse ; la première fois, Lightsail vous envoie un e-mail de confirmation que vous devez accepter. Si vous préférez, dans certaines régions il accepte aussi les SMS. Enregistrez.
Lightsail : créez l'alarme de CPU
Sur le graphique Utilisation du processeur, Ajouter une alarme. Condition : supérieur à 90 % pendant 3 périodes de 5 minutes, c'est-à-dire un quart d'heure à la limite. Même e-mail. Si votre machine est l'une des petites, vous verrez aussi sur le graphique la zone « rafale » : les petites machines peuvent monter à 100 % un moment, mais pas de façon soutenue.
Optionnel et très utile : dans le même onglet, l'alarme de trafic réseau sortant élevé prévient que le site reçoit bien plus de visites que d'habitude ou que quelque chose envoie des données qu'il ne devrait pas.
EC2 : créez le canal d'alertes (rubrique SNS)
Pour EC2, il faut d'abord le « canal ». Ouvrez le service SNS, Rubriques, Créer une rubrique, type Standard, nom
avisos-servidores. Dans la rubrique, Créer un abonnement, protocole E-mail, votre adresse. Vous recevez un e-mail avec un lien de confirmation : cliquez dessus. Tant qu'il n'est pas « Confirmé », vous ne recevrez rien. Vous pouvez ajouter plusieurs adresses.EC2 : créez les deux alarmes depuis la machine
Dans la console EC2, sélectionnez la machine, onglet Surveillance, bouton Créer une alarme (ou bien Actions, Surveiller et dépanner, Gérer les alarmes CloudWatch). Première alarme : métrique Status check failed, condition supérieur ou égal à 1 pendant 2 périodes de 5 minutes, notification vers la rubrique
avisos-servidores. Si vous voulez qu'AWS redémarre la machine tout seul quand la vérification de l'état échoue, cochez l'action « Redémarrer » : pour un site web, c'est en général ce que vous voudriez de toute façon.Deuxième alarme : métrique CPUUtilization, supérieur à 90 % pendant 3 périodes de 5 minutes, même notification. Répétez sur chaque machine qui compte pour vous.
Testez que l'alerte arrive
N'attendez pas le jour du problème. Dans CloudWatch, ouvrez l'alarme et utilisez Actions, Définir l'état de l'alarme pour la forcer un instant : l'e-mail doit arriver. Dans Lightsail, arrêtez la machine depuis la console quelques minutes (si vous pouvez vous le permettre) et vérifiez qu'elle prévient. Remettez ensuite tout en l'état.
Ce qui peut mal tourner
Aucun e-mail n'arrive
L'abonnement n'est pas confirmé ou l'e-mail de confirmation est parti dans les indésirables. Dans SNS, l'abonnement doit indiquer « Confirmé ». Dans Lightsail, le contact e-mail doit apparaître comme vérifié dans l'onglet Métriques.
Je reçois des alertes à tout bout de champ
Les seuils sont trop serrés. Augmentez le pourcentage ou allongez la durée (par exemple 90 % pendant 30 minutes). Une alerte qu'on ignore est pire qu'aucune : ajustez jusqu'à ce que chaque alerte veuille dire quelque chose.
La machine est tombée et n'a pas prévenu
Si la machine a été arrêtée depuis la console (quelqu'un a cliqué sur Arrêter), la vérification de l'état ne compte pas comme un échec : la machine est arrêtée, pas cassée. Pour cela, il faut une surveillance à part qui compare l'état réel avec celui qu'elle devrait avoir.
Je veux l'alerte sur le téléphone, pas par e-mail
Dans SNS, en plus de l'e-mail, vous pouvez abonner un numéro de téléphone (SMS, payant et pas dans toutes les régions) ou une application à vous. Et il existe des services d'astreinte qui se connectent à SNS. Pour commencer, l'e-mail sur le téléphone fait l'affaire.
Dans Simplio
Dans Simplio, pas besoin de créer les alarmes une par une : vous cochez sur chaque machine ce que vous voulez surveiller (arrêt inattendu, processeur à la limite, disque plein, sauvegarde non faite) et Simplio vérifie tous vos comptes AWS toutes les quelques minutes et vous prévient par e-mail et dans l'application, une alerte quand le problème apparaît et une autre quand il est résolu. Chaque personne de votre équipe choisit les alertes qu'elle reçoit. Et comme Simplio sait si une machine devrait être allumée, il prévient aussi quand quelqu'un l'arrête depuis la console.
La même chose, dans AWS et dans Simplio
| Dans la console AWS | Dans Simplio | |
|---|---|---|
| Alerte de machine en panne ou CPU élevé | Lightsail : 2 alarmes par machine. EC2 : rubrique SNS, abonnement, confirmation, 2 alarmes par machine : 6 étapes, 15 minutes par machine | Cocher ce qu'il faut surveiller sur chaque machine : 2 cases |
| Si quelqu'un arrête la machine depuis la console | Les alarmes ne le détectent pas | Simplio sait si elle devrait être allumée et prévient |
| Plusieurs comptes et régions | Répéter dans chacun | Tous les comptes surveillés depuis le même endroit, chaque personne choisit ses alertes |