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.
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 |
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. autoTransThresholdapplique 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.
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 moniteurs — url, 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.
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.
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.