This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved. |
1. Introduction
Pour les checks qui mesurent des valeurs de performance, il est souvent difficile de définir les valeurs seuils appropriées.
Si des valeurs trop basses génèrent des états « WARN » ou « CRIT » qui ne font que signaler des problèmes potentiels, les définir à un niveau trop élevé les maintiennent dans un état « OK », ce qui empêche la supervision de détecter les problèmes.
Prenons l'exemple du service CPU load sur un ordinateur hôte Linux (ou, de manière similaire, Processor Queue sur un ordinateur hôte Windows) : Vous disposez peut-être d'un serveur qui est inactif la plupart du temps, mais sur lequel, régulièrement, pendant de courtes périodes chaque jour sauf le samedi et le dimanche, entre environ 0 h 00 et 7 h 00 du matin, des tâches de sauvegarde volumineuses s'exécutent. Pendant cette période, une charge de travail du CPU de 10 (avec 20 noyaux du processeur) est tout à fait normale. Le reste du temps, même une charge de travail de 3 pourrait sembler anormalement élevée.
Dans Checkmk, plusieurs possibilités s’offrent à vous pour mettre en œuvre cet exemple. L'une d'entre elles consiste à définir d'abord les périodes correspondant aux différentes charges de travail, puis à fixer des valeurs de seuil spécifiques pour ces périodes. Dans notre exemple, cela signifie définir d'abord une nouvelle période de temps pour les heures de forte charge (du lundi au vendredi de 0 h 00 à 7 h 00). Vous pouvez ensuite spécifier une règle pour le service (CPU load ou Processor Queue). Sélectionnez cette nouvelle période de temps et définissez-lui des valeurs de seuil différentes (plus élevées).
L'utilisation d'une période de temps présente l'avantage de permettre de comprendre facilement pourquoi un état WARN / CRIT s'est produit à un moment donné. Cependant, le couplage manuel des valeurs seuils aux périodes de temps est également quelque peu rigide et parfois tout simplement beaucoup trop compliqué.
Si vous utilisez l’une des éditions commerciales, il existe une autre façon de résoudre ce problème.
Il s’agit de l’analyse prédictive, qui consiste à évaluer les données afin d’en déduire une prévision de leur comportement futur.
Une fois configurée, la prévision ne reste pas statique, mais s’adapte à la réalité changeante au fil du temps : les prévisions d’aujourd’hui pour après-demain ne resteront pas inchangées, car les valeurs réelles de demain auront été intégrées pour après-demain. Sans avoir à voyager dans le temps (épuisant !), le processus peut également s’exprimer ainsi : Checkmk apprend en permanence. Étant donné que les valeurs seuils pour les états «WARN» / «CRIT» sont toujours définies par rapport aux valeurs de prévision, les valeurs seuils apprennent elles aussi en même temps que la prévision.
2. Mise en œuvre de l’analyse prédictive
2.1. Du nom du plugin au paramètre de prévision
Toute une gamme de plugins Checkmk prend en charge l’analyse prédictive. Vous trouverez ci-dessous quelques exemples importants :
Les paramètres d'analyse prédictive se trouvent au même endroit que celui où vous définissez habituellement les valeurs seuils pour un service. Vous y trouverez l'option «Predictive levels (only on CMC)», si la vérification concernée prend en charge cette fonctionnalité.
2.2. Création d'une règle pour l'analyse prédictive
Pour le service « CPU load » sur l'ordinateur hôte Linux de notre exemple, vous pouvez créer une nouvelle règle avec le jeu de règles « CPU load (not utilization!) » sous « Service monitoring rules », que vous trouverez plus rapidement en effectuant une recherche dans le menu de configuration.
Dans la section « Value », vous trouverez des paramètres au niveau de service pour lesquels vous pouvez sélectionner la valeur « Predictive levels (only on CMC) » :

2.3. Sélection des valeurs de référence historiques
Après avoir sélectionné « Predictive levels (only on CMC) », les paramètres s’affichent ; nous allons d’abord vous présenter les deux premiers plus en détail :

