Monitor d'anomalies

Monitor d'anomalies

Présentation

La détection d’anomalies est une fonction algorithmique qui identifie le comportement anormal d’une métrique en fonction de ses données historiques, comme les tendances et les variations saisonnières en fonction du jour de la semaine ou de l’heure. Cette fonctionnalité est idéale pour les métriques qui affichent des tendances marquées et des patterns récurrents, qui seraient difficiles (voire impossibles) à surveiller avec des alertes de seuil.

Par exemple, la détection d’anomalies peut vous aider à déterminer si votre trafic Web est anormalement bas pour un après-midi en semaine, même si ce même niveau de trafic serait normal plus tard dans la soirée. Elle vous permet également d’étudier une métrique mesurant le nombre de connexions à votre site, même si celui-ci est en pleine croissance. Puisque le nombre de visiteurs augmente chaque jour, l’utilisation de seuils ne serait pas pertinente. À l’inverse, la détection d’anomalies peut rapidement vous envoyer une alerte en cas de baisse inattendue, qui pourrait être liée à un dysfonctionnement du système de connexion.

Création d’un monitor

Pour créer un monitor d’anomalies dans Datadog, utilisez la navigation principale : Monitors –> New Monitor –> Anomaly.

Définir la métrique

Toutes les métriques actuellement transmises à Datadog peuvent être surveillées. Pour obtenir des informations supplémentaires, consultez la page Monitor de métrique. Remarque : la fonction anomalies utilise des données historiques pour prédire un comportement futur. Ainsi, si vous utilisez ce type de monitor sur une nouvelle métrique, les résultats risquent de ne pas être pertinents.

Une fois la métrique définie, le monitor de détection des anomalies génère deux graphiques d’aperçu dans l’éditeur :

  • Le graphique Historical View vous permet de visualiser la requête surveillée sur différentes périodes pour mieux comprendre pourquoi les données peuvent être considérées comme anormales ou normales.
  • Le graphique Evaluation Preview couvre une plus longue période que la période d’alerte et permet de visualiser les données prises en compte par l’algorithme d’anomalies pour le calcul des valeurs limites.

Définir vos conditions d’alerte

Déclencher une alerte si les valeurs sont above or below, above ou below des limites sur un intervalle de 15 minutes, 1 hour, etc. ou custom (valeur personnalisée comprise entre 15 minutes et 24 heures). Rétablir si les valeurs sont comprises dans les limites pendant une durée minimale de 15 minutes, 1 hour, etc. ou custom (valeur personnalisée comprise entre 15 minutes et 24 heures).

Détection d’anomalies
Avec l’option par défaut (above ou below), une métrique est considérée comme anormale si elle sort de la bande grise représentant les valeurs normales. Choisissez l’option above ou below pour être alerté uniquement si la métrique passe au-dessus ou en dessous de la bande grise.
Fenêtre de déclenchement
Durée pendant laquelle une métrique doit être anormale pour qu’une alerte se déclenche. Remarque : si la période d’alerte est trop courte, vous risquez de recevoir de fausses alertes pour de simples irrégularités.
Fenêtre de rétablissement
Durée pendant laquelle une métrique anormale doit afficher un comportement normal pour que l’alerte soit annulée.

Options avancées

Datadog analyse automatiquement la métrique choisie et définit plusieurs paramètres pour vous. Cependant, les options peuvent être modifiées dans Advanced Options.

Deviations
Largeur de la bande grise. Elle correspond au paramètre des limites utilisé pour la fonction anomalies.
Algorithm
L'algorithme de détection des anomalies (basic, agile ou robust).
Seasonality
Saisonnalité (hourly, daily ou weekly) en fonction de laquelle l’algorithme agile ou robust doit analyser la métrique.
Daylight savings
Disponible pour la détection d’anomalies agile ou robust avec la saisonnalité weekly ou daily. Pour en savoir plus, consultez la page sur la détection d’anomalies et les fuseaux horaires.
Rollup
Intervalle de cumul.
Thresholds
Pourcentage des points qui doivent être anormaux pour déclencher une alerte, un avertissement ou un rétablissement.
Saisonnalité
Hourly
L’algorithme s’attend à ce qu’une même minute donnée d’une heure donnée se comporte comme les minutes des heures précédentes. Par exemple, les données de 17 h 15 doivent être similaires à celles de 16 h 15, 15 h 15, etc.
Daily
L’algorithme s’attend à ce qu’une heure donnée se comporte comme celles des jours précédents. Par exemple, les données du jour pour 17 h doivent être similaires à celles de 17 h la veille.
Weekly
L’algorithme s’attend à ce qu’un jour de la semaine donné se comporte comme les jours des semaines précédentes. Par exemple, les données d’un mardi doivent être similaires à celles des mardis précédents.

