Monitor

Le Monitor est une sonde de surveillance distribuee qui execute des verifications, collecte des donnees de performance et transmet les resultats. Deployez plusieurs instances a travers votre infrastructure pour une surveillance distribuee.

Vue d’ensemble

Propriete Valeur
Nom du service MugnsoftMonitor
Port par defaut 8051
Fichier de configuration monitor.json
Version v4.0.0
Stockage magasin cle-valeur integre (une base de donnees par type de moniteur)

Gestion du service

Commandes CLI

# Install as service and register with the Webserver
monitor install <webserver_ip>:<port>

# Re-register with the Webserver (e.g., after IP change)
monitor register <webserver_ip>:<port>

# Migrate to a new Webserver (regenerates the certificate, re-registers)
monitor migrate <webserver_ip>:<port> <jwt_token>

# Start / Stop / Restart the service
monitor start
monitor stop
monitor restart

# Run in foreground (Docker or debugging)
monitor run

# Remove the service
monitor uninstall

# Display help
monitor help

Lors de l'install, le Monitor :

  1. Cree l’arborescence des repertoires
  2. Genere une paire de cles RSA et des certificats TLS
  3. Envoie une demande d’auto-enregistrement au Webserver
  4. Televerse son certificat TLS pour la verification mTLS

Configuration

Le fichier monitor.json se trouve dans le meme repertoire que l’executable :

{
  "name": "probe1",
  "port": "8051",
  "webserver": "192.168.1.100:8050",
  "integratorEndPoint": "",
  "location": "Paris",
  "description": "Production monitoring probe",
  "logLevel": "info",
  "concurrencyLimit": "100",
  "dataRetention": "336",
  "backupInterval": "24",
  "nbDaysBackup": "336",
  "autoThreshold": "true"
}

Parametres principaux

Champ Description Valeur par defaut
name Identifiant unique de la sonde obligatoire
port Port d’ecoute de l’API "8051"
webserver IP:port du Webserver pour l’enregistrement obligatoire
integratorEndPoint IP:port optionnel de l’Integrator pour le transfert de donnees (vide)
location Label de localisation geographique (vide)
description Description de la sonde (vide)
logLevel Niveau de log : debug, info, warn, error "info"
concurrencyLimit Nombre maximal d’executions simultanees de moniteurs "100"
dataRetention Duree de retention des donnees de surveillance en heures "336" (14 jours)
purgeStatusChangeDataNb Nombre max d’enregistrements de changement de statut conserves par moniteur "250"
backupInterval Intervalle en heures entre les sauvegardes automatiques du magasin KV "24"
nbDaysBackup Duree de conservation des fichiers de sauvegarde en heures "336"

Configuration du navigateur (pour les moniteurs Web UI / EUM)

Champ Description
chromeBinPath Chemin vers l’executable Chrome
firefoxBinPath Chemin vers l’executable Firefox
edgeBinPath Chemin vers l’executable Edge
chromeVersion Version de Chrome (auto-detectee si vide)
firefoxVersion Version de Firefox (auto-detectee si vide)
edgeVersion Version d’Edge (auto-detectee si vide)

Seuils automatiques

Le Monitor peut calculer automatiquement les seuils de performance a partir des donnees historiques en utilisant une analyse statistique (multiplicateurs d’ecart-type) :

Champ Description Valeur par defaut
autoThreshold Activer les seuils automatiques "true"
autoThresholdRange Heures de donnees historiques : 24/168/336/672/1344 (1j–56j) "24"
autoThreshCri Multiplicateur d’ecart-type pour Critique "8"
autoThreshMaj Multiplicateur d’ecart-type pour Majeur "6"
autoThreshMin Multiplicateur d’ecart-type pour Mineur "4"
autoThreshTimeout Multiplicateur d’ecart-type pour le delai d’expiration d’execution (timeout = moyenne + mult * ecart-type) "10"
autoTransThreshold Seuils automatiques par etape de transaction "false"

Une tache nocturne (02h00) recalcule les seuils via moyenne + (multiplicateur * ecart-type) sur les executions reussies des moniteurs actives uniquement. Les moniteurs Ping recoivent aussi des seuils de gigue (jitterThreshCri/Maj/Min). Voir Configuration du Monitor → Calcul automatique des seuils pour la formule complete et les conseils de reglage.

