Tutoriel : votre premiere prevision
Ce tutoriel mene un moniteur URL de rien jusqu’a une prevision, un statut prevu et une alerte. Comptez une vingtaine de minutes, dont l’essentiel a attendre la fin du premier entrainement.
Avant de commencer
| Il vous faut | Detail |
|---|---|
| Un Webserver | ADMIN, connecte en administrateur. |
| Un Integrateur qui ecrit dans InfluxDB | InfluxDB v2 ou v3, qui recoit deja les verifications du moniteur. Voir Integration avec InfluxDB. |
| Assez d’historique | Un modele demande au moins 90 verifications reussies. Les alertes de prevision en demandent davantage : environ 1 000 verifications comprenant quelques depassements de seuil passes (un moniteur verifie chaque minute en donne 1 440 par jour). Avec moins, les previsions et les alertes d’anomalie fonctionnent, et la prevision indique pourquoi elle ne declenche pas d’alerte de prevision. |
| Un hote pour le service de prediction | Linux (Docker ou binaires, glibc 2.28+) ou Windows. Pas de GPU : un modele s’entraine en quelques secondes, un a la fois, deux coeurs CPU et 1 Go de memoire suffisent. |
| Reseau | Le Webserver joint le service (HTTPS, port 8000 ici), et le service joint InfluxDB. Dans un cluster de Webservers, chaque noeud doit joindre le service. |
| Un moniteur avec des seuils | Tout moniteur URL, API, TCP, UDP, Ping, DNS, Base de donnees, Systeme ou WebSocket dont les seuils mineur / majeur / critique sont renseignes : le risque de depassement se mesure par rapport a eux. |
| Un canal de notification (etape 7) | Le moniteur a un canal active au changement de statut (email, Slack, Teams, PagerDuty ou script), et l’Integrateur a ce canal active. |
| Versions | Webserver, sondes et service de prediction de la meme version (service de prediction 1.4 ou plus recent). |
Les commandes utilisent ces valeurs d’exemple. Remplacez-les par les votres.
| Valeur | Exemple |
|---|---|
| Service de prediction | https://prediction.example.com:8000 |
| InfluxDB (v2) | http://influxdb.example.com:8086, org mugnsoft, bucket monitoring |
| Moniteur | Moniteur URL shop sur la sonde probe1 |
Etape 1 : configurer le service de prediction
Le service tourne en conteneur Docker, ou a partir des binaires sous Linux ou Windows. Choisissez le votre : le choix vaut pour toute la page.
Le service lit l’historique des moniteurs avec sa propre connexion InfluxDB : le Webserver ne lui envoie jamais d’identifiants.
Docker
Creez un fichier prediction.env :
# InfluxDB dans lequel ecrit l'Integrateur
INFLUXDB_URL=http://influxdb.example.com:8086
INFLUXDB_TOKEN=<jeton InfluxDB en lecture seule>
INFLUXDB_ORG=mugnsoft
INFLUXDB_BUCKET=monitoring
PREDICTION_TSDB=influxdb # influxdb3 pour InfluxDB v3 (avec INFLUXDB_DATABASE)
# Seules les requetes signees par votre Webserver sont acceptees (cle copiee a l'etape 3)
PREDICTION_JWT_PUBLIC_KEY=/sec/webserver_prediction.pub
PREDICTION_REQUIRE_JWT=true
# TLS
PREDICTION_SSL_KEY=/sec/private.key
PREDICTION_SSL_CERT=/sec/certificate.crt
Placez la cle et le certificat TLS dans un dossier sec a cote. Les chemins ci-dessus sont ceux du conteneur. Un certificat auto-signe convient : vous l’epinglerez a l’etape 3.
Linux
Le service aura son propre dossier, ici /opt/mugnsoft/prediction (sudo mkdir -p /opt/mugnsoft/prediction/sec). Creez-y un fichier .env :
# InfluxDB dans lequel ecrit l'Integrateur
INFLUXDB_URL=http://influxdb.example.com:8086
INFLUXDB_TOKEN=<jeton InfluxDB en lecture seule>
INFLUXDB_ORG=mugnsoft
INFLUXDB_BUCKET=monitoring
PREDICTION_TSDB=influxdb # influxdb3 pour InfluxDB v3 (avec INFLUXDB_DATABASE)
# Seules les requetes signees par votre Webserver sont acceptees (cle copiee a l'etape 3)
PREDICTION_JWT_PUBLIC_KEY=sec/webserver_prediction.pub
PREDICTION_REQUIRE_JWT=true
# TLS
PREDICTION_SSL_KEY=sec/private.key
PREDICTION_SSL_CERT=sec/certificate.crt
# Modeles et etat de l'entrainement
PREDICTION_MODEL_DIR=models
Les chemins relatifs partent du dossier du service. Placez la cle et le certificat TLS dans son sous-dossier sec. Un certificat auto-signe convient : vous l’epinglerez a l’etape 3.
Le fichier .env contient le jeton InfluxDB : l’etape 2 le rend lisible par le seul compte du service.
Windows
Le service aura son propre dossier, ici C:\mugnsoft\prediction. Creez-y un fichier .env :
# InfluxDB dans lequel ecrit l'Integrateur
INFLUXDB_URL=http://influxdb.example.com:8086
INFLUXDB_TOKEN=<jeton InfluxDB en lecture seule>
INFLUXDB_ORG=mugnsoft
INFLUXDB_BUCKET=monitoring
PREDICTION_TSDB=influxdb # influxdb3 pour InfluxDB v3 (avec INFLUXDB_DATABASE)
# Seules les requetes signees par votre Webserver sont acceptees (cle copiee a l'etape 3)
PREDICTION_JWT_PUBLIC_KEY=sec/webserver_prediction.pub
PREDICTION_REQUIRE_JWT=true
# TLS
PREDICTION_SSL_KEY=sec/private.key
PREDICTION_SSL_CERT=sec/certificate.crt
# Modeles et etat de l'entrainement
PREDICTION_MODEL_DIR=models
Les chemins relatifs partent du dossier du service. Placez la cle et le certificat TLS dans son sous-dossier sec. Un certificat auto-signe convient : vous l’epinglerez a l’etape 3.
Le fichier .env contient le jeton InfluxDB : ne laissez lire le dossier qu’au compte qui execute le service (etape 2) et aux administrateurs.
Etape 2 : demarrer le service
Docker
L’image se construit depuis le paquet du service de prediction avec docker build -t mugnsoft/prediction:1.4 .. Puis :
docker run -d --name prediction --restart unless-stopped -p 8000:8000 \
--env-file prediction.env \
-v prediction-models:/models \
-v "$PWD/sec":/sec:ro \
mugnsoft/prediction:1.4
Les modeles et l’etat de l’entrainement sont dans le volume prediction-models : ils survivent a une nouvelle image.
Linux
Les binaires tournent sur Linux x86-64 avec glibc 2.28 ou plus : RHEL, Alma ou Rocky 8+, Debian 10+, Ubuntu 20.04+. Rien d’autre a installer.
Telecharger. Recuperez l’archive Predictive Analytics pour Linux sur la page de telechargement. La page donne aussi les commandes qui verifient sa signature GPG.
Extraire l’archive dans le dossier du service, a cote du fichier .env de l’etape 1, et confier le dossier a un compte dedie. Le dossier contient alors api, son dossier _internal, .env et sec.
sudo tar -xzf mugnsoft-prediction-1.4.0.linux-amd64.tar.gz -C /opt/mugnsoft/prediction
sudo useradd --system --home-dir /opt/mugnsoft/prediction --shell /usr/sbin/nologin mugnsoft-prediction
sudo chown -R mugnsoft-prediction: /opt/mugnsoft/prediction
sudo chmod 600 /opt/mugnsoft/prediction/.env
Essayer dans un terminal. Lancez-le toujours depuis son dossier : c’est la qu’il lit .env. Arretez-le avec Ctrl+C une fois l’etape 3 validee.
cd /opt/mugnsoft/prediction
sudo -u mugnsoft-prediction ./api
Le lancer en service avec systemd, et ouvrir le port si un pare-feu est actif :
sudo tee /etc/systemd/system/mugnsoft-prediction.service >/dev/null <<'EOF'
[Unit]
Description=Mugnsoft prediction service
After=network-online.target
Wants=network-online.target
[Service]
User=mugnsoft-prediction
WorkingDirectory=/opt/mugnsoft/prediction
ExecStart=/opt/mugnsoft/prediction/api
Restart=on-failure
RestartSec=10
NoNewPrivileges=true
ProtectSystem=full
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now mugnsoft-prediction
# firewalld (famille RHEL)
sudo firewall-cmd --permanent --add-port=8000/tcp && sudo firewall-cmd --reload
# ou ufw (Debian / Ubuntu)
sudo ufw allow 8000/tcp
Son journal : journalctl -u mugnsoft-prediction -f.
Mettre a jour : sudo systemctl stop mugnsoft-prediction, supprimez api et _internal, extrayez la nouvelle archive, refaites le chown du dossier, relancez le service. .env, sec et models restent.
Windows
Telecharger. Recuperez l’archive Predictive Analytics pour Windows sur la page de telechargement. La page donne aussi les commandes qui verifient sa signature GPG.
Extraire l’archive dans le dossier du service, a cote du fichier .env de l’etape 1 (PowerShell). Le dossier contient alors api.exe, son dossier _internal, .env et sec.
Expand-Archive mugnsoft-prediction-1.4.0.windows-amd64.zip -DestinationPath C:\mugnsoft\prediction
Essayer dans une console. Lancez-le toujours depuis son dossier : c’est la qu’il lit .env. Arretez-le avec Ctrl+C une fois l’etape 3 validee.
cd C:\mugnsoft\prediction
.\api.exe
Lancer au demarrage, sans session ouverte : enregistrez une tache de demarrage et ouvrez le port, dans un PowerShell administrateur.
$dir = "C:\mugnsoft\prediction"
$action = New-ScheduledTaskAction -Execute "$dir\api.exe" -WorkingDirectory $dir
$trigger = New-ScheduledTaskTrigger -AtStartup
# pas de limite de 72 heures, redemarrage s'il s'arrete sur une erreur
$settings = New-ScheduledTaskSettingsSet -ExecutionTimeLimit ([TimeSpan]::Zero) `
-RestartCount 999 -RestartInterval (New-TimeSpan -Minutes 1)
Register-ScheduledTask -TaskName "Mugnsoft prediction" -Action $action -Trigger $trigger `
-Settings $settings -User "NT AUTHORITY\SYSTEM" -RunLevel Highest
Start-ScheduledTask -TaskName "Mugnsoft prediction"
New-NetFirewallRule -DisplayName "Mugnsoft prediction" -Direction Inbound `
-Protocol TCP -LocalPort 8000 -Action Allow
Mettre a jour : arretez la tache, supprimez api.exe et _internal, extrayez la nouvelle archive, relancez la tache. .env, sec et models restent.
Verifiez qu’il repond (curl.exe dans Windows PowerShell) :
curl -k https://prediction.example.com:8000/health
"backend_configured": true signifie que le service a trouve ses parametres InfluxDB. Le fichier de cle publique n’existe pas encore : c’est l’etape suivante.
Etape 3 : relier le Webserver
- Ouvrez Parametres, la fenetre des parametres du Webserver, onglet Analyse predictive.
- Dans URL de l’API de prediction, saisissez
https://prediction.example.com:8000. - Cliquez sur Recuperer le certificat. L’empreinte du certificat du service remplit le champ en dessous. Comparez-la avec le certificat present sur l’hote du service, puis gardez-la : le Webserver acceptera desormais ce certificat et aucun autre.
- Cliquez sur Copier sous Cle de signature (publique) et enregistrez le texte dans le fichier attendu par le service (
sec/webserver_prediction.pubici). Le service relit le fichier quand il change : pas de redemarrage. - Cliquez sur Enregistrer les parametres de prediction. Tester la connexion se lance alors de lui-meme et coche quatre etapes : URL du service renseignee, Service joignable, Signature de ce webserver acceptee et Le service lit InfluxDB. Une etape en echec indique quoi corriger.
Le statut doit indiquer Connecte, avec la version du service et son nombre de modeles. Si Signature de ce webserver acceptee echoue, le fichier de cle publique du service est absent ou perime : refaites le point 4. Un champ modifie sans enregistrer ? L’onglet affiche Modifications non enregistrees : le test utilise toujours les parametres enregistres.
Etape 4 : choisir l’entrainement et les alertes
Plus bas dans le meme onglet :
- Reentrainer chaque modele : gardez Chaque semaine.
- Envoyer des alertes predictives : cochez-le, et gardez Alerter sur = Depassement prevu et anomalie.
Cliquez de nouveau sur Enregistrer les parametres de prediction.
Etape 5 : activer la prediction sur un moniteur
- Ouvrez le detail du moniteur (ici
shopsurprobe1), onglet Prediction. - Activez Activer. Laissez Verifications a prevoir vide pour utiliser la valeur par defaut (5 verifications).
- Laissez Alertes de prevision sur Par defaut : le moniteur suit alors les parametres de l’etape 4. Active ou Desactive les remplace pour ce seul moniteur.
- Enregistrez le moniteur. L’encadre Etat de la prediction du meme onglet suit ensuite le modele puis, une fois entraine, les previsions.
C’est tout : rien a lancer a la main. En dix minutes au plus le Webserver voit le moniteur, constate qu’il n’a pas encore de modele et demande au service d’en entrainer un.
Etape 6 : suivre la premiere prevision
De retour dans Parametres > Analyse predictive, le tableau Previsions liste chaque moniteur dont la prediction est activee. Cliquez sur Lancer les predictions maintenant pour ne pas attendre. Le tableau s’actualise de lui-meme tant qu’un modele attend son entrainement, et Filtrer les moniteurs retrouve un moniteur parmi beaucoup.
La colonne Modele passe de En attente a Entrainement puis Pret, en quelques secondes par moniteur. La colonne Prevision montre alors le statut prevu et son risque de depassement : la probabilite qu’une des prochaines verifications atteigne un seuil. Le survol indique la part d’avertissements justes sur l’historique de ce moniteur. Anomalie montre le score de la derniere verification.
Ici le modele est pret, et le risque qu’une des 5 prochaines verifications atteigne le seuil MINOR est de 4 % : le statut prevu est OK. Il passe a MINOR quand ce risque depasse le niveau que l’historique de ce moniteur a montre digne d’un avertissement.
Sur certains moniteurs la ligne indique Pas d’alerte de prevision, suivi de la raison (aucun seuil defini, pas encore assez d’historique, depassements sans signe avant-coureur…). Ce n’est pas une erreur : la prevision tourne et les alertes d’anomalie fonctionnent, mais l’historique n’annonce pas assez les depassements de ce moniteur pour qu’un avertissement soit fiable. Voir Risque de depassement.
Etape 7 : recevoir une alerte predictive
Une alerte predictive part des que le meme statut prevu est vu sur deux previsions consecutives, puis de nouveau quand il disparait. Elle va sur les canaux que le moniteur utilise au changement de statut (email, Slack, Teams, PagerDuty ou script), via les Integrateurs, et elle est signalee comme une prevision :
| Alerte | Exemple de message |
|---|---|
| Depassement prevu | Forecast: url ‘shop’ on probe1 has a 62% risk of reaching MINOR (threshold 130) within the next 5 checks. On this monitor’s history, such warnings were right 58% of the time and came before 30% of its breaches. The monitor’s current status is unchanged. |
| Retour a la normale | Forecast: the risk that url ‘shop’ on probe1 reaches a threshold within the next 5 checks is low again. |
| Anomalie | Anomaly: the latest response time of url ‘shop’ on probe1 is unusual for this monitor (4.2 standard deviations from the forecast). |
Les messages d’alerte sont en anglais.
Les alertes de prevision ne partent que pour les moniteurs dont le risque de depassement s’est montre fiable sur leur historique ; les alertes d’anomalie partent pour tous les moniteurs.
Aucune alerte ? Verifiez que le moniteur a au moins un canal active au changement de statut, que l’Integrateur a aussi ce canal active, et que le reglage Alertes de prevision du moniteur n’est pas sur Desactive.
Ensuite
- Fonctionnement : ce que le modele apprend, quand il est reentraine, ce qui compte comme une anomalie.
- Configuration : chaque parametre, la rotation de la cle, l’API.
- Depannage.