Remarque : pour être réellement efficaces, les algorithmes d’apprentissage automatique nécessitent au moins deux fois plus de données historiques que l’intervalle saisonnier choisi.

Algorithmes de détection des anomalies
Basic
Utilisez cet algorithme lorsque les métriques n’ont pas de modèle saisonnier récurrent. L’algorithme Basic utilise un calcul simple reposant sur des quantiles cumulés avec un délai pour déterminer la plage de valeurs attendues. Il utilise très peu de données et s’ajuste rapidement aux changements de conditions sans prendre en compte les comportements saisonniers ni les tendances à plus long terme.
Agile
Utilisez cet algorithme lorsque les métriques sont saisonnières et sont censées changer. Cet algorithme s’ajuste rapidement aux changements de niveaux de la métrique. Cet algorithme est une version robuste de l’algorithme SARIMA. Il intègre les dernières données historiques à ses prédictions, ce qui lui permet de s’adapter rapidement aux changements de niveaux, mais qui lui vaut d’être moins robuste pour les anomalies récentes sur le long terme.
Robust
Utilisez cet algorithme lorsque les métriques saisonnières sont censées être stables et lorsque les changements de niveaux légers sont considérés comme des anomalies. Il s’agit d’un algorithme de décomposition de tendance saisonnière très stable. Ses prédictions restent constantes même en cas d’anomalies sur le long terme, ce qui lui vaut un temps de réponse plus long pour les changements de niveaux prévus (par exemple, si le niveau d’une métrique change en cas de modification de code).

Tous les algorithmes saisonniers peuvent utiliser au maximum deux mois de données historiques lors du calcul de la plage normale de comportement attendue d’une métrique. En utilisant un volume conséquent de données passées, les algorithmes peuvent éviter de donner trop d’importance à un comportement anormal qui aurait pu avoir lieu il y a peu de temps.

Exemples :
Les graphiques ci-dessous illustrent les différents comportements de ces trois algorithmes.

Dans cet exemple, basic identifie avec succès les anomalies qui quittent la plage normale de valeurs, sans tenir compte des tendances saisonnières et récurrentes pour déterminer la plage de valeurs prévues. À l’inverse, les algorithmes robust et agile reconnaissent la tendance saisonnière et peuvent détecter des anomalies plus nuancées (p. ex., si la métrique se stabilise au niveau de sa valeur minimale).

Dans cet exemple, la métrique affiche un changement de niveau soudain. L’algorithme Agile s’ajuste plus rapidement au changement de niveau que l’algorithme robust. En outre, la largeur des limites de l’algorithme robust augmente et reflète une plus grande incertitude après le changement de niveau, tandis que la largeur des limites de l’algorithme agile reste inchangée. L’algorithme Basic n’est clairement pas adapté à ce scénario, où la métrique affiche une tendance saisonnière marquée.

Cet exemple montre la réaction des algorithmes face à une anomalie d’une heure. L’algorithme Robust n’ajuste pas les limites pour l’anomalie dans ce scénario, car il réagit plus lentement aux changements soudains. Les autres algorithmes se mettent à agir comme si l’anomalie était le nouveau critère de normalité. L’algorithme Agile considère même que le retour à la normale de la métrique est une anomalie.

Les algorithmes gèrent différemment les changements d’échelle. Les algorithmes Basic et robust n’y sont pas sensibles, contrairement à l’algorithme agile. Dans les graphiques de gauche, on remarque que les algorithmes agile et robust considèrent le changement de niveau comme une anomalie. Sur la droite, lorsque l’on fait augmenter la même métrique de 1 000, l’algorithme agile ne signale plus le changement de niveau comme une anomalie tandis que l’algorithme robust continue à le faire.

Cet exemple montre comment chaque algorithme gère une nouvelle métrique. Les algorithmes Robust et agile ne présentent aucune limite pendant les premières saisons (hebdomadaire). L’algorithme Basic commence à afficher des limites peu après l’apparition de la première métrique.

Notifications

Pour obtenir des instructions détaillées sur l’utilisation des sections Say what’s happening et Notify your team, consultez la page Notifications.

API

Les clients Enterprise peuvent créer un monitor de détection d’anomalies avec l'endpoint d’API create-monitor. Datadog vous conseille fortement d'exporter le JSON d’un monitor pour créer la requête de l’API. Grâce à la page de création de monitors de Datadog, les clients ont accès au graphique d’aperçu et peuvent ajuster les paramètres automatiques, afin de rattraper toute erreur de configuration.