Avec « Base prediction on », vous définissez la périodicité à laquelle la répétition des données mesurées est attendue (mensuelle, hebdomadaire, quotidienne ou horaire) :
Day of the month : les valeurs mesurées de chaque jour du mois sont comparées entre elles, c'est-à-dire le 1er, le 2, le 3, etc. de chaque mois.
Day of the week : La comparaison est basée sur les jours de la semaine, c'est-à-dire qu'une prévision différente est effectuée pour chaque jour de la semaine (lundi, mardi, mercredi, etc.). Il s'agit généralement du paramètre approprié.
Hour of the day : Les heures individuelles de chaque jour sont comparées, c'est-à-dire que la prévision est répétée quotidiennement.
Minute of the hour : La comparaison minute par minute et la répétition horaire ne sont généralement utiles que pour tester une prévision.
Dans le paramètre suivant, Time horizon, vous indiquez jusqu’à combien de jours en arrière Checkmk doit évaluer les données de mesure. Checkmk accède aux données historiques stockées dans les fichiers RRD. Bien que les données de mesure dans les fichiers RRD soient conservées pendant 4 ans, il n’est pas judicieux de remonter trop loin dans le passé. D’une part, les valeurs typiques du passé récent peuvent différer de celles d’un passé plus lointain.
D'autre part, plus vous remontez dans le temps, moins il y a de données mesurées par unité de temps à comparer. En effet, par défaut, Checkmk compresse les données mesurées disponibles à chaque minute dans les fichiers RRD en trois phases afin de gagner de l'espace : après 2, 10 et 90 jours. La compression signifie que les valeurs minimale, maximale et moyenne sont calculées à partir de plusieurs données de mesure et que ces données calculées remplacent les données initialement mesurées. Si les données mesurées des deux derniers jours sont disponibles avec une résolution complète d’une minute, la résolution passe à 5 minutes après 2 jours, à 30 minutes après 10 jours et à 6 heures après 90 jours. Lorsque Checkmk accède aux données historiques pour l’analyse prédictive, c’est toujours la valeur maximale parmi les trois valeurs stockées qui est retenue.
Pour notre serveur d’exemple, qui présente une charge de travail élevée du lundi au vendredi soir, il est conseillé de sélectionner la période de référence hebdomadaire et une période de référence de (maximum) 90 jours. 90 jours constituent un compromis acceptable, car d’une part cette période contient suffisamment de jours de comparaison, tandis que d’autre part les données de mesure sont toujours disponibles avec une résolution de 30 minutes — à condition que les valeurs par défaut n’aient pas été modifiées.
Sélectionnez comme «Base prediction on» l’entrée «Day of the week» et saisissez comme «Time horizon» «90», comme indiqué sur l’image ci-dessus.
En définissant la période de référence hebdomadaire sur une plage de 90 jours dans le passé, Checkmk dispose des informations nécessaires pour calculer la courbe de référence. Cela implique d’évaluer chaque lundi de la période de temps (pour 90 jours, il y a 12 lundis), de comparer la valeur mesurée de chaque lundi avec les valeurs mesurées des autres lundis à la même heure, et de calculer la moyenne. Après le lundi, Checkmk traite les autres jours de la semaine, du mardi au dimanche, de la même manière. La courbe de référence ainsi calculée pour le passé est ensuite mise à jour et devient ainsi la courbe de référence projetée pour l’avenir.
Les valeurs utilisées pour calculer la moyenne de la période de référence peuvent elles-mêmes être des valeurs déjà calculées (c'est-à-dire non mesurées) — en fonction de la résolution des données historiques contenues dans les fichiers RRD. |
La courbe de référence calculée par Checkmk sur la base des deux paramètres définis jusqu’à présent (période de référence et intervalle de temps de référence) est représentée par une ligne noire dans l’image suivante :

À titre d’aperçu, cette image montre le graphique de prévision, que vous pouvez afficher une fois la Configuration terminée. Outre la courbe de référence noire, les valeurs actuelles sont affichées sous forme de ligne bleue — si elles sont disponibles dans la période affichée.
Il ne manque plus, pour terminer la configuration, que les définitions des valeurs seuils pour les états «WARN» et «CRIT», qui sont indiqués dans le graphique par des couleurs de fond jaune et rouge. La section suivante traite de la définition de ces valeurs seuils.
2.4. Définition des valeurs seuils pour la prévision
Vous définissez les valeurs seuils pour « WARN » et « CRIT » en fonction des valeurs de prévision indiquées dans la courbe de référence.

Pour illustrer l'effet des différentes valeurs de paramètres utilisées pour définir les valeurs seuils, examinons de près une valeur unique sur la courbe de référence. Nous supposerons que la valeur prédite du service CPU load est de 10 à 3 h 30 du matin le vendredi.
Pour les valeurs seuils supérieures, il y a le paramètre Dynamic levels — upper bound, et pour les valeurs seuils inférieures, Dynamic levels — lower bound. Pour ces deux paramètres, vous disposez de trois choix, qui sont décrits dans les trois sections suivantes.
Différence absolue par rapport à la prévision
Avec cette valeur, les valeurs seuils sont calculées en augmentant ou en diminuant la valeur de prévision d'une valeur absolue fixe.
Exemple : Warning at 2.0 entraînera l'affichage d'un avertissement si la valeur est supérieure à 12 et inférieure à 8.
Différence relative par rapport à la prévision
Avec cette valeur, les valeurs seuils sont calculées en augmentant ou en diminuant la valeur de prévision d'un pourcentage.
Exemple : Warning at 10.0 % entraînera l'affichage d'un avertissement si la valeur est supérieure à 11 et inférieure à 9.
Par rapport à l'écart-type
Avec cette valeur, les valeurs seuils sont calculées en augmentant ou en diminuant la valeur de prévision d’un multiple de l’écart-type. L’écart-type indique dans quelle mesure les valeurs diffèrent au cours d’une période de référence (par exemple, les vendredis à 3 h 30).
Avec cette option, le calcul des valeurs seuils n’est pas si facile à prévoir, car Checkmk calcule en interne l’écart-type à partir de toutes les valeurs mesurées de la période de référence. Pour illustrer l’effet, nous avons besoin de plus d’informations sur les 12 mesures de la période de référence les vendredis à 3 h 30 du matin : Nous supposons que 10 mesures sont égales à 10, une est égale à 11 et une autre à 9. Les 12 mesures ont donc une valeur moyenne de 10 (ce qui correspond à la valeur de prévision), une variance d’environ 0,167 et un écart-type d’environ 0,41. (Nous ne détaillerons pas ici les calculs, mais vous pouvez vous référer à diverses pages statistiques sur l’internet.)
Exemple : Warning at 1.0, en tant que multiple de l'écart-type, entraînera l'affichage d'un avertissement si la valeur est supérieure à 10,41 et inférieure à 9,59.
Afin d'éviter des états d'WARNs / d'CRITs indésirables, aucune valeur seuil n'est appliquée si l'écart-type n'est pas défini (par exemple parce qu'il n'y a qu'une seule valeur mesurée au cours de la période de référence) ou s'il est nul (si toutes les valeurs mesurées sont identiques).
En général, la règle suivante s'applique : plus les valeurs passées sont cohérentes, plus l'écart-type est faible et plus la prévision est stricte. Cette option est donc utile pour définir des valeurs seuils plus étroites pour une période de référence présentant des valeurs stables et uniformes.
Valeurs minimales des valeurs seuils supérieures
Enfin, avec l'Limit for upper bound dynamic levels, vous avez la possibilité de définir des valeurs minimales absolues pour les valeurs de seuil supérieures. Cela vous permet d'éviter des états d'WARN/CRIT indésirables lorsque les valeurs de prévision sont très faibles.
Exemple : une Warning level de 2.0 entraînera l'affichage d'un avertissement uniquement si la valeur est supérieure à 2, même si la valeur seuil pour un avertissement est de 1,5.
Graphique de prévision avec valeurs seuils
Les effets décrits à titre d’exemple pour une valeur sont calculés par Checkmk pour toutes les valeurs de la courbe de référence. Vous pouvez voir le résultat dans le graphique de prévision, qui sera décrit plus en détail dans le chapitre suivant. Le graphique montre les courbes correspondant aux valeurs seuil supérieures et inférieures au-dessus et en dessous de la courbe de référence. Les zones d’WARNs sont colorées en jaune et celles d’CRITs en rouge.
Vous devez vérifier attentivement les plages d’WARN et d’CRIT dans le graphique de prévision, en particulier si vos valeurs seuils sont calculées à partir de l’écart-type, car les valeurs sous-jacentes à l’écart-type ne peuvent pas être lues directement depuis l’interface utilisateur de Checkmk. En vérifiant et, si nécessaire, en ajustant les niveaux, vous pouvez éviter que le service ne se retrouve trop souvent, par inadvertance, dans les états « WARN » ou « CRIT ».
Cela conclut la mise en œuvre de l’analyse prédictive. Dans le chapitre suivant, vous apprendrez comment observer la configuration dans la supervision et comment afficher le graphique de prévision.
3. Analyse des prévisions
Si vous avez configuré la supervision basée sur l’analyse prédictive pour un service, activez les modifications ; une fois que Checkmk aura effectué une vérification pour ce service, la nouvelle icône
apparaîtra dans la liste des services :

En particulier après la configuration initiale d'un service, cette icône peut être absente car les données disponibles sont insuffisantes pour la prévision configurée.
Dans ce cas, un message du type « |
Cliquez sur «
» dans la liste des services et une représentation graphique de la période de prévision actuelle — le graphique de prévision — s’affichera :

Dans le graphique de prévision, vous verrez la courbe de référence représentée par une ligne noire, les valeurs actuelles par une ligne bleue, et les plages pour les états « OK » en blanc, pour « WARN » en jaune, et pour « CRIT » sur fond rouge.
La période affichée dépend de la période de référence sélectionnée. Par exemple, si vous avez choisi une période hebdomadaire, vous pouvez consulter les différents jours de la semaine et utiliser la liste déroulante au-dessus du graphique pour passer à un autre jour. Avec l’élément de la liste « Everyday » (Utilisation moyenne), le graphique vous indiquera les valeurs moyennes pour tous les jours pour lesquels des données sont disponibles.
Dans le graphique d'exemple, on constate une forte utilisation de la capacité la nuit et une faible utilisation pendant la journée. De 0 h 00 à 4 h 00, les valeurs actuelles (ligne bleue) sont inférieures à la courbe de référence de prévision (ligne noire) — elles sont en fait si basses que les valeurs seuils inférieures ont été dépassées par intermittence, déclenchant des états d'WARN / CRIT. On observe également, entre 08 h 30 et 23 h 30, que la ligne bleue se situe constamment dans la plage d’CRITs inférieures. Cet état pourrait être évité à l’avenir en augmentant les valeurs des valeurs seuils inférieures.
Enfin, le graphique montre que les valeurs seuils supérieures sont basées sur l'écart-type, car entre 05h00 et 07h30, les valeurs seuils supérieures ont tendance à augmenter tandis que les valeurs de la courbe de référence diminuent. Ce comportement ne peut s'expliquer que par l'écart-type, puisque les deux autres options (valeur absolue et pourcentage) auraient conduit à un ajustement des valeurs seuils dans le sens de la courbe de référence.
Comme pour la configuration initiale, toute modification apportée à l’analyse prédictive ne prendra effet qu’après une nouvelle vérification du service.
Vous n’avez pas besoin d’attendre la prochaine vérification régulière, mais pouvez en déclencher une manuellement à partir de la liste des services à l’aide de l’icône « |
