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 journalise invalid 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)

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

  1. 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=test et MNS_STATUS=TEST, et renvoie le code de sortie. Le script s’execute reellement : faites-lui ignorer MNS_TRIGGER=test s’il ne doit pas agir.
  2. 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.
  3. 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.

Plus d’elements dans Depannage.

Traductions