Integration Vault

Champ Description
vaultType Fournisseur de coffre-fort : hashicorp, azure ou cyberark
hashiCorpVaultUrl URL du HashiCorp Vault
hashiCorpVaultToken Jeton d’acces HashiCorp Vault
azureKVUrl URL d’Azure Key Vault
cyberarkConjurUrl URL de CyberArk Conjur

Rotation des journaux

Champ Description Valeur par defaut
maxBackups Nombre de fichiers journaux en rotation a conserver "5"
maxSize Taille maximale du fichier journal en Mo "10"
maxAge Age maximal du fichier journal en jours "28"
logCompress Compresser les journaux en rotation "true"

Arborescence des repertoires

<install_dir>/
├── monitor(.exe)            # Executable
├── monitor.json             # Configuration du service
├── config/
│   ├── sec/                 # Cles RSA pour JWT
│   └── ssl/                 # Certificats TLS pour mTLS
├── data/                    # Fichiers de definition des moniteurs (JSON)
├── dbs/                     # Bases de donnees cle-valeur integrees (une par type)
│   ├── exec.db              # Moniteurs Web UI / EUM
│   ├── url.db               # Moniteurs HTTP/HTTPS URL
│   ├── api.db               # Moniteurs REST API
│   ├── tcp.db               # Moniteurs TCP port
│   ├── udp.db               # Moniteurs UDP port
│   ├── ping.db              # Moniteurs ICMP ping
│   ├── nslookup.db          # Moniteurs DNS lookup
│   ├── db.db                # Moniteurs de requetes base de donnees
│   ├── sys.db               # Moniteurs de metriques systeme
│   ├── snmp.db              # Moniteurs SNMP
│   ├── wmi.db               # Moniteurs WMI (WQL)
│   ├── websocket.db         # Moniteurs WebSocket (ws/wss)
│   ├── chart.db             # Donnees de graphiques/performance
│   ├── monitor.db           # Donnees generales des moniteurs
│   ├── metrics.db           # Metriques propres a la sonde (CPU, memoire)
│   ├── host.db              # Inventaire des hotes
│   ├── device.db            # Inventaire des equipements
│   └── backup/              # Sauvegardes automatisees
├── log/                     # Fichiers journaux avec rotation
├── scripts/                 # Scripts personnalises pour les moniteurs
├── actions/                 # Scripts d'actions (notifications, remediation)
├── exec/                    # Executables specifiques a la plateforme (webdrivers)
└── export/                  # Exports de donnees

Types de moniteurs

Cette section est la reference au niveau du composant (stockage, capacites). Pour un catalogue oriente usage — ce que chaque type prouve, les champs qu’il demande et la facon dont son resultat est evalue — voir Types de moniteurs. Tous les types ci-dessous, sauf EUM et Systeme, peuvent etre executes en direct depuis leur formulaire avant enregistrement ; voir Tester un moniteur.

1. Web UI / EUM (End User Monitoring)

Base de donnees : exec.db

Execute des parcours utilisateur multi-etapes a l’aide de Selenium WebDriver. Supporte les navigateurs Chrome, Firefox et Edge.

Capacites :

  • Enregistrement de transactions multi-etapes (via MNS IDE ou Selenium IDE)
  • Capture d’ecran a chaque etape
  • Enregistrement video de l’execution complete
  • Capture de fichiers HAR (HTTP Archive)
  • Chronometrage individuel des transactions avec seuils
  • Support TOTP (Time-based One-Time Password) pour l’authentification a deux facteurs (RFC 6238 — 6 chiffres / 30 s / SHA-1)
  • Configuration de proxy
  • Verification de similarite visuelle

Voir la page dediee Moniteur EUM pour la specification complete (compatibilite TOTP/Okta, integration des coffres-forts, fonctions de script).

Fonctions de script MNS IDE :

mnsStartTransaction("Login Page", 30, 5000, 3000); // name, timeout, critical_ms, major_ms
driver.findElement(By.id("username")).sendKeys("user");
driver.findElement(By.id("password")).sendKeys("pass");
driver.findElement(By.id("submit")).click();

2. HTTP/HTTPS URL

