Configuration du Monitor

Le fichier de configuration du Monitor controle l’identite de la sonde, la connectivite, le comportement de planification, les parametres d’automatisation du navigateur, le calcul automatique des seuils et l’integration avec les coffres-forts de secrets.

Astuce : inutile d’ecrire ce fichier a la main — l'assistant de configuration des composants genere un monitor.json pret a l’emploi a partir de quelques questions guidees.

Configuration du service (monitor.json)

Ce fichier doit se trouver dans le meme repertoire que l’executable.

Exemple complet

{
  "name": "probe-paris-01",
  "port": "8051",
  "webserver": "192.168.1.100:8050",
  "integratorEndPoint": "192.168.1.100:8052",
  "location": "Paris, France",
  "description": "Production monitoring probe - Paris DC",
  "logLevel": "info",
  "concurrencyLimit": "100",
  "dataRetention": "336",
  "backupInterval": "24",
  "nbDaysBackup": "336",
  "maxBackups": "5",
  "maxSize": "10",
  "maxAge": "28",
  "logCompress": "true",
  "chromeBinPath": "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
  "firefoxBinPath": "",
  "edgeBinPath": "",
  "chromeVersion": "",
  "firefoxVersion": "",
  "edgeVersion": "",
  "autoThreshold": "true",
  "autoThresholdRange": "24",
  "autoThreshCri": "8",
  "autoThreshMaj": "6",
  "autoThreshMin": "4",
  "autoThreshTimeout": "10",
  "autoTransThreshold": "false",
  "vaultType": "",
  "hashiCorpVaultUrl": "",
  "hashiCorpVaultToken": "",
  "azureKVUrl": "",
  "cyberarkConjurUrl": ""
}

Reference des parametres

Identite et reseau

Champ Type Description Defaut Requis
name string Identifiant unique de la sonde. Doit etre unique parmi toutes les sondes - Oui
port string Port TCP pour l’API REST du Monitor "8051" Non
webserver string IP:port du Webserver pour l’auto-enregistrement - Oui
integratorEndPoint string IP:port de l’Integrator pour le transfert de donnees. Laisser vide pour ignorer "" Non
location string Etiquette de localisation geographique ou logique (affichee dans l’interface) "" Non
description string Description libre de cette sonde "" Non

Gestion des donnees

Champ Type Description Defaut
concurrencyLimit string Nombre maximum d’executions simultanees de moniteurs (limite du semaphore) "100"
dataRetention string Heures de retention des donnees de supervision dans le magasin cle-valeur integre "336" (14 jours)
purgeStatusChangeDataNb string Nombre max d’enregistrements de changement de statut conserves par moniteur "250"
backupInterval string Heures entre les sauvegardes automatiques du magasin cle-valeur "24"
nbDaysBackup string Heures de conservation des fichiers de sauvegarde "336"

Journalisation

Champ Type Description Defaut
logLevel string Niveau de verbosete : debug, info, warn, error "info"
maxBackups string Nombre de fichiers journaux en rotation a conserver "5"
maxSize string Taille maximale du fichier journal en Mo "10"
maxAge string Age maximal du fichier journal en jours "28"
logCompress string Compresser les fichiers journaux en rotation : "true" ou "false" "true"

Configuration des navigateurs

Requis pour les moniteurs Web UI / EUM qui utilisent Selenium WebDriver :

Champ Type Description
chromeBinPath string Chemin complet vers l’executable Chrome. Si vide, detection automatique
firefoxBinPath string Chemin complet vers l’executable Firefox
edgeBinPath string Chemin complet vers l’executable Microsoft Edge
chromeVersion string Chaine de version de Chrome. Si vide, detection automatique depuis le binaire
firefoxVersion string Chaine de version de Firefox
edgeVersion string Chaine de version d’Edge
Astuce : Laissez les champs de version vides pour permettre au Monitor de detecter automatiquement les versions des navigateurs. Le Monitor telechargera egalement automatiquement l’executable WebDriver correspondant.

Calcul automatique des seuils

Calculez automatiquement les seuils de performance bases sur les donnees historiques en utilisant l’analyse de l’ecart-type :

Champ Type Description Defaut
autoThreshold string Activer le calcul automatique des seuils pour les moniteurs "true"
autoThresholdRange string Heures de donnees historiques a analyser : 24, 168, 336, 672 ou 1344 (1j / 7j / 14j / 28j / 56j) "24"
autoThreshCri string Multiplicateur d’ecart-type pour le seuil Critique "8"
autoThreshMaj string Multiplicateur d’ecart-type pour le seuil Majeur "6"
autoThreshMin string Multiplicateur d’ecart-type pour le seuil Mineur "4"
autoThreshTimeout string Multiplicateur d’ecart-type pour le delai d’expiration d’execution (timeout = moyenne + mult * ecart-type) "10"
autoTransThreshold string Activer le calcul automatique des seuils par etape de transaction "false"

