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

  1. Lire webserver.json depuis le repertoire de l’executable
  2. Configurer le mode HTTPS et les ports
  3. Creer/initialiser les repertoires et bases de donnees requis (initstart)
  4. Valider le fichier de licence
  5. Demarrer les taches cron en arriere-plan :
    • gocronTask() – rapports programmes, periodes de maintenance, operations de surveillance
    • gocronTaskBGTask() – rafraichissement des jetons (toutes les 14 min), sauvegarde du magasin KV (toutes les 1h)
    • resyncServersToken() – synchronisation des jetons JWT des composants
  6. Lancer le serveur API sur le port 8050
  7. 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.

| Categorie | Description | Exemples d'endpoints | | --------------------- | ---------------------------------------- | ----------------------------------------------------------- | | **Authorization** | Gestion des jetons JWT | `POST /api/auth`, `GET /refresh_token` | | **Admin** | Administration de la plateforme | `GET /api/setting`, `PATCH /api/updateSetting` | | **Users** | Operations CRUD sur les utilisateurs | `GET /api/users`, `POST /api/users` | | **Monitors** | Gestion des moniteurs EUM | `POST /monitor/create`, `GET /monitor/run/:title/:show` | | **URLs** | Gestion des moniteurs URL | `POST /url/create`, `POST /url/update` | | **APIs** | Gestion des moniteurs API | `POST /api/create`, `POST /api/update` | | **TCP** | Gestion des moniteurs TCP | `POST /tcp/create`, `POST /tcp/update` | | **Ping** | Gestion des moniteurs Ping | `POST /ping/create`, `POST /ping/update` | | **DNS** | Gestion des Nslookup | `POST /nslookup/create`, `POST /nslookup/update` | | **DB** | Gestion des moniteurs de base de donnees | `POST /db/create`, `POST /db/update` | | **SNMP** | Gestion des moniteurs SNMP | `POST /snmp/create`, `POST /snmp/update` | | **System** | Gestion des moniteurs systeme | `POST /sys/create` | | **Monitoring** | Metriques serveur | `GET /api/metrics`, `GET /api/reportSysMetricsGraph` | | **Components** | Gestion des composants | `POST /selfRegister`, `GET /reloadCertificates` | | **Applications** | Regroupement d'applications | `POST /api/apps`, `GET /api/apps/status` | | **Load Tests** | Gestion des tests de charge | `POST /loadtest/run/:key`, `POST /loadtest/stop/:key` | | **Reports** | Generation de rapports | `POST /genAndSendReport`, `POST /genAndSendReportAll` | | **Downtimes** | Gestion des periodes de maintenance | `POST /downtime/create`, `DELETE /downtime/delete/:key` | | **Tags** | Gestion des tags | `GET /tags`, `POST /addTag` | | **Hosts** | Gestion des hotes | `POST /addHost`, `GET /hosts` | | **Devices** | Gestion des equipements SNMP | `POST /addDevice`, `GET /devices` | | **GitLab** | Integration GitLab | `GET /getFileGitlab/:key`, `GET /synchronizeMugGitlab` | | **Integration Tests** | Test de connectivite | `POST /testIntegration`, `POST /testSMTP`, `POST /testLdap` |

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

Traductions