Remarque : les monitors de détection d’anomalies sont uniquement disponibles pour les clients Enterprise. Si vous disposez d’un abonnement Pro et que vous souhaitez utiliser la fonctionnalité de détection d’anomalies, contactez votre chargé de compte ou envoyez un e-mail à l'équipe de facturation Datadog.

Les monitors d’anomalies sont gérés via la même API que les autres monitors. Les champs suivants sont uniquement disponibles pour les monitors d’anomalies :

query

La propriété query dans le corps de la requête doit contenir une chaîne de requête au format suivant :

avg(<période_requête>):anomalies(<requête_métrique>, '<algorithme>', <déviations>, direction='<direction>', alert_window='<période_alerte>', interval=<intervalle>, count_default_zero='<count_zéro_défaut>' [, seasonality='<saisonnalité>']) >= <seuil>
période_requête
Intervalle, par exemple last_4h ou last_7d. Correspond à l’intervalle affiché dans les graphiques des notifications. Cette valeur ne doit pas être inférieure à période_alerte. Valeur recommandée : environ 5 fois la valeur de période_alerte.
requête_métrique
Requête de métrique Datadog standard. Exemple : sum:trace.flask.request.hits{service:web-app}.as_count().
algorithme
basic, agile ou robust.
déviations
Nombre positif permettant de régler la réactivité de la détection des anomalies.
direction
Détermine si l’alerte doit être déclenchée lorsque les points se trouvent au-dessus de la bande de valeurs autorisées (above), en dessous (below) ou au-dessus et en dessous (both).
période_alerte
Intervalle de vérification des anomalies (p. ex., last_5m ou last_1h).
intervalle
Nombre entier positif représentant le nombre de secondes de l’intervalle de cumul. Valeur recommandée : au moins un cinquième de la durée de période_alerte.
count_zéro_défaut
À définir sur true pour la plupart des monitors. Définir sur false uniquement si l’envoi d’une métrique count sans valeur ne doit pas être considéré comme nul.
saisonnalité
hourly, daily ou weekly. Excluez ce paramètre si vous utilisez l’algorithme basic.
seuil
Nombre positif inférieur ou égal à 1. Correspond à la fraction de points de période_alerte qui doivent être anormaux pour déclencher une alerte critique.

Vous trouverez ci-dessous un exemple pour un monitor de détection d’anomalies qui vous informe lorsque la charge processeur moyenne de votre nœud Cassandra dépasse la valeur ordinaire par plus de trois fois l’écart type au cours des 5 dernières minutes :

avg(last_1h):anomalies(avg:system.cpu.system{name:cassandra}, 'basic', 3, direction='above', alert_window='last_5m', interval=20, count_default_zero='true') >= 1

options

La plupart des propriétés sous options dans le corps de requête sont identiques aux autres alertes de requête, à l’exception de thresholds et threshold_windows.

thresholds
Les monitors d’anomalies prennent en charge les seuils critical, critical_recovery, warning et warning_recovery. Les seuils sont exprimés sous la forme de chiffres compris entre 0 et 1. Ces valeurs représentent la fraction d’anomalies de la période associée. Par exemple, si le seuil critical a pour valeur 0.9, une alerte critique se déclenche lorsque 90 % des points de trigger_window (décrit ci-dessous) sont anormaux. De même, si la valeur de warning_recovery est définie sur 0, le monitor passe de l’état d’avertissement à l’état normal uniquement lorsque 0 % des points de recovery_window sont anormaux.
Le threshold critical doit correspondre au threshold utilisé dans la query.
threshold_windows
Les monitors d’anomalies ont une propriété threshold_windows dans options. threshold_windows doit inclure les deux propriétés suivantes : trigger_window et recovery_window. Ces périodes sont exprimées sous la forme de chaînes d’intervalle, par exemple last_10m ou last_1h. trigger_window doit correspondre à la propriété alert_window de query. trigger_window correspond à l’intervalle d’analyse des anomalies utilisé pour déterminer si un monitor doit être déclenché. recovery_window correspond à l’intervalle d’analyse des anomalies utilisé pour déterminer si un monitor déclenché doit être rétabli.

Voici à quoi ressemble une configuration standard des seuils et périodes de seuil :

"options": {
  ...
  "thresholds": {
    "critical": 1,
    "critical_recovery": 0
  },
  "threshold_windows": {
    "trigger_window": "last_30m",
    "recovery_window": "last_30m"
  }
}

Dépannage

Pour aller plus loin