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 :
- Cree l’arborescence des repertoires
- Genere une paire de cles RSA et des certificats TLS
- Envoie une demande d’auto-enregistrement au Webserver
- 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
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
- Configuration du Monitor – reference complete des parametres
- API HTTP du Monitor – documentation complete de l’API
- Operations de surveillance – guide de l’interface pour la gestion des moniteurs
- Vue d’ensemble de la plateforme – comment le Monitor s’integre dans l’architecture
- Exception lors de l’execution d’un moniteur – resolution des erreurs de moniteur