Dec 1st, 2024: [FR] Surveiller l'ouverture du service du Père Noël

This article is also available in English.

Cet article raconte une histoire vraie où je voulais alerter immédiatement ma fille lorsque la page d'inscription de son université devenait disponible. La page à surveiller nécessitait une connexion avec un identifiant et un mot de passe.

Cette année, le Père Noël a ajouté un nouveau service de commande de jouets.

En vous connectant avec votre email et le mot de passe correct (qui est santa dans cet exemple), vous verrez que le service n'est pas encore prêt.

Mais si vous voulez être alerté dès que le service est disponible, comment pouvez-vous surveiller cela ? Vous ne savez même pas à quoi ressemblera le service, car vous n'en êtes pas propriétaire.

Pour cette tâche, j'ai utilisé Elastic Synthetic Monitoring, car il s'agissait de la solution la plus simple pour moi. Elle fonctionne parfaitement sur cloud.elastic.co et m'évite de lancer une machine virtuelle sur Internet pour effectuer ces vérifications.

Ce dont nous avons besoin pour mettre en œuvre cela :

  • Détecter qu'après connexion au service, le texte "Le service n'est pas encore ouvert. Il ouvrira le 1er décembre 2024 à minuit." a changé.
  • Si ce texte change ou si une autre page s'affiche, je veux recevoir une alerte par e-mail et aussi via Slack pour recevoir une notification sur mon téléphone.

Configurer le "monitor"

Commençons par créer un "monitor" qui vérifiera que la page web est accessible. Notez que je peux vérifier si le service est accessible depuis plusieurs emplacements dans le monde. Ici, j'ai choisi de faire mes tests depuis le Royaume-Uni. Elastic Cloud propose de nombreux emplacements par défaut.

Mais cela ne teste pas le parcours utilisateur : connexion, vérification du texte, etc. Nous devons donc modifier notre "monitor" :

Le "monitor" par défaut utilise un script Playwright qui ouvre simplement une page :

Vous pouvez modifier ce script manuellement ou utiliser le Synthetics Recorder, qui reproduit automatiquement le comportement utilisateur sous forme de script.

Enregistreur Synthetics (Synthetics Recorder)

Ouvrez le Synthetics Recorder.

Cliquez sur Start. Cela ouvre un navigateur. Cliquez et naviguez sur le site, cliquez sur le bouton de connexion, entrez votre e-mail et votre mot de passe, puis validez.

Cliquez sur le texte que vous souhaitez vérifier. Arrêtez ensuite l'enregistrement.

Modifiez la dernière action (la sélection du texte) pour ajouter une assertion sur le texte intérieur. Sélectionnez le titre et vérifiez que la valeur correspond à ce que vous voyez actuellement : "Le service n'est pas encore ouvert. Il ouvrira le 1er décembre 2024 à minuit."

Importez le script dans Synthetics Monitor :

Lancer la surveillance

Activez le "monitor" et modifiez la fréquence si nécessaire. Pour être très réactif, j'ai réglé la fréquence à 1 minute.

Après quelques exécutions, vous verrez que tout va bien tant que le texte sur le site reste inchangé.

Alertes Slack

Pour ajouter un connecteur Slack, commencez par créer une application sur Slack.

Activez ensuite le webhook.

Définissez dans quel canal l'application enverra les messages.

Cela ajoute un webhook. Copiez sa valeur.

Collez-le dans le connecteur Slack sur Kibana.

Vous pouvez maintenant éditer l'alerte pour la règle d'état du "monitor".

Ajoutez le connecteur Slack du Père Noël (et un connecteur e-mail si vous le souhaitez).

Attendez que la page web soit mise à jour

Une fois en fonctionnement, aucune alerte ne sera générée tant que la page ne changera pas. Cela entraînera une erreur d'exécution du script Playwright.

Et cela déclenchera la notification attendue.

Avec tous les détails par défaut fournis par l'alerte. J'ai masqué l'URL exacte du cluster Kibana dans cette capture d'écran.

Commandez vos jouets !

Avec cette technique simple, vous serez probablement la première personne à savoir que le service du Père Noël est réellement ouvert, même avant la date annoncée sur le site. Vous pourrez ainsi commander les jouets de vos rêves.

Joyeux Noël Elky !