Fonctionnement
Trois composants interviennent : l’Integrateur enregistre chaque verification dans InfluxDB, le service de prediction apprend le comportement de chaque moniteur a partir de cet historique, et le Webserver demande les previsions, en deduit un statut prevu et decide quand alerter.
Les composants
| Composant | Role |
|---|---|
| Sonde | Execute le moniteur, comme d’habitude. Porte la definition du moniteur, y compris son interrupteur Activer la prediction. |
| Integrateur | Ecrit chaque resultat de verification dans InfluxDB (mesure <type>ResponseTime, tag name = <type>_<cle du moniteur>). Distribue les alertes predictives. |
| InfluxDB | L’historique dont les modeles apprennent. Version 2 (Flux) ou 3 (SQL). |
| Service de prediction | Entraine un modele par moniteur et par sonde, et repond aux previsions. Lit InfluxDB avec ses propres identifiants. |
| Webserver | Trouve les moniteurs dont la prediction est activee, demande les previsions a leur rythme, decide du statut prevu, commande les entrainements, envoie les alertes, affiche les resultats. |
Sonde ──verification──▶ Integrateur ──▶ InfluxDB ◀──lit── Service de prediction
▲ ▲
│ alertes predictives │ HTTPS signe (prevision, entrainement)
└───────────────── Webserver ──────┘
Une prevision, etape par etape
- Le Webserver lit les definitions des moniteurs sur chaque sonde et garde celles dont la prediction est activee (rafraichi toutes les 10 minutes, ou aussitot avec Lancer les predictions maintenant).
- Au rythme propre du moniteur (chaque minute pour un moniteur a 1 minute), il demande une prevision au service.
- Le service lit les dernieres verifications du moniteur dans InfluxDB, sans les verifications en echec (
ERROR,TIMEOUT,UNKNOWN,CONFIG,DOWNTIME) : un timeout ne dit rien du temps de reponse. - Le modele prevoit les prochaines verifications : 5 par defaut, ou le nombre de previsions propre au moniteur.
- Le service donne aussi le risque de depassement : pour chaque seuil du moniteur, la probabilite qu’une de ces prochaines verifications l’atteigne. Le niveau le plus haut dont le risque passe le seuil de declenchement propre au moniteur est le statut prevu (
OK,MINOR,MAJORouCRITICAL). Quand l’historique du moniteur n’annonce pas ses depassements, il n’y a ni statut prevu ni alerte de prevision : voir Risque de depassement. - Le service note aussi la derniere verification : il la compare a ce que le modele attendait pour elle, d’apres les verifications precedentes. Trois ecarts-types ou plus de l’erreur habituelle du modele : c’est une anomalie.
Le resultat est enregistre et affiche dans le tableau Previsions. Le statut du moniteur, ses evenements, ses rapports et son SLA ne sont jamais modifies par une prevision.
Le modele
Chaque moniteur sur chaque sonde a son propre modele, car un moniteur se comporte differemment selon l’endroit d’ou il est verifie.
| Element | Valeur |
|---|---|
| Prevision | La mediane des 60 dernieres verifications, pour chacune des verifications suivantes. Une verification lente isolee la deplace a peine. |
| Anomalie | La derniere verification comparee a la mediane des 60 precedentes, rapportee a l’ecart habituel de ce moniteur |
| Risque de depassement | La probabilite qu’une des prochaines verifications atteigne chaque seuil, apprise sur l’historique propre du moniteur (voir Risque de depassement) |
| Entrainement | Mesure cet ecart habituel sur jusqu’a 2 000 verifications recentes. Prend quelques secondes et demande au moins 90 verifications reussies. |
| Donnees d’entrainement | Jusqu’a 280 jours d’historique, sans les verifications en echec |
| Qualite | Chaque modele enregistre son erreur moyenne a un pas (colonne Entraine du tableau des previsions) |
Pourquoi une mediane et pas un reseau de neurones
Les versions precedentes utilisaient un reseau de neurones (convolution + couches LSTM). Il a ete compare a des previsions statistiques simples sur l’historique reel des temps de reponse de moniteurs de tous types (API, URL, BD, DNS, ping, TCP, WebSocket) :
| Modele | Erreur sur les 5 verifications suivantes (1 = repeter la derniere verification) | Temps d’entrainement par moniteur |
|---|---|---|
| Mediane des 60 dernieres verifications | 0,75 | environ une seconde |
| Lissage exponentiel | 0,84 | environ une seconde |
| Reseau de neurones (LSTM) | 1,05 | environ 11 minutes |
Sur ces moniteurs, le reseau de neurones n’a jamais ete plus precis que la mediane. Sur un ensemble plus large de 65 moniteurs, la mediane a fait mieux que la repetition de la derniere verification sur 98 % d’entre eux (erreur 0,73), et a detecte 94 % des pics anormaux pour 2,8 % de fausses alertes.
Un temps de reponse est surtout du bruit autour d’un niveau qui change de temps en temps : un reseau de neurones a peu de motifs a apprendre, et la mediane est la prevision qui reagit le moins au bruit.
Le reseau de neurones reste disponible : PREDICTION_ENGINE=lstm sur le service de prediction (voir Configuration). Chaque modele garde le moteur avec lequel il a ete entraine jusqu’a son prochain entrainement. Un modele LSTM n’a pas de risque de depassement : son statut prevu compare les valeurs prevues aux seuils.
Risque de depassement
Une prevision plate ne franchit presque jamais un seuil avant les verifications elles-memes. Sur un historique reel, comparer les valeurs prevues aux seuils n’a annonce qu’environ 1 % des depassements avant leur debut. Le statut prevu vient donc d’un risque de depassement.
A l’entrainement, le service parcourt l’historique du moniteur a chaque instant ou il etait encore sous son seuil le plus bas, et apprend comment la probabilite d’un depassement dans les prochaines verifications depend de :
- la position de la mediane recente et de la derniere verification par rapport au seuil,
- la plus haute des 5 dernieres verifications,
- la frequence a laquelle le seuil a ete atteint sur les 60 et les 600 dernieres verifications,
- la variabilite des verifications.
Il rejoue ensuite ce calcul sur les 30 % les plus recents de l’historique, dont il n’a pas appris, et ne garde les alertes de prevision que si, sur cette periode :
| Condition | Reglage du service |
|---|---|
| Au moins 10 depassements ont commence, pour pouvoir juger les avertissements | |
| Le risque a classe les depassements au moins 2 fois mieux que le hasard | PREDICTION_RISK_MIN_LIFT |
| A un certain niveau de risque, au moins la moitie des avertissements etaient justes | PREDICTION_RISK_MIN_PRECISION |
Ce niveau de risque devient le seuil de declenchement du moniteur : un niveau est prevu quand le risque de l’atteindre le depasse. Le tableau des previsions affiche le risque ; le survol indique la part d’avertissements justes sur l’historique de ce moniteur.
A quoi s’attendre
Mesure sur les 65 moniteurs du banc d’essai, chacun avec son seuil a son propre 95e centile, sur un historique tenu a l’ecart de l’entrainement :
| Valeurs prevues vs seuils (avant) | Risque de depassement | |
|---|---|---|
| Moniteurs avec alertes de prevision | tous | 14 sur 65 |
| Avertissements justes | 25 % | 55 % |
| Depassements annonces avant leur debut, sur ces 14 moniteurs | 2 % | 30 % |
Sur les autres moniteurs, les depassements sont arrives sans signe avant-coureur dans les temps de reponse : panne soudaine, dependance, reseau. Les alertes de prevision restent desactivees pour eux et le tableau des previsions en donne la raison ; la detection d’anomalies, qui reagit a la verification elle-meme, continue de fonctionner.
Un depassement prevu est un risque, pas une certitude : environ un avertissement sur deux est suivi d’un depassement dans l’horizon de prevision.
| Sous la prevision, le tableau des previsions affiche | Signification |
|---|---|
| Pas d’alerte de prevision : aucun seuil defini | Aucun seuil mineur / majeur / critique n’est defini. |
| Pas d’alerte de prevision : pas encore assez d’historique | Moins d’environ 1 000 verifications reussies. |
| Pas d’alerte de prevision : trop peu de depassements passes | Moins de 10 depassements dans la partie de l’historique qui sert a juger. |
| Pas d’alerte de prevision : les depassements arrivent sans signe avant-coureur | Le risque a classe les depassements moins de 2 fois mieux que le hasard. |
| Pas d’alerte de prevision : avertissements trop souvent faux | Aucun niveau de risque n’a donne des avertissements justes au moins une fois sur deux. |
| Alertes de prevision suspendues : reentrainement | Les seuils ou le nombre de previsions ont change depuis l’entrainement. Le modele se reentraine en quelques secondes. |
Entrainement
Rien a lancer a la main. Le Webserver demande un entrainement au service :
| Quand | Pourquoi |
|---|---|
| Un moniteur dont la prediction est activee n’a pas de modele | Premier entrainement. Demande aussitot, puis au plus une fois par heure jusqu’a ce qu’il reussisse. |
| Un entrainement a echoue | Relance apres 24 heures (par exemple un nouveau moniteur sans assez d’historique). |
| Un modele est plus ancien que la periode de reentrainement | Chaque semaine par defaut : le comportement d’un moniteur evolue. |
| Les seuils ou le nombre de previsions du moniteur ont change | Le risque de depassement a ete juge pour les anciens. Demande a la prevision suivante ; prend quelques secondes. |
| Vous cliquez sur Entrainer maintenant | Immediatement, quel que soit le calendrier. |
Le service entraine un modele a la fois, dans un processus separe, et ne remplace un modele que lorsque le nouveau est complet : les previsions continuent avec l’ancien pendant ce temps. Le modele precedent est conserve dans le dossier previous du service.
Avec Entrainement manuel uniquement, le Webserver ne demande jamais d’entrainement de lui-meme ; utilisez Entrainer maintenant.
Alertes predictives
Quand Envoyer des alertes predictives est active, le Webserver suit le statut prevu et l’indicateur d’anomalie de chaque moniteur :
- Une alerte part quand un nouvel etat est vu sur deux previsions consecutives. Une prevision isolee n’alerte personne.
- Un retour a la normale part quand l’etat redevient OK, selon la meme regle.
- Les alertes de prevision et d’anomalie sont suivies separement. Alerter sur choisit lesquelles partent, et le reglage Alertes de prevision de chaque moniteur (onglet Prediction du moniteur) peut le remplacer pour les alertes de prevision (voir Configuration).
- Les alertes de prevision ne partent que pour les moniteurs dont le risque de depassement s’est montre fiable sur leur historique. Le message donne le risque et la part d’avertissements justes sur ce moniteur. Quand les alertes de prevision d’un moniteur sont suspendues (seuils modifies), une alerte de prevision en cours est levee.
- Les alertes utilisent les canaux au changement de statut du moniteur (email, Slack, Teams, PagerDuty, script), distribuees par les Integrateurs. Un moniteur sans canal de ce type ne recoit pas d’alerte predictive.
- Elles sont clairement signalees : le moniteur est nomme
<moniteur> (forecast)et le message commence par Forecast: ou Anomaly:. Elles ont leur propre incident PagerDuty, distinct de celui du moniteur. - L’Integrateur ne fait que notifier : une alerte predictive n’atteint jamais InfluxDB, les connecteurs ITSM ni la page Evenements.
Securite
| Sujet | Traitement |
|---|---|
| Qui peut appeler le service | Chaque requete porte un jeton signe par le Webserver, valable 5 minutes. Le service ne detient que la cle publique. La cle de signature ne sert a rien d’autre : elle ne peut pas ouvrir de session sur le Webserver. |
| Parler au bon service | Le certificat du service est epingle par son empreinte SHA-256, ou doit etre reconnu par l’hote du Webserver. |
| Identifiants InfluxDB | Uniquement sur le service de prediction. Le Webserver n’en envoie jamais. |
| Ce que le service peut interroger | Uniquement la serie du moniteur qu’on lui nomme, avec une requete qu’il construit lui-meme. Il ne peut pas servir a interroger autre chose. |
Haute disponibilite
Dans un cluster de Webservers, seul le Webserver actif lance les previsions, les demandes d’entrainement et les alertes. La cle de signature est partagee par tous les noeuds : une bascule ne demande aucun changement sur le service de prediction.