API HTTP du Monitor
L’API REST du Monitor Mugnsoft fournit des capacites de surveillance completes pour les applications web, les API, les services reseau et l’infrastructure. Version 2.0.0
Introduction
L’API du Monitor vous permet de :
- Creer et gerer differents types de moniteurs (HTTP/HTTPS, API, TCP, Ping, DNS, SNMP, Base de donnees, Metriques systeme)
- Executer des moniteurs a la demande ou les planifier via des expressions cron
- Recuperer des metriques de performance et des donnees historiques
- Configurer les alertes et notifications (Email, Slack, Microsoft Teams, PagerDuty)
- Gerer les utilisateurs et l’authentification
- Exporter et analyser les donnees de surveillance
URL de base : https://<monitor-ip>:8051
Protocole : HTTPS avec mTLS (TLS mutuel)
Authentification
L’API du Monitor Mugnsoft utilise l’authentification JWT (JSON Web Token) avec l’algorithme RS256 (signature RSA avec SHA-256).
Connexion
curl -k -X POST https://192.168.1.100:8051/login \
-H "Content-Type: application/json" \
-d '{
"username": "admin",
"password": "your_password"
}'
Reponse (200 OK) :
{
"code": 200,
"expire": "2025-10-11T12:00:00Z",
"token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."
}
Validite du jeton :
- Connexion standard (
/login) : 24 heures - Connexion composant (
/loginComponent) : 60 jours - Connexion composant longue duree (
/loginComponent1Year) : 1 an - Connexion composant etendue (
/loginComponent15Years) : 15 ans
Utilisation du jeton JWT
Incluez le jeton JWT dans l’en-tete Authorization pour toutes les requetes authentifiees :
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
Rafraichissement du jeton
curl -k -X GET https://192.168.1.100:8051/refresh_token \
-H "Authorization: Bearer <your_current_token>"
Types de moniteurs
1. Moniteurs Web UI (bases sur Selenium)
Surveillez des parcours utilisateurs complets grace a l’automatisation du navigateur (Chrome, Firefox, Edge).
Base de donnees : exec
Capacites :
- Execution de transactions multi-etapes
- Capture d’ecrans et de videos
- Generation de fichiers HAR
- Mesure des temps de chargement de page et des temps de transaction
- Prise en charge de l’authentification MFA basee sur TOTP
- Integration Vault pour la gestion securisee des identifiants
2. Moniteurs URL HTTP/HTTPS
Requetes HTTP/HTTPS GET simples avec mesure du temps de reponse.
Base de donnees : url
Capacites :
- Verifications d’URL HTTP/HTTPS
- Mesure du temps de reponse
- Validation du code de statut
- Correspondance de motifs dans le corps de la reponse
- Suivi de l’expiration des certificats SSL
3. Moniteurs API
Surveillance des points de terminaison API RESTful avec validation avancee.
Base de donnees : api
Capacites :
- Methodes GET/POST/PUT/DELETE
- En-tetes et corps de requete
- Authentification basique et certificats clients
- Analyse des reponses JSON/XML
- Correspondance de motifs regex avec groupes nommes
- Extraction de valeurs numeriques et comparaison de seuils
4. Moniteurs de port TCP
Verifications de connectivite TCP vers des combinaisons hote:port specifiques.
Base de donnees : tcp
5. Moniteurs Ping ICMP
Surveillance de la latence et de la disponibilite reseau par echo ICMP.
Base de donnees : ping
6. Moniteurs DNS/Nslookup
Surveillance et validation de la resolution DNS.
Base de donnees : nslookup
7. Moniteurs SNMP
Surveillance des equipements SNMP (v1, v2c, v3).
Base de donnees : snmp
8. Moniteurs de requetes base de donnees
Execution de requetes base de donnees et validation des resultats (MySQL, PostgreSQL, Microsoft SQL Server).
Base de donnees : db
9. Moniteurs de metriques systeme
Surveillance des ressources systeme locales (CPU, memoire, Swap, disque, charge).
Base de donnees : sys
Modeles courants
Valeurs de planification
Les moniteurs peuvent etre planifies en utilisant des intervalles predefinis ou des expressions cron personnalisees :
| ID de planification | 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 |
Etats des moniteurs
on- Le moniteur est active et s’execute selon la planificationoff- Le moniteur est desactive (non execute)
Statuts des moniteurs
OK- Verification reussie, aucun problemeMINOR- Seuil mineur depasseMAJOR- Seuil majeur depasseCRITICAL- Seuil critique depasseDOWN- Service/point de terminaison injoignableERROR- Erreur d’execution survenueEXCEPTION- Exception de configuration ou systemeDOWNTIME- Le moniteur est en periode de maintenance planifiee
Format d’horodatage
Tous les horodatages utilisent des millisecondes Unix (temps epoch en millisecondes).
Exemple : 1728565200000 = 2025-10-10 12:00:00 UTC
Reference des points de terminaison API
Gestion des moniteurs
Obtenir tous les moniteurs
curl -k -X GET https://192.168.1.100:8051/monitors \
-H "Authorization: Bearer <token>"
Retourne tous les moniteurs de tous les types et planifications.
Obtenir les details d’un moniteur
curl -k -X POST https://192.168.1.100:8051/getMonitorDetails \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"type": "url",
"name": "monitor_name",
"sched": "5MIN"
}'
Executer un moniteur a la demande
curl -k -X GET "https://192.168.1.100:8051/monitor/run/homepage_check/show" \
-H "Authorization: Bearer <token>"
Parametres de chemin :
title- Nom du moniteurshow- Mode de sortie (showpour la sortie complete,hidepour la sortie minimale)
Activer/Desactiver un moniteur
# Activer
curl -k -X POST https://192.168.1.100:8051/exec/enable/5MIN/homepage_check \
-H "Authorization: Bearer <token>"
# Desactiver
curl -k -X POST https://192.168.1.100:8051/exec/disable/5MIN/homepage_check \
-H "Authorization: Bearer <token>"
Supprimer un moniteur
curl -k -X DELETE https://192.168.1.100:8051/delete/exec/5MIN/monitor_name \
-H "Authorization: Bearer <token>"
Moniteurs URL
Creer un moniteur URL
curl -k -X POST https://192.168.1.100:8051/url/create \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "homepage_check",
"display_name": "Homepage Availability",
"url": "https://example.com",
"sched": "5MIN",
"schedCron": "*/5 * * * *",
"state": "on",
"probe": "probe1",
"location": "datacenter1",
"tags": "[production,web]",
"timeout": "10",
"retries": "2",
"threshCri": "5000",
"threshMaj": "3000",
"threshMin": "2000",
"notifyStatus": "on",
"notifyAfter": "3",
"emailOnF": "true",
"emailR": "ops@example.com"
}'
Description des champs principaux :
name- Identifiant unique du moniteur (obligatoire)display_name- Nom lisible par l’utilisateur (obligatoire)url- URL cible (obligatoire)sched- Identifiant de planification (obligatoire)state-onouoff(obligatoire)probe- Nom du composant sonde/moniteur (obligatoire)tags- Tags separes par des virgules entre crochetstimeout- Delai d’attente de la requete en secondesretries- Nombre de tentatives de reessaithreshCri/threshMaj/threshMin- Seuils de temps de reponse en millisecondesnotifyAfter- Nombre d’echecs consecutifs avant l’alerteemailOnF- Envoyer un email en cas d’echec (true/false)emailR- Destinataires des emails (separes par des virgules)
Mettre a jour un moniteur URL
curl -k -X POST https://192.168.1.100:8051/url/update/5MIN/homepage_check \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{...}'
Moniteurs API
Creer un moniteur API
curl -k -X POST https://192.168.1.100:8051/api/create \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "user_api_check",
"display_name": "User API Endpoint",
"api": "https://api.example.com/users",
"typeApi": "GET",
"sched": "5MIN",
"schedCron": "*/5 * * * *",
"state": "on",
"probe": "probe1",
"tags": "[api,production]",
"timeout": "5",
"pattern": "\"total\":(\\d+)",
"matchGroupName": "total",
"matchIndex": "1",
"patternComp": "number >",
"patternCompValCri": "1000",
"headers": "Content-Type:application/json,X-API-Key:secret",
"body": "{\"filter\":\"active\"}"
}'
Champs supplementaires :
typeApi- Methode HTTP :GET,POST,PUT,DELETEpattern- Motif regex pour extraire des valeurs de la reponsematchGroupName- Groupe de capture nomme dans le regexpatternComp- Operateur de comparaison :number >,number <,number ==,string ==,string containsheaders- En-tetes separes par des virgules (format :Key:Value,Key2:Value2)body- Corps de la requete (pour POST/PUT)basicAuthUser/basicAuthPwd- Authentification HTTP basiqueclientCert/clientCertKey- Chemins des certificats clients pour mTLS
Moniteurs de port TCP
Creer un moniteur TCP
curl -k -X POST https://192.168.1.100:8051/tcp/create \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "ssh_port_check",
"display_name": "SSH Port 22",
"ip": "192.168.1.100",
"port": "22",
"sched": "5MIN",
"schedCron": "*/5 * * * *",
"state": "on",
"probe": "probe1",
"tags": "[infrastructure,ssh]"
}'
Moniteurs Ping ICMP
Creer un moniteur Ping
curl -k -X POST https://192.168.1.100:8051/ping/create \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "gateway_ping",
"display_name": "Gateway Connectivity",
"ip": "192.168.1.1",
"sched": "1MIN",
"schedCron": "* * * * *",
"state": "on",
"probe": "probe1",
"tags": "[network,gateway]"
}'
Moniteurs DNS/Nslookup
Creer un moniteur Nslookup
curl -k -X POST https://192.168.1.100:8051/nslookup/create \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "dns_example_com",
"display_name": "DNS Resolution - example.com",
"domain": "example.com",
"recordType": "A",
"expectedValue": "93.184.216.34",
"dnsServer": "8.8.8.8",
"sched": "5MIN",
"state": "on"
}'
Description des champs :
recordType- Type d’enregistrement DNS :A,AAAA,CNAME,MX,TXT,NS,SOAexpectedValue- Valeur de reponse DNS attenduednsServer- Serveur DNS a interroger (optionnel)
Moniteurs SNMP
Creer un moniteur SNMP (v2c)
curl -k -X POST https://192.168.1.100:8051/snmp/create \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "router_cpu",
"display_name": "Router CPU Usage",
"ip": "192.168.1.1",
"port": "161",
"version": "v2c",
"community": "public",
"snmpOid": "1.3.6.1.4.1.9.9.109.1.1.1.1.7.1",
"sched": "5MIN",
"state": "on",
"threshCri": "90",
"threshMaj": "75",
"threshMin": "60"
}'
Creer un moniteur SNMPv3
curl -k -X POST https://192.168.1.100:8051/snmp/create \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "router_cpu_v3",
"display_name": "Router CPU (SNMPv3)",
"ip": "192.168.1.1",
"port": "161",
"version": "v3",
"v3Username": "snmpuser",
"v3SecurityLevel": "authPriv",
"v3AuthProtocol": "SHA",
"v3AuthPassword": "authpass123",
"v3PrivProtocol": "AES",
"v3PrivPassword": "privpass456",
"snmpOid": "1.3.6.1.4.1.9.9.109.1.1.1.1.7.1",
"sched": "5MIN",
"state": "on"
}'
Description des champs SNMPv3 :
v3SecurityLevel- Niveau de securite :noAuthNoPriv,authNoPriv,authPrivv3AuthProtocol- Protocole d’authentification :MD5,SHA,SHA224,SHA256,SHA384,SHA512v3PrivProtocol- Protocole de confidentialite :DES,AES,AES192,AES256
Moniteurs de requetes base de donnees
Creer un moniteur de base de donnees
curl -k -X POST https://192.168.1.100:8051/db/create \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "user_count_check",
"display_name": "Active Users Count",
"dbType": "mysql",
"dbIp": "db.example.com",
"dbPort": "3306",
"dbUser": "monitor_user",
"dbPwd": "secure_password",
"dbDb": "production",
"query": "SELECT COUNT(*) as user_count FROM users WHERE status=\"active\"",
"sched": "10MIN",
"state": "on"
}'
Description des champs :
dbType- Type de base de donnees :mysql,postgres,mssql(obligatoire)query- Requete SQL a executer (obligatoire)
Moniteurs de metriques systeme
Creer un moniteur systeme
curl -k -X POST https://192.168.1.100:8051/sys/create \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "local_cpu_check",
"display_name": "Local CPU Usage",
"sched": "5MIN",
"schedCron": "*/5 * * * *",
"state": "on",
"probe": "probe1",
"threshCri": "90",
"threshMaj": "75",
"threshMin": "60"
}'
Metriques collectees :
- Utilisation CPU (%)
- Utilisation memoire (%)
- Utilisation Swap (%)
- Utilisation disque (%)
- Charge moyenne du systeme (1 min, 5 min, 15 min)
Donnees et rapports
Obtenir les donnees de chronologie d’un moniteur
curl -k -X POST "https://192.168.1.100:8051/timelineGraph/url/homepage_check/1728565200000/1728651600000" \
-H "Authorization: Bearer <token>"
Parametres de chemin :
dbname- Nom de la base de donnees :exec,url,api,tcp,ping,nslookup,snmp,db,syskey- Nom du moniteurstartTime- Horodatage Unix (millisecondes)endTime- Horodatage Unix (millisecondes)
Obtenir les donnees du graphique de performance
curl -k -X POST "https://192.168.1.100:8051/histGraph/api/user_count_api/1728565200000/1728651600000" \
-H "Authorization: Bearer <token>"
Retourne les metriques de temps de reponse/performance dans le temps.
Obtenir la tendance d’un moniteur
curl -k -X GET "https://192.168.1.100:8051/getTrend/url/homepage_check" \
-H "Authorization: Bearer <token>"
Retourne les donnees de tendance (24h, 7j, 4s).
Gestion des utilisateurs
Obtenir tous les utilisateurs
curl -k -X GET https://192.168.1.100:8051/api/users \
-H "Authorization: Bearer <token>"
Creer un utilisateur
curl -k -X POST https://192.168.1.100:8051/api/users \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"username": "newuser",
"password": "securepassword123",
"fullname": "New User",
"email": "newuser@example.com",
"group": "user",
"enabled": "true"
}'
Description des champs :
group- Groupe utilisateur :admin,user,readonlyenabled- Statut du compte :trueoufalse
Mettre a jour un utilisateur
curl -k -X PATCH https://192.168.1.100:8051/api/users \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"username": "existinguser",
"password": "newpassword",
"group": "admin"
}'
Supprimer un utilisateur
curl -k -X DELETE https://192.168.1.100:8051/api/users/username \
-H "Authorization: Bearer <token>"
Parametres et configuration
Obtenir les parametres
curl -k -X GET https://192.168.1.100:8051/setting \
-H "Authorization: Bearer <token>"
Retourne les parametres de configuration de la sonde.
Mettre a jour les parametres
curl -k -X POST https://192.168.1.100:8051/updateSetting \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"logLevel": "info",
"concurrencyLimit": "150",
"dataRetention": "168"
}'
Parametres configurables :
logLevel- Niveau de journalisation :trace,debug,info,warn,errorconcurrencyLimit- Nombre maximal d’executions de moniteurs simultaneesdataRetention- Retention des donnees en heuresautoThreshold- Activer le calcul automatique des seuils :true/falseautoThresholdRange- Heures a analyser pour le seuil automatique :24,168,720
Configurer les parametres SMTP
curl -k -X POST https://192.168.1.100:8051/setsmtpvault \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"smtpHost": "smtp.gmail.com",
"smtpPort": "587",
"smtpUser": "alerts@example.com",
"smtpPassword": "app_password",
"smtpFrom": "Mugnsoft Monitor <alerts@example.com>",
"smtpEnabled": "true"
}'
Operations sur la base de donnees
Obtenir les statistiques de la base de donnees
curl -k -X GET https://192.168.1.100:8051/v1/db/exec/stats \
-H "Authorization: Bearer <token>"
Retourne les noms des buckets et le nombre de cles.
Obtenir tous les buckets
curl -k -X GET https://192.168.1.100:8051/v1/db/exec/buckets \
-H "Authorization: Bearer <token>"
Sauvegarder la base de donnees
curl -k -X POST https://192.168.1.100:8051/backupDatabase \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"database": "exec"
}'
Gestion des certificats
Recharger les certificats
curl -k -X GET https://192.168.1.100:8051/reloadCertificates \
-H "Authorization: Bearer <token>"
Recharge les certificats TLS depuis le dossier des certificats.
Obtenir le certificat
curl -k -X GET https://192.168.1.100:8051/getCert -o monitor.crt
Telecharge le certificat public du moniteur (format PEM). Aucune authentification requise.
Points de terminaison utilitaires
Verification de sante
curl -k https://192.168.1.100:8051/ping
Reponse :
{
"message": "pong"
}
Aucune authentification requise. A utiliser pour les verifications de sante.
Obtenir le temps de fonctionnement
curl -k -X GET https://192.168.1.100:8051/uptime \
-H "Authorization: Bearer <token>"
Obtenir les metriques systeme (format Prometheus)
curl -k https://192.168.1.100:8051/api/metrics
Aucune authentification requise. Retourne les metriques systeme au format d’exposition Prometheus.
Codes de reponse
Codes de succes
| Code | Statut | Description |
|---|---|---|
| 200 | OK | Requete reussie |
| 201 | Created | Ressource creee avec succes |
Codes d’erreur client
| Code | Statut | Description |
|---|---|---|
| 400 | Bad Request | Format de requete ou parametres invalides |
| 401 | Unauthorized | Jeton d’authentification manquant ou invalide |
| 403 | Forbidden | Permissions insuffisantes |
| 404 | Not Found | Ressource introuvable |
| 409 | Conflict | La ressource existe deja |
Codes d’erreur serveur
| Code | Statut | Description |
|---|---|---|
| 500 | Internal Server Error | Erreur serveur survenue |
| 503 | Service Unavailable | Service temporairement indisponible |
Bonnes pratiques
Authentification
- Stockez les jetons JWT de maniere securisee
- Rafraichissez les jetons avant leur expiration
- Utilisez la connexion composant pour les integrations de longue duree
- Implementez la rotation des jetons pour les systemes de production
Planification
- Utilisez des intervalles appropries en fonction de la criticite :
- Services critiques : 1MIN
- Services importants : 5MIN
- Verifications regulieres : 10MIN ou 30MIN
- Evitez la sur-surveillance pour reduire la charge
Seuils
- Activez
autoThresholdpour le calcul dynamique des seuils - Definissez des seuils realistes bases sur les performances de reference
- Utilisez des seuils a 3 niveaux : MINOR (avertissement), MAJOR (significatif), CRITICAL (severe)
Notifications
- Configurez
notifyAfterpour eviter la fatigue d’alertes (par ex., notifier apres 3 echecs consecutifs) - Utilisez differents canaux pour differents niveaux de severite
- Testez les canaux de notification avant le deploiement en production
Tags
- Utilisez des conventions de nommage coherentes pour les tags
- Implementez des tags hierarchiques :
[environment_location_type] - Exemples :
[prod_us_web],[staging_eu_api],[prod_dc1_database]
Documentation Swagger
La documentation interactive de l’API est disponible via l’interface Swagger :
Accedez a l’interface Swagger a l’adresse : https://<monitor-ip>:8051/docs/index.html
Ressources supplementaires
- Metriques systeme :
https://<monitor-ip>:8051/api/metrics(format Prometheus) - Verification de sante :
https://<monitor-ip>:8051/ping - Guide d’installation : Installer Mugnsoft
- Site principal : Mugnsoft