TP N°9 : Notifier une alerte critique via un webhook, et exposer le rapport via une mini-API

Sophie ferme la boucle de cette section avec deux tickets liés : « D’abord, je veux une alerte instantanée dans notre salon Teams dès qu’un serveur tombe sous 20 % d’espace disque — un email, c’est trop lent pour une urgence. Ensuite, je veux que l’équipe puisse consulter l’état du parc à tout moment, sans attendre le rapport du matin. »

Objectif

Combiner Invoke-RestMethod (9.1), la gestion d’erreurs API (9.3) et le module Pode (9.4) pour construire deux automatisations complémentaires, toutes deux appuyées sur le script de supervision déjà écrit au TP N°7 de la section 7.

Un webhook Teams (ou Slack) est une simple URL fournie par une intégration configurée sur le salon cible ; à défaut d’en disposer pour ce TP, remplacez l’appel par un Write-Output simulant l’envoi, la logique du script reste identique.

Partie 1 : le webhook d’alerte

Étape 1 — Reprenez le script de supervision du TP N°7 (section 7), et isolez uniquement les serveurs sous 20 % d’espace disque libre dans une variable $serveursCritiques.

Étape 2 — Construisez le corps JSON attendu par un webhook Teams (format simplifié) et envoyez-le avec Invoke-RestMethod en méthode POST.
Indice : revoyez la leçon 9.1, section « Les verbes HTTP », pour la structure -Method Post -Body ... -ContentType "application/json".

Étape 3 — N’envoyez le webhook que si $serveursCritiques contient au moins un élément (pas de notification si tout va bien).

Étape 4 — Entourez l’appel au webhook d’un try/catch, pour que l’échec de la notification elle-même n’interrompe pas le reste du script.

Partie 2 : la mini-API de consultation

Étape 5 — Créez un script api-supervision.ps1 qui démarre un serveur Pode sur le port 8080, avec une route GET /api/supervision renvoyant le rapport complet en JSON.

Étape 6 (bonus) — Ajoutez une seconde route GET /api/supervision/critiques qui ne renvoie que les serveurs sous le seuil de 20 %.

Solution commentée