Base de donnees : url.db

Verifications HTTP GET simples avec des metriques de temps detaillees.

Metriques collectees :

  • Temps de resolution DNS
  • Temps de connexion TCP
  • Temps de negociation TLS (avec detection de la version TLS)
  • Temps de traitement serveur
  • Temps de transfert du contenu
  • Temps de reponse total
  • Code de statut HTTP
  • Taille du contenu
  • Date d’expiration du certificat SSL

Fonctionnalites supplementaires :

  • Evaluation du corps de la reponse par groupes de motifs nommes (correspondance de contenu ou extraction de valeur avec seuils)
  • Controle de la taille de page face a une taille de corps attendue
  • Validation du code de statut
  • Verification et alerte d’expiration du certificat
  • Auth Basic, certificats client, et support proxy (HTTP/HTTPS, authentifie, ou URL PAC)

3. REST API

Base de donnees : api.db

Surveillance complete d’endpoints API avec methodes HTTP, en-tetes et corps de requete personnalises.

Methodes supportees : GET, POST, PUT, DELETE

Fonctionnalites :

  • En-tetes de requete personnalises
  • Configuration du corps de la requete
  • Evaluation du corps de la reponse par groupes de motifs nommes — chacun extrait une valeur et l’evalue face a ses propres seuils Mineur / Majeur / Critique
  • Auth Basic et certificats client pour les endpoints en TLS mutuel
  • Mesure du temps de reponse
  • Validation du code de statut

4. Port TCP / UDP

Bases de donnees : tcp.db, udp.db

Verifications de connectivite sur les ports TCP ou UDP.

Metriques :

  • Succes/echec de la connexion
  • Temps de connexion
  • Resolution de l’IP de destination

5. ICMP Ping

Base de donnees : ping.db

Requetes ICMP Echo Request/Reply pour tester l’accessibilite reseau.

Metriques :

  • Latence minimale / maximale / moyenne
  • Gigue (ecart-type)
  • Paquets envoyes / recus / perdus
  • Taux de perte de paquets
Remarque : Sous Linux, le ping ICMP necessite la capacite CAP_NET_RAW ou les privileges root.

6. DNS Lookup (Nslookup)

Base de donnees : nslookup.db

Surveillance de la resolution DNS.

Metriques :

  • Temps de resolution DNS
  • Validation de la reponse

7. SNMP

Base de donnees : snmp.db

Interrogation SNMP pour la surveillance des equipements reseau.

Fonctionnalites :

  • Support SNMP v1/v2c/v3
  • Requetes OID avec expressions MIB
  • Calculs de delta entre les interrogations
  • Evaluation d’expressions sur les valeurs collectees

8. WMI

Base de donnees : wmi.db

Interrogation par requetes WQL sur les hotes Windows, dans un espace de noms (par defaut root\CIMV2).

Fonctionnalites :

  • Valeur evaluee par operateur (number >, number <) ou expression reguliere
  • Configurations d’identifiants et secrets issus d’un coffre-fort
  • Verification en direct des requetes, explorateur de classes et modeles de requetes reutilisables sur les equipements WMI

9. Database Query

Base de donnees : db.db

Surveillance de la connectivite, de l’execution de requetes et du jeu de resultats sur les bases de donnees.

Bases de donnees supportees :

  • MySQL
  • Microsoft SQL Server (MSSQL)
  • PostgreSQL
  • Oracle

Metriques :

  • Temps de connexion
  • Temps d’execution de la requete
  • Temps cote moteur (temps de verrou, temps CPU / worker, temps d’attente — selon le moteur)
  • Evaluation du jeu de resultats par controles de colonnes : prelever une valeur par nom de colonne, par position (#2) ou le nombre de lignes (#rows), puis l’evaluer avec un operateur et des seuils Mineur / Majeur / Critique

Une requete sans ligne, une cellule NULL ou une ligne au-dela de la fin du resultat donnent un verdict CRITIQUE ; un selecteur de colonne introuvable ou ambigu donne une ERREUR (le controle est mal configure). Les jeux de resultats sont ramenes a une projection plafonnee — 64 colonnes, 512 caracteres par cellule, 100 lignes conservees lors d’une execution planifiee — afin qu’un SELECT * large ne puisse pas noyer la sonde.

10. System Metrics

Base de donnees : sys.db

Auto-surveillance de l’hote de la sonde.

Metriques :

  • Pourcentage d’utilisation CPU
  • Utilisation memoire
  • Utilisation disque

11. WebSocket

Base de donnees : websocket.db

Surveille les points de terminaison ws:// et wss://, du simple controle de connectivite jusqu’a une session temps reel complete : authentification, envoi de messages, validation des reponses et mesure de la latence ping/pong.

Chaque execution planifiee constitue une session complete : la sonde ouvre la connexion, effectue son travail puis la ferme. Les compteurs tels que le nombre de reconnexions, la duree de connexion ou le debit de messages decrivent donc cette seule fenetre de controle, et non une disponibilite depuis le demarrage.

Authentification : aucune, Basic, jeton Bearer, cle API en en-tete, en-tetes personnalises, cookies.

Options de connexion : verification TLS, certificat client, surcharge SNI, proxy, sous-protocoles (Sec-WebSocket-Protocol), compression permessage-deflate et suivi des redirections pendant la negociation HTTP.

Les messages sortants peuvent etre envoyes des la connexion, apres N secondes ou periodiquement, en texte brut, JSON ou binaire — typiquement pour s’authentifier, s’abonner a un canal ou demander un battement de coeur.

Les regles de validation s’appliquent aux messages entrants : texte exact, contient, expression reguliere, JSON valide, ou expression JSONPath comparee avec eq / ne / contains / exists / gt / lt / regex. Chaque regle non optionnelle doit etre satisfaite avant l’echeance.

Une execution est saine lorsque la connexion TCP aboutit, que la negociation TLS reussit (pour wss://), que la mise a niveau HTTP renvoie 101 Switching Protocols, que l’authentification est acceptee, que les messages attendus arrivent et que la latence ping/pong reste dans son seuil.

Metriques, regroupees par famille dans un panneau dedie du rapport :

Groupe Metriques
Connexion Resolution DNS, connexion TCP, negociation TLS, mise a niveau HTTP, temps total d’etablissement
Latence Latence ping/pong — moyenne, min, max, P95, P99
Trafic Octets envoyes/recus, messages envoyes/recus, debit de messages entrants et sortants
Disponibilite Connexions reussies et echouees, echecs de mise a niveau, echecs d’authentification, duree de connexion, deconnexions inattendues, nombre de reconnexions
Erreurs Delai depasse, connexion refusee, erreurs TLS, certificat invalide, mise a niveau invalide, trame invalide, erreurs de protocole, code et motif de fermeture

Les alertes peuvent etre declenchees sur un echec de connexion, un echec de mise a niveau, un echec d’authentification, un message attendu non recu dans les temps, une latence ping/pong superieure au seuil, un nombre de reconnexions superieur au seuil, une fermeture inattendue, une validation JSON en echec, ou un debit de messages entrants hors de ses bornes.

Note : lorsqu’un proxy est configure, la negociation TLS est realisee par le tunnel du proxy ; sa duree est donc comptabilisee dans le temps de mise a niveau HTTP plutot que mesuree separement.

Planification

Chaque type de moniteur dispose de son propre planificateur cron independant (utilisant robfig/cron/v3). Cette isolation garantit qu’un type de moniteur lent ne peut pas bloquer les autres types.

Planifications predefinies

Label Expression cron Description
1MIN * * * * * Toutes les minutes
5MIN */5 * * * * Toutes les 5 minutes
10MIN */10 * * * * Toutes les 10 minutes
20MIN */20 * * * * Toutes les 20 minutes
30MIN */30 * * * * Toutes les 30 minutes
60MIN 0 * * * * Toutes les heures
Personnalise Toute expression cron valide Planification personnalisee

Controle de la concurrence

Un semaphore global limite le nombre d’executions simultanees de moniteurs (configurable via concurrencyLimit, valeur par defaut : 100). Chaque execution acquiert un emplacement avant de demarrer et le libere a la fin, empechant l’epuisement des ressources sur l’hote de la sonde.


Alertes

Le Monitor peut envoyer des alertes directement sans avoir besoin d’un Integrator.

Canaux de notification

Canal Champs de configuration
Email (SMTP) smtpServerName, smtpPort, smtpUsername, smtpPwd, smtpTLS
Slack slackToken, slackChannel
Microsoft Teams teamsWebhook
PagerDuty pagerDutyAPIKey
Script personnalise scriptAction, scriptActionT (type de script)

Declencheurs d’alertes

Parametre Description
notifyStatus Severite minimale pour declencher une alerte (MINOR, MAJOR, CRITICAL)
notifyAfter Nombre d’echecs consecutifs avant la premiere alerte
notifyFor Duree de maintien des alertes apres le declenchement initial

Actions personnalisees

Les scripts d’action peuvent etre places dans le repertoire actions/ et configures par moniteur. Ils s’executent automatiquement en cas d’echec ou de changement de statut avec un delai d’expiration configurable.


Endpoints de l’API REST

Authentification

Methode Chemin Description
POST /login Connexion JWT (utilisateur)
POST /loginComponent Connexion composant (jeton de 60 jours)
GET /refresh_token Rafraichir le jeton JWT

Gestion des moniteurs

Methode Chemin Description
GET /monitors Lister tous les moniteurs
POST /monitor/create Creer un nouveau moniteur EUM
POST /monitor/update/:oldbucket/:oldkey Mettre a jour un moniteur
GET /monitor/run/:title/:show Executer un moniteur a la demande
POST /monitor/kill/:title Arreter un moniteur en cours d’execution

Recuperation des donnees

Methode Chemin Description
GET /v1/db/:dbname/bucket/:bucket/key/:key Obtenir un resultat specifique
POST /monitor/timelineGraph/:key/:startTime/:endTime Donnees de chronologie historique
GET /monitor/monitorsStatus Statut de tous les moniteurs

Creation par type

Methode Chemin Type de moniteur
POST /url/create Moniteur URL
POST /api/create Moniteur API
POST /tcp/create Moniteur TCP
POST /udp/create Moniteur UDP
POST /ping/create Moniteur Ping
POST /nslookup/create Moniteur DNS
POST /db/create Moniteur base de donnees
POST /snmp/create Moniteur SNMP
POST /wmi/create Moniteur WMI
POST /sys/create Moniteur systeme
POST /websocket/create Moniteur WebSocket

Test en direct

Methode Chemin Description
POST /checkPatternMatching/:type Executer un moniteur une fois, maintenant, depuis cette sonde et renvoyer un rapport structure

Le Webserver appelle cet endpoint quand un utilisateur clique sur Test dans un formulaire de moniteur. :type est le type de moniteur (url, api, tcp, udp, ping, nslookup, db, snmp, wmi), le corps porte la definition du moniteur telle qu’elle est dans le formulaire, et wantJSON: "true" selectionne le rapport structure (kind: "monitorTestResult") plutot que la reponse texte d’une ligne heritee. Rien n’est stocke : l’execution n’ecrit aucun historique, ne change aucun statut et ne declenche aucune alerte. Voir Tester un moniteur.

Configuration

Methode Chemin Description
GET /setting Obtenir les parametres actuels
POST /updateSetting Mettre a jour les parametres
GET /reloadCertificates Recharger les certificats TLS
POST /checkConnectIntegrators Tester la connectivite avec l’Integrator

Stockage des donnees

Chaque type de moniteur stocke ses resultats dans sa propre base de donnees cle-valeur integree avec plusieurs buckets par moniteur :

Bucket Contenu
STATUS Statut actuel (OK/MINOR/MAJOR/CRITICAL/ERROR/DOWN)
STATUS_CRON Horodatage de la derniere execution
STATUS_PERF Metriques de performance
STATUS_TRANS Donnees de chronometrage des transactions
STATUS_CHANGE Historique des changements de statut
STATUS_ERROR Messages d’erreur
STATUS_HISTALL Donnees historiques completes
STATUS_PATTERN Resultats de correspondance de motifs
STATUS_TRANSPATH Chemins d’execution des transactions

Tous les horodatages sont stockes en millisecondes Unix (epoch en ms).

Les donnees sont automatiquement purgees en fonction du parametre dataRetention (valeur par defaut : 336 heures / 14 jours).

Voir aussi

Traductions