Fonctionnement : Une tache nocturne (02h00) collecte les N dernieres heures de donnees de performance (autoThresholdRange), calcule la moyenne et l’ecart-type, puis definit les seuils comme suit :

Timeout  = moyenne + (autoThreshTimeout * ecart-type)   // plafond d'execution
Critical = moyenne + (autoThreshCri     * ecart-type)
Major    = moyenne + (autoThreshMaj     * ecart-type)
Minor    = moyenne + (autoThreshMin     * ecart-type)

Notes :

  • Seules les executions reussies entrent dans le calcul de la moyenne/ecart-type — les echecs et expirations sont exclus pour ne pas fausser la baseline.
  • Seuls les moniteurs actives (state = on) sont mis a jour.
  • autoTransThreshold applique le meme calcul par etape de transaction (02h05).
  • Les moniteurs Ping recoivent en plus des seuils de gigue (jitterThreshCri/Maj/Min), calcules a partir de la moyenne + ecart-type de la gigue avec les memes multiplicateurs.
Reglage pour eviter les faux positifs. moyenne + k*ecart-type suppose une distribution proche de la normale. Quand la fenetre de baseline est tres stable, l’ecart-type est proche de zero : le timeout se place juste au-dessus de la moyenne et la variance normale de la journee peut declencher une fausse panne. Mitigations : utiliser une fenetre plus longue (168+ heures) pour capter la saisonnalite, et augmenter autoThreshTimeout pour que le plafond garde une marge nette au-dessus du seuil Critique.

Methode par centile (robuste, recommandee pour une latence bruitee)

Definir thresholdMethod a "percentile" pour calculer les seuils a partir de la distribution empirique de latence plutot que moyenne+ecart-type. La latence est asymetrique a droite : les centiles correspondent a la semantique SLO et resistent aux valeurs aberrantes. Le timeout est un centile eleve multiplie par un facteur de securite, borne par un plancher absolu, ce qui elimine le piege de la fausse panne lie a un ecart-type quasi nul.

Champ Type Description Defaut
thresholdMethod string "sigma" (moyenne+ecart-type, historique) ou "percentile" "sigma"
autoThreshMinPct string Centile (0-100) pour le seuil Mineur "95"
autoThreshMajPct string Centile pour le seuil Majeur "98"
autoThreshCriPct string Centile pour le seuil Critique "99"
autoThreshTimeoutPct string Centile servant de base au timeout "99.9"
autoThreshTimeoutFactor string Multiplicateur applique au centile du timeout "2"
autoThreshTimeoutFloor string Plancher absolu (ms) pour le timeout calcule "1000"
autoThreshMinSamples string Echantillons reussis minimum ; en dessous la baseline reste inchangee (par etape pour les transactions) "200"

La methode s’applique a tous les types de moniteursurl, api, tcp, udp, ping, nslookup, db, snmp, wmi, sys et les etapes de transaction EUM (exec). Pour l’EUM, les seuils Mineur/Majeur par etape utilisent autoThreshMinPct / autoThreshCriPct ; les etapes en dessous de autoThreshMinSamples retombent sur le modele historique max×coefficient.

Anti-rebond des alertes (suppression du battement sur changement de statut)

Champ Type Description Defaut
debounceStatusChange string Si "true", une notification de changement de statut ne se declenche qu’apres que le nouveau statut a tenu notifyAfter+1 executions consecutives "false"

Les alertes a l’echec sont deja anti-rebondies par les reglages par moniteur notifyAfter / notifyFor (alerte seulement apres N echecs consecutifs). debounceStatusChange etend la meme garde consecutive aux notifications de changement de statut : un echantillon transitoire unique (par ex. un timeout ponctuel) ne declenche plus d’alerte a l’aller-retour. Reutilise le notifyAfter existant du moniteur comme profondeur.

Integration avec les coffres-forts de secrets

Pour recuperer des secrets (mots de passe, cles API, graines TOTP) depuis des coffres-forts externes au moment de l’execution :

Champ Type Description
vaultType string Fournisseur de coffre-fort : "hashicorp", "azure", ou "cyberark". Vide pour desactiver
hashiCorpVaultUrl string URL du serveur HashiCorp Vault
hashiCorpVaultToken string Jeton d’acces HashiCorp Vault
azureKVUrl string URL d’Azure Key Vault
cyberarkConjurUrl string URL du serveur CyberArk Conjur

Pour savoir comment les identifiants du coffre-fort et les secrets TOTP sont transmis aux scenarios EUM a l’execution (VAULT_USERNAME_<urlTitle>, VAULT_PASSWORD_<urlTitle>, TOTP_SECRET_<urlTitle>), voir la page Moniteur EUM. Pour le workflow de configuration de bout en bout, voir Coffres-forts de secrets.


Parametres par moniteur

Chaque moniteur individuel possede ses propres parametres, configures via l’interface Web ou l’API. Ceux-ci sont stockes dans le magasin cle-valeur integre, et non dans le fichier JSON.

| Champ | Description | |-------|-------------| | `sched` | Etiquette de planification (1MIN, 5MIN, 10MIN, etc.) | | `schedCron` | Expression cron personnalisee (remplace `sched`) | | `retries` | Nombre de tentatives en cas d'echec | | `timeout` | Delai d'expiration de l'execution en secondes | | `threshCri` | Seuil de temps de reponse critique (ms) | | `threshMaj` | Seuil de temps de reponse majeur (ms) | | `threshMin` | Seuil de temps de reponse mineur (ms) | | `tags` | Tags separes par des virgules pour la categorisation |
| Champ | Description | |-------|-------------| | `emailR` | Destinataires email (separes par des virgules) | | `slackChannel` | Canal Slack personnalise | | `slackToken` | Jeton Slack personnalise | | `teamsWebhook` | URL du webhook Teams | | `pagerDutyAPIKey` | Cle API PagerDuty | | `notifyStatus` | Niveau de statut minimum pour l'alerte | | `notifyAfter` | Attendre N echecs consecutifs avant d'alerter | | `notifyFor` | Continuer a alerter pendant N cycles | | `scriptAction` | Script a executer en cas d'alerte | | `scriptActionT` | Delai d'expiration du script |
| Champ | Description | |-------|-------------| | `browser` | Navigateur a utiliser (chrome, firefox, edge) | | `saveHAR` | Enregistrer le fichier HTTP Archive | | `saveVideo` | Enregistrer la video de l'execution | | `saveNP` | Enregistrer les donnees de performance reseau | | `gui` | Executer en mode graphique (vs headless) | | `similarity` | Seuil de similarite visuelle |
| Champ | Description | |-------|-------------| | `url` | URL cible | | `certCheck` | Activer la validation du certificat SSL | | `checkCertExp` | Alerter a l'expiration du certificat | | `pageSize` / `pageSizeComp` | Taille attendue du corps de la reponse (octets) et son operateur de comparaison (`>` / `<`) | | `patternUrl` | Motif de contenu principal — une regexp avec un `(groupe de capture)` | | `patternComp` | Operateur de comparaison applique a la valeur capturee (voir [Groupes de motifs](#groupes-de-motifs-url--api)) | | `patternCompValMin` / `patternCompValMaj` / `patternCompValCri` | Valeurs de seuil Mineur / Majeur / Critique pour la valeur capturee (vide = palier ignore) | | `matchGroupName` | Nom du groupe de motifs principal (titre du panneau graphique, sous-magasin d'historique) | | `matchIndex` | Quelle occurrence du motif lire (`1` = la premiere) | | `patterns` | Tableau JSON de groupes de motifs nommes supplementaires (voir [Groupes de motifs](#groupes-de-motifs-url--api)) |
| Champ | Description | |-------|-------------| | `api` | URL du point de terminaison API cible | | `typeApi` | Methode HTTP (`GET`, `POST`, `PUT`, `DELETE`, …) | | `headers` | En-tetes de requete sous forme d'objet JSON (ex. `{"Authorization":"Bearer …"}`) | | `body` | Corps de requete envoye avec l'appel | | `basicAuthUser` / `basicAuthPwd` | Identifiants d'authentification HTTP Basic | | `clientCert` / `clientCertKey` | Certificat et cle client pour les points de terminaison mutual-TLS | | `insecureCert` | `"on"` ignore la verification du certificat TLS | | `pattern` | Motif de contenu principal — une regexp avec un `(groupe de capture)` | | `patternComp` | Operateur de comparaison applique a la valeur capturee (voir [Groupes de motifs](#groupes-de-motifs-url--api)) | | `patternCompValMin` / `patternCompValMaj` / `patternCompValCri` | Valeurs de seuil Mineur / Majeur / Critique pour la valeur capturee (vide = palier ignore) | | `matchGroupName` | Nom du groupe de motifs principal (titre du panneau graphique, sous-magasin d'historique) | | `matchIndex` | Quelle occurrence du motif lire (`1` = la premiere) | | `datetimeFmt` / `datetimeTz` | Format et fuseau horaire IANA optionnels utilises par l'operateur `datetime older than` | | `patterns` | Tableau JSON de groupes de motifs nommes supplementaires (voir [Groupes de motifs](#groupes-de-motifs-url--api)) |

Groupes de motifs (URL & API)

Les moniteurs URL et API evaluent le corps de la reponse avec un ou plusieurs groupes de motifs. Chaque groupe extrait une seule valeur avec sa propre regexp et l’evalue selon ses propres seuils. Le statut du moniteur est le plus severe de tous les statuts de groupe et du statut de temps de reponse.

Un seul groupe peut etre configure via les champs herites ci-dessus (le groupe principal). Les groupes supplementaires sont stockes dans le champ patterns sous forme de tableau JSON ; lorsqu’il est renseigne, il decrit entierement l’evaluation (le groupe principal en est la premiere entree).

Correspondance de contenu vs. extraction de valeur

Le motif principal (pattern / patternUrl) fonctionne selon deux modes, choisis automatiquement selon que la regexp contient un groupe de capture :

  • Correspondance de contenu — pas de (groupe de capture). Une simple verification de presence : le corps de la reponse doit contenir le motif (sous-chaine ou regexp). Sinon, le moniteur echoue (ERROR). Aucun operateur ni seuil ne s’applique ; les seuils de temps de reponse continuent d’evaluer la latence.
  • Extraction de valeur — un (groupe de capture). Le texte capture est evalue selon l’operateur et les seuils Mineur / Majeur / Critique ci-dessous. C’est ce qu’est un groupe de motifs.

Les lignes supplementaires du tableau patterns sont toujours des groupes d’extraction de valeur. (Un motif principal en mode correspondance de contenu combine a des groupes de valeur supplementaires n’est pas re-verifie en mode multi-groupes — conservez le principal comme correspondance de contenu ou comme groupe de valeur.)

Champs par groupe

Cle Description
name Nom du groupe — sert de sous-magasin d’historique et de titre de panneau graphique
pattern Regexp avec exactement un (groupe de capture) extrayant la valeur
matchIndex Quelle occurrence du motif lire : 1 = la premiere, 2 = la deuxieme, … Utilisez-le pour atteindre l’element N d’un champ repete ou d’un tableau JSON
comp Operateur de comparaison (tableau ci-dessous)
min / maj / cri Valeurs de seuil Mineur / Majeur / Critique — un palier vide est ignore et ne contribue pas au statut
enabled "false" conserve le groupe dans la configuration mais l’exclut de l’evaluation ; absent/toute autre valeur = active
datetimeFmt / datetimeTz Optionnels, uniquement pour l’operateur datetime older than

Operateurs de comparaison

Operateur La valeur capturee est signalee lorsqu’elle…
number > / number < / number == est superieure / inferieure / egale a la valeur du palier (numerique)
string == / string != est egale / n’est pas egale a la valeur du palier
string contains / string not contains contient / ne contient pas la valeur du palier
datetime older than s’analyse comme une date-heure dont l’age depasse la valeur du palier (une duree comme 30s, 4m, 1h) ; datetimeFmt / datetimeTz controlent l’analyse

Pour chaque palier, le palier correspondant le plus severe l’emporte ; les paliers vides sont ignores, donc un groupe peut par exemple ne definir qu’un seuil Critique.

Exemple patterns

[
  { "name": "length",  "pattern": "\"length\"\\s*:\\s*(\\d+)", "matchIndex": "1",
    "comp": "number >", "min": "1000", "maj": "1500", "cri": "2000" },
  { "name": "fact",    "pattern": "\"fact\":(.*)",              "matchIndex": "1",
    "comp": "string contains", "min": "cats", "maj": "", "cri": "" },
  { "name": "updated", "pattern": "\"updated\":\"([^\"]*)\"",   "matchIndex": "1",
    "comp": "datetime older than", "min": "", "maj": "1h", "cri": "24h" }
]

Les valeurs capturees par groupe sont stockees sous STATUS_PATTERN/<moniteur>/<groupe> pour les graphiques d’historique ; les groupes supprimes ou renommes sont purges du magasin lors de la prochaine sauvegarde du moniteur.

N’ecrivez pas patterns a la main. Dans l’interface Web, la grille Pattern groups d’un moniteur URL ou API le construit pour vous. Lancez Test sur le point de terminaison, puis Suggest pattern groups pour remplir automatiquement nom / regexp / index de correspondance / operateur a partir de la reponse reelle — il ne reste que les seuils a definir. Voir Operations sur les moniteurs → Groupes de motifs.

Traductions