Sur cette page

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 planification
  • off - Le moniteur est desactive (non execute)

Statuts des moniteurs

  • OK - Verification reussie, aucun probleme
  • MINOR - Seuil mineur depasse
  • MAJOR - Seuil majeur depasse
  • CRITICAL - Seuil critique depasse
  • DOWN - Service/point de terminaison injoignable
  • ERROR - Erreur d’execution survenue
  • EXCEPTION - Exception de configuration ou systeme
  • DOWNTIME - 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 moniteur
  • show - Mode de sortie (show pour la sortie complete, hide pour 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 - on ou off (obligatoire)
  • probe - Nom du composant sonde/moniteur (obligatoire)
  • tags - Tags separes par des virgules entre crochets
  • timeout - Delai d’attente de la requete en secondes
  • retries - Nombre de tentatives de reessai
  • threshCri/threshMaj/threshMin - Seuils de temps de reponse en millisecondes
  • notifyAfter - Nombre d’echecs consecutifs avant l’alerte
  • emailOnF - 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, DELETE
  • pattern - Motif regex pour extraire des valeurs de la reponse
  • matchGroupName - Groupe de capture nomme dans le regex
  • patternComp - Operateur de comparaison : number >, number <, number ==, string ==, string contains
  • headers - En-tetes separes par des virgules (format : Key:Value,Key2:Value2)
  • body - Corps de la requete (pour POST/PUT)
  • basicAuthUser/basicAuthPwd - Authentification HTTP basique
  • clientCert/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, SOA
  • expectedValue - Valeur de reponse DNS attendue
  • dnsServer - 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, authPriv
  • v3AuthProtocol - Protocole d’authentification : MD5, SHA, SHA224, SHA256, SHA384, SHA512
  • v3PrivProtocol - 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, sys
  • key - Nom du moniteur
  • startTime - 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, readonly
  • enabled - Statut du compte : true ou false

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, error
  • concurrencyLimit - Nombre maximal d’executions de moniteurs simultanees
  • dataRetention - Retention des donnees en heures
  • autoThreshold - Activer le calcul automatique des seuils : true/false
  • autoThresholdRange - 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 autoThreshold pour 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 notifyAfter pour 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 :

Documentation Swagger de l'API Monitor

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

Traductions