Script personnalise
Le canal Custom script execute un programme a vous sur la machine de l’Integrator quand une alerte se declenche : redemarrer un service, ouvrir un ticket dans un outil que Mugnsoft ne gere pas, appeler une API interne.
Comment il s’execute
| Ou | Sur la machine de l’Integrator, pas sur la sonde ni sur l’hote surveille. |
| Quel fichier | <dossier d'installation de l'Integrator>/scripts/<nom>. Seul ce dossier est autorise. |
| Avec quel compte | Le compte de service de l’Integrator. |
| Comment | Lance directement, sans shell, avec les arguments que vous indiquez et l’alerte dans des variables d’environnement MNS_*. |
| Delai | Timeout (s), 30 par defaut (aussi quand le champ est vide, nul ou non numerique). Au-dela, le script et ses processus enfants sont tues. |
| Resultat | Code de sortie, sortie standard et erreur sont ecrits dans le journal de l’Integrator (niveau debug/trace). Ils ne changent rien d’autre. |
| Nouvelle tentative | Aucune. Une execution en echec n’est pas retentee, contrairement aux autres canaux. |
Le champ Script
Le champ accepte un nom de fichier, eventuellement suivi d’arguments :
restart_shop.bat
notify.sh $status "$displayName"
open-ticket.ps1 -Severity $status -Monitor "$displayName"
- Le nom de fichier : lettres, chiffres,
_et-, au plus une extension, ni dossier ni chemin. Tout le reste est refuse et journaliseinvalid script name. - Les arguments sont separes par des blancs ;
"..."ou'...'gardent ensemble une valeur avec des espaces. - Ces variables de substitution sont remplacees avant le lancement du script :
| Variable | Valeur |
|---|---|
$displayName |
Le nom du moniteur tel qu’affiche dans l’interface |
$name |
Le type et la cle du moniteur, p. ex. url web-shop_probe-paris (il contient un espace : mettez-le entre guillemets) |
$status |
Le statut qui a declenche l’alerte (CRITICAL, OK…) |
$probe |
La sonde qui a execute le controle |
$location |
La localisation de la sonde |
$thresholdCritical, $thresholdMajor, $thresholdMinor, $tags |
Les seuils et tags du moniteur (reglees sur le moniteur lui-meme ; non disponibles pour le script par defaut de l’Integrator) |
$displayName. Sous Windows, un script .bat ou .cmd est refuse quand un argument contient un caractere interprete par cmd.exe (& | < > ^ % ! ") : cela bloque l’injection de commandes via un nom de moniteur.
Ce que recoit le script
En plus de ses arguments, le script recoit l’alerte en variables d’environnement : meme un script lance sans argument sait quel moniteur l’a declenche.
| Variable | Exemple |
|---|---|
MNS_MONITOR |
web-shop |
MNS_MONITOR_KEY |
url_web-shop_probe-paris |
MNS_TYPE |
url |
MNS_STATUS |
CRITICAL |
MNS_MESSAGE |
Execution time: 5.8 s |
MNS_PROBE / MNS_LOCATION |
probe-paris / Paris DC |
MNS_TARGET |
shop.example.com:443 |
MNS_TRIGGER |
on_fail, on_change, ou test (bouton ⚡) |
MNS_LINK |
Lien vers le moniteur dans le Webserver |
MNS_CHECKED_AT |
2026-10-16T10:02:00+02:00 |
Le reste de l’environnement est celui de l’Integrator. Une variable est vide quand l’information est inconnue.
Etape 1 : ecrire le script
Windows - un fichier .bat, .cmd, .exe ou .ps1. Un .ps1 est lance avec powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File.
# scripts\restart_shop.ps1 - redemarre le pool IIS de la boutique quand elle est en panne
if ($env:MNS_STATUS -ne "OK") {
Import-Module WebAdministration
Restart-WebAppPool -Name "shop"
}
Linux - tout executable avec une ligne shebang. Un fichier sans le bit d’execution est lance via /bin/sh.
#!/bin/sh
# scripts/notify.sh - transmet l'alerte a une API interne
curl -s -X POST https://ops.example.com/alerts \
-d "monitor=$MNS_MONITOR" -d "status=$MNS_STATUS" -d "trigger=$MNS_TRIGGER"
Gardez-le court et idempotent : il peut s’executer a chaque controle (voir plus bas), et doit se terminer avant le delai.
Etape 2 : configurer Mugnsoft
Par defaut pour tous les moniteurs d’un Integrator - Integrator → General → Notifications → Custom script : activez On fail et/ou On change, et renseignez Default script et Timeout (s).
Par moniteur - moniteur → Actions → carte Custom script : activez le ou les declencheurs, et renseignez Script et Timeout (s), ou laissez Script vide pour lancer le script par defaut de l’Integrator (avec le delai du defaut).
Enregistrez les deux formulaires avec l’icone disquette.
A quelle frequence il s’execute
Une fois par alerte, comme tout autre canal :
- On fail avec for 0 checks : a chaque controle tant que le moniteur est en echec. Pour un script de remediation, reglez la regle sur for 1 check pour qu’il ne s’execute qu’une fois par episode d’echec.
- On change : a chaque changement de statut - y compris le retour a OK (
MNS_STATUS=OK). Testez le statut dans le script s’il ne doit agir que sur les echecs.
Voir ON FAIL et ON CHANGE.
Tester
- Depuis Mugnsoft : dans le bloc Notifications de l’Integrator, cliquez sur ⚡ sur la carte Custom script. L’Integrator lance le script indique dans le champ (ou son defaut enregistre) avec
MNS_TRIGGER=testetMNS_STATUS=TEST, et renvoie le code de sortie. Le script s’execute reellement : faites-lui ignorerMNS_TRIGGER=tests’il ne doit pas agir. - A la main : executez-le sur la machine de l’Integrator, sous le compte de service de l’Integrator, depuis le dossier
scripts, avec les variables ci-dessus definies. - De bout en bout : passez le niveau de journal de l’Integrator en debug, activez le script pour le moniteur de test, et cherchez cette ligne dans
log/integrator.log:
handleNotifications - [url_notif-test_probe-paris] - actionOnSC outCmd: ..., errCmd: ..., exitCode: 0
Depannage
| Ligne de journal ou symptome | Cause et action |
|---|---|
invalid script name |
Le premier mot est un chemin, ou contient deux points. Saisissez le nom du fichier seul, puis les arguments. |
script not found |
Le fichier n’est pas dans le dossier scripts de l’Integrator (verifiez la machine de l’Integrator, pas celle du Webserver). |
holds a character cmd.exe interprets |
Un argument d’un .bat/.cmd contient `& |
Failed Start |
Linux : shebang errone. Windows : un type de fichier qui ne peut pas etre lance (utilisez .bat, .cmd, .exe ou .ps1). |
timeout occured et code de sortie 99 |
Le script a depasse Timeout (s) et a ete tue. Augmentez le delai ou lancez le travail long en arriere-plan. |
| Il fonctionne a la main, pas depuis Mugnsoft | Compte ou environnement different : le compte de service n’a pas un droit, ou le PATH differe. Utilisez des chemins complets dans le script. |
| Rien dans le journal | Le declencheur est inactif sur le moniteur ou sur l’Integrator, ou la regle ON FAIL n’est pas encore satisfaite. |
MNS_*, la prise en charge des .ps1, le delai de repli de 30 secondes et le test ⚡ demandent Mugnsoft 4.3.0 ou ulterieur sur l’Integrator. Auparavant, une action avec des arguments etait refusee par l’Integrator et le script ne recevait rien.
Plus d’elements dans Depannage.