Guide · Bases de données
Surveiller un job SQL Server Agent
Les notifications d'opérateur Agent vous préviennent quand une étape de job lève une erreur. Elles restent muettes si le service Agent est arrêté, si la machine ne redémarre jamais après un reboot, ou si le job est tout simplement sauté. Une étape de check-in comble ce trou : pas de ping, pas d'hypothèse que le job a tourné.
1. Créez un check
Créez un check dans Mortemain correspondant au planning du job et à une fenêtre de grâce adaptée, puis copiez son URL de ping.
https://ping.mortemain.com/your-check-uuid
2. Ajoutez une étape de check-in au job
Ouvrez la page Steps du job et ajoutez une nouvelle étape après la dernière étape réelle. Réglez son type sur PowerShell et donnez-lui cette commande :
Invoke-RestMethod "https://ping.mortemain.com/your-check-uuid" -TimeoutSec 10
Aucun module à installer : Invoke-RestMethod est fourni avec le PowerShell qu'Agent utilise déjà pour le type d'étape « PowerShell ». Si vous préférez rester en étape Operating system (CmdExec), curl.exe est livré avec Windows Server 2019 et versions ultérieures :
curl.exe -fsS --max-time 10 "https://ping.mortemain.com/your-check-uuid" -o NUL
3. Alertez immédiatement en cas d'échec
Par défaut, quand une étape échoue, l'action en cas d'échec d'Agent est Quit the job reporting failure : votre étape de succès à la fin ne s'exécute donc jamais, et Mortemain ne le remarquerait qu'une fois toute la fenêtre de grâce expirée. Pour être alerté au moment même où le job casse, ajoutez une étape dédiée supplémentaire et redirigez chaque étape réelle vers elle.
Ajoutez une dernière étape, par exemple Ping Fail (PowerShell) :
Invoke-RestMethod "https://ping.mortemain.com/your-check-uuid/fail" -TimeoutSec 10
Ensuite, sur la page Advanced de chaque étape réelle, remplacez On failure action par défaut par Go to step: Ping Fail. Le job finit toujours par signaler un échec une fois que Ping Fail s'arrête, mais pas avant que Mortemain en ait été informé.
Cela fonctionne de la même façon que le job ait été lancé par son planning, par une alerte, ou par un appel sp_start_job ponctuel : Agent exécute les étapes de manière identique dans tous les cas, aucun traitement particulier n'est nécessaire selon la façon dont le job a été déclenché.
4. Optionnel : suivre la durée du run
Ajoutez une première étape, Ping Start (PowerShell), avant tout travail réel, pour que Mortemain puisse chronométrer le run :
Invoke-RestMethod "https://ping.mortemain.com/your-check-uuid/start" -TimeoutSec 10
Avec un ping /start en place, Mortemain rapporte la durée réelle du run en plus du statut actif/en panne, utile pour repérer un job qui finit toujours, mais un peu plus lentement chaque semaine.
Testez
Clic droit sur le job puis Start Job at Step. Le check devrait passer actif quelques secondes après l'exécution de la dernière étape. Cassez ensuite temporairement une étape (renommez une table qu'elle interroge, par exemple) et relancez le job : l'alerte de panne devrait arriver immédiatement plutôt que d'attendre l'expiration de la fenêtre de grâce du planning, confirmant que Ping Fail est bien branché sur chaque étape.