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
│   ├── 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
│   ├── 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

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 :

  • Correspondance de motifs dans le corps de la reponse
  • Validation du code de statut
  • Verification et alerte d’expiration du certificat

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
  • Correspondance de motifs dans le corps de la reponse
  • Mesure du temps de reponse
  • Validation du code de statut

4. TCP Port

Base de donnees : tcp.db

Verifications de connectivite sur les ports TCP.

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. Database Query

Base de donnees : db.db

Surveillance de la connectivite et de l’execution de requetes sur les bases de donnees.

Bases de donnees supportees :

  • MySQL
  • Microsoft SQL Server (MSSQL)

Metriques :

  • Temps d’execution de la requete
  • Validation des resultats
  • Temps de connexion

9. System Metrics

Base de donnees : sys.db

Auto-surveillance de l’hote de la sonde.

Metriques :

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

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 /ping/create Moniteur Ping
POST /nslookup/create Moniteur DNS
POST /db/create Moniteur base de donnees
POST /snmp/create Moniteur SNMP
POST /sys/create Moniteur systeme

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