Webserver
Le Webserver est le centre de gestion principal de la plateforme Mugnsoft. Il fournit l’interface Web, l’API REST, l’orchestration des composants et la visualisation des donnees.
Vue d’ensemble
| Propriete | Valeur |
|---|---|
| Nom du service | MugnsoftWebserver |
| Port API par defaut | 8050 |
| Port interface Web par defaut | 9090 |
| Fichier de configuration | webserver.json |
| Version | v4.0.0 |
Le Webserver execute deux serveurs HTTP simultanement :
- Serveur API (port 8050) – API REST avec documentation Swagger pour l’acces programmatique
- Serveur Web (port 9090) – l’interface Web pour la gestion via navigateur
Gestion du service
Le Webserver s’execute en tant que service systeme natif sur Windows et Linux.
Commandes CLI
# Installer en tant que service systeme
webserver install
# Demarrer / Arreter / Redemarrer le service
webserver start
webserver stop
webserver restart
# Executer en avant-plan (pour Docker ou le debogage)
webserver run
# Supprimer le service et nettoyer les repertoires
webserver uninstall
# Afficher l'aide
webserver help
Fichier de configuration
Le fichier webserver.json doit se trouver dans le meme repertoire que l’executable :
{
"HTTPS": "true",
"PortAPI": "8050",
"PortWEB": "9090",
"RunUser": "mugnsoft"
}
| Champ | Description | Valeur par defaut |
|---|---|---|
HTTPS |
Activer HTTPS pour les deux serveurs | "true" |
PortAPI |
Port du serveur API REST | "8050" |
PortWEB |
Port du serveur de l’interface Web | "9090" |
RunUser |
Utilisateur systeme pour executer le service | (vide) |
Arborescence des repertoires
Apres l’installation, le Webserver cree l’arborescence suivante :
<install_dir>/
├── webserver(.exe) # Executable
├── webserver.json # Configuration du service
├── license_MNS.dat # Fichier de licence
├── config/
│ ├── sec/ # Paire de cles RSA pour la signature JWT
│ │ ├── mugnsoft_webserver.key
│ │ └── mugnsoft_webserver.key.pub
│ └── ssl/ # Certificats TLS
│ ├── certificates/
│ └── private/
├── dbs/ # Bases de donnees cle-valeur integrees
│ ├── webserver.db # Magasin KV principal (utilisateurs, parametres, moniteurs)
│ └── backup/ # Sauvegardes automatisees
├── log/ # Fichiers journaux avec rotation
├── data/ # Fichiers de donnees statiques
├── discovery/ # Donnees de l'agent de decouverte
│ ├── level1/
│ ├── level2/
│ └── alerts/
├── export/ # Exports de donnees
├── report/ # Rapports generes
└── web/ # Ressources frontend embarquees
Flux de demarrage
- Lire
webserver.jsondepuis le repertoire de l’executable - Configurer le mode HTTPS et les ports
- Creer/initialiser les repertoires et bases de donnees requis (
initstart) - Valider le fichier de licence
- Demarrer les taches cron en arriere-plan :
gocronTask()– rapports programmes, periodes de maintenance, operations de surveillancegocronTaskBGTask()– rafraichissement des jetons (toutes les 14 min), sauvegarde du magasin KV (toutes les 1h)resyncServersToken()– synchronisation des jetons JWT des composants
- Lancer le serveur API sur le port 8050
- Lancer le serveur de l’interface Web sur le port 9090
Si la licence est invalide, le service s’arrete avec une erreur fatale.
Fonctionnalites principales
Gestion des composants
Le Webserver gere tous les composants distants via l’auto-enregistrement :
- Sondes Monitor – s’enregistrent via
POST /selfRegister, echangent des certificats - Integrateurs – s’enregistrent de maniere similaire, recoivent la configuration de transfert des donnees de surveillance
- Agents de decouverte – s’enregistrent et remontent les metriques systeme/processus
Une fois enregistre, le Webserver peut :
- Pousser des mises a jour de configuration vers n’importe quel composant
- Recuperer les donnees de surveillance et l’etat des sondes Monitor
- Declencher l’execution a la demande d’un moniteur
- Gerer le cycle de vie des composants (sauvegarde, restauration, reinitialisation des magasins KV)
- Recharger les certificats TLS sans redemarrage
Types de moniteurs geres
Le Webserver peut creer et gerer tous les types de moniteurs supportes par la plateforme :
| Type | Description | Metriques principales |
|---|---|---|
| EUM/Web UI | Scenarios d’automatisation navigateur avec Selenium | Temps de transaction, captures d’ecran, fichiers HAR |
| HTTP/HTTPS URL | Verifications simples d’endpoints URL | Temps de reponse, code de statut, expiration du certificat SSL |
| REST API | Surveillance d’endpoints API avec methodes/en-tetes personnalises | Temps de reponse, validation du corps, correspondance de motifs |
| TCP Port | Verifications de connectivite TCP | Temps de connexion |
| ICMP Ping | Accessibilite reseau | Latence, gigue, perte de paquets |
| DNS Lookup | Surveillance de la resolution DNS | Temps de resolution, validation de la reponse |
| SNMP | Interrogation d’OID SNMP | Valeurs OID, evaluation d’expressions |
| Database Query | Execution de requetes MySQL/MSSQL | Temps de requete, validation des resultats |
| System Metrics | Auto-surveillance de la sonde | CPU, memoire, utilisation disque |
Gestion des utilisateurs
Les utilisateurs sont stockes dans la base cle-valeur integree du Webserver avec des mots de passe haches via bcrypt :
| Champ | Description |
|---|---|
username |
Identifiant de connexion unique |
fullName |
Nom d’affichage |
group |
admin, user ou viewer |
accountType |
local ou ldap |
email |
Adresse e-mail pour les notifications |
tags |
Tags separes par des virgules pour le filtrage des acces |
apps |
Controle d’acces au niveau application |
enabled |
Compte active/desactive |
Tests de charge
Le Webserver peut orchestrer des tests de charge via les composants Load Tester enregistres :
- Creer et gerer des scenarios de tests de charge
- Executer des tests de charge a la demande ou selon un calendrier
- Visualiser les performances en temps reel et les graphiques de protocole
- Arreter les tests de charge en cours
Cartographie des applications
Regroupez les moniteurs, URL, API et autres verifications dans des Applications logiques :
- Definir des applications avec des noms et des tags personnalises
- Agreger le statut de tous les moniteurs d’une application
- Visualiser les dependances des applications avec des graphiques de topologie interactifs
- Partager les vues d’application via des URL publiques (
/appsview/:user)
Rapports et periodes de maintenance
- Rapports – rapports de performance programmes envoyes par e-mail ou disponibles dans l’interface Web
- Periodes de maintenance – fenetres de maintenance planifiees qui suppriment les alertes
- Les deux supportent le filtrage par tags et la planification basee sur cron
Gestion des hotes et des equipements
- Hotes – gerer les hotes surveilles avec la distribution de fichiers d’instrumentation via SSH/SFTP
- Equipements – gerer les equipements SNMP avec test d’OID et surveillance
Parametres et integrations
Configurables via la page Parametres de l’interface Web :
- SMTP – serveur de messagerie pour les rapports et les alertes
- Slack – integration de l’espace de travail Slack
- GitLab – importation de scripts de moniteurs depuis les depots GitLab
- LDAP – service d’annuaire pour l’authentification des utilisateurs
- Journalisation – niveau de log, rotation et retention
API REST
Le Webserver expose une API REST complete documentee avec Swagger. Accedez a l’interface Swagger a l’adresse :
https://<webserver>:8050/docs/index.html
Le Webserver expose plus de 100 endpoints API. Voici les principales categories.
Exemple d’authentification
# 1. Get a JWT token
TOKEN=$(curl -s -k -X POST https://localhost:8050/api/auth \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"your_password"}' \
| jq -r '.token')
# 2. Use the token for API calls
curl -k -X GET https://localhost:8050/api/users \
-H "Authorization: Bearer $TOKEN"
# 3. Refresh the token before it expires
curl -k -X GET https://localhost:8050/refresh_token \
-H "Authorization: Bearer $TOKEN"
Base de donnees (magasin cle-valeur integre)
Le Webserver utilise un seul fichier magasin cle-valeur integre (webserver.db) avec plusieurs buckets :
| Bucket | Contenu |
|---|---|
user |
Comptes utilisateurs (JSON avec mots de passe haches via bcrypt) |
setting |
Parametres de la plateforme (chiffres) |
jwt |
Jetons JWT pour les composants |
report |
Definitions de rapports |
downtime |
Definitions des periodes de maintenance |
server |
Configurations des composants enregistres |
Sauvegarde
Les sauvegardes automatisees s’executent selon un calendrier configurable (par defaut : toutes les heures). Les sauvegardes manuelles peuvent etre declenchees via l’API :
curl -k -X POST https://localhost:8050/backupDatabase \
-H "Authorization: Bearer $TOKEN"
Journalisation
Les journaux utilisent un format structure via logrus avec rotation geree par lumberjack :
| Parametre | Description | Valeur par defaut |
|---|---|---|
| Niveau de log | debug, info, warn, error |
info |
| Taille maximale du fichier | Taille maximale par fichier journal | 10 Mo |
| Nombre de sauvegardes | Nombre de fichiers en rotation a conserver | 5 |
| Age maximal | Nombre de jours de retention des anciens fichiers journaux | 28 |
| Compression | Compresser les journaux en rotation | true |
Les fichiers journaux se trouvent dans le sous-repertoire log/ de l’installation.
Voir aussi
- Configuration du Webserver – reference complete des parametres
- Webserver-Front (replique DMZ) – replique en lecture seule pour exposer les tableaux de bord aux reseaux non fiables
- API HTTP du Webserver – documentation complete de l’API
- Vue d’ensemble de la plateforme – comment le Webserver s’integre dans l’architecture
- Installation sur Windows | Installation sur Linux – guides d’installation
- Administration – gestion des utilisateurs, sauvegardes et parametres