← Tous les guides

Guide · Cloud

Surveiller un runbook Azure Automation

Azure Monitor peut vous dire qu'un job de runbook s'est terminé en Failed, mais rien ne vous alerte si la planification est désactivée, si un Hybrid Runbook Worker tombe hors ligne, ou si l'exécution ne démarre tout simplement jamais. Un appel HTTP depuis le runbook comble ce trou.

1. Créez un check

Créez un check dans Mortemain correspondant au planning du runbook et à une fenêtre de grâce adaptée, puis copiez son URL de ping unique.

 votre URL de ping
https://ping.mortemain.com/votre-uuid-de-check

2. Faites le check-in depuis le runbook

Enveloppez le corps du runbook dans un try/catch. En cas de succès, appelez Invoke-RestMethod sur l'URL de ping. Dans le bloc catch, pinguez d'abord l'URL /fail, puis relancez l'erreur pour que le job du runbook apparaisse toujours comme Failed dans Azure.

 CleanupOldBlobs.ps1
$PingUrl = "https://ping.mortemain.com/votre-uuid-de-check"

try {
    # authentification du runbook via son identité managée
    Connect-AzAccount -Identity | Out-Null

    # ... votre tâche d'automatisation ...
    Get-AzStorageBlob -Container "logs" -Context $ctx |
        Where-Object { $_.LastModified -lt (Get-Date).AddDays(-30) } |
        Remove-AzStorageBlob

    Invoke-RestMethod $PingUrl -TimeoutSec 10          # succès
}
catch {
    Invoke-RestMethod "$PingUrl/fail" -TimeoutSec 10   # échec
    throw
}

Astuce : stockez l'URL de ping dans une ressource Automation Variable (Get-AutomationVariable -Name 'MortemainPingUrl') plutôt que de la coder en dur, pour que tous les runbooks du compte puissent la réutiliser ou la modifier sans toucher au code.

3. Planifiez le runbook

Attachez une planification Azure Automation au runbook comme d'habitude (Runbook → Schedules → Add a schedule), en respectant la cadence définie sur le check Mortemain. Le check-in fait partie du script lui-même, il se déclenche donc de la même façon que l'exécution ait été lancée par sa planification, un webhook, ou un démarrage manuel.

Exécution sur un Hybrid Runbook Worker plutôt que dans le sandbox Azure ? Vérifiez que le réseau du worker autorise le HTTPS sortant vers ping.mortemain.com, car ce sont les règles de sortie du worker qui s'appliquent, pas celles du sandbox cloud.

4. Optionnel : suivre la durée d'exécution

Pinguez /start juste avant que le vrai travail commence, et Mortemain rapporte la durée réelle d'exécution en plus du statut actif/en panne, utile pour repérer un runbook qui finit toujours par se terminer, mais de plus en plus lentement :

 CleanupOldBlobs.ps1
Invoke-RestMethod "$PingUrl/start" -TimeoutSec 10   # démarré

# ... votre tâche d'automatisation ...

Testez

Ouvrez le runbook et utilisez Start (ou le panneau de test) pour le lancer à la main. Le check devrait passer actif quelques secondes après la fin de l'exécution. Cassez ensuite temporairement quelque chose, un mauvais nom de groupe de ressources fonctionne bien, et relancez : l'alerte de panne devrait arriver immédiatement, sans attendre l'expiration de la fenêtre de grâce du planning.