RousselTMLEARNING

Observabilité

Monitors, SLO, dashboards et Datadog as code

Créer des monitors efficaces (métriques, logs, APM, composites, anomalies), des SLO, des dashboards, et gérer toute la configuration Datadog avec Terraform pour la versionner et la relire.

1. Les monitors #

Alerter dans Datadog.

Types #

TypeExemple
Metricavg(last_5m):avg:system.cpu.user{env:prod} by {host} > 85
LogPlus de 50 logs service:checkout status:error en 5 min
APMTaux d'erreur ou latence p95 d'un service
Anomaly, Forecast, OutlierÉcart au comportement habituel, disque plein prévu
CompositeCombinaison logique de monitors
SLOBurn rate d'un SLO
{{#is_alert}}
CPU à {{value}} % sur {{host.name}} ({{env.name}}).
Runbook : https://wiki.example.org/cpu
@slack-alertes-plateforme @pagerduty-plateforme
{{/is_alert}}
{{#is_recovery}}Retour à la normale sur {{host.name}}.{{/is_recovery}}
Bonne Pratique : Les variables de modèle ({{host.name}}) et les blocs conditionnels permettent un seul monitor « multi-alert » par service au lieu d'un par hôte.

2. SLO et dashboards #

Piloter.

SLO #

Un SLO Datadog se définit à partir de monitors (temps de bon fonctionnement) ou de métriques (ratio bons / total), avec une cible et une fenêtre (7, 30 ou 90 jours). Des monitors de burn rate s'y rattachent (voir la formation SRE pour les concepts).

Dashboards et notebooks #

  • Dashboards avec variables de modèle ($env, $service) pour un seul dashboard par type de service.
  • Notebooks pour les enquêtes et post-mortem : graphes et texte au même endroit.
  • Powerpacks pour réutiliser des groupes de widgets.

3. Datadog as code #

Terraform.

Exemple #

terraform {
  required_providers { datadog = { source = "DataDog/datadog" } }
}
provider "datadog" {
  api_url = "https://api.datadoghq.eu/"      # clés : variables DD_API_KEY et DD_APP_KEY
}

resource "datadog_monitor" "cpu" {
  name    = "CPU élevé sur {{host.name}}"
  type    = "metric alert"
  query   = "avg(last_5m):avg:system.cpu.user{env:prod} by {host} > 85"
  message = "{{#is_alert}}CPU à {{value}} % sur {{host.name}}{{/is_alert}} @slack-alertes-plateforme"
  monitor_thresholds {
    critical = 85
    warning  = 75
  }
  tags = ["env:prod", "team:plateforme", "managed-by:terraform"]
}
terraform init && terraform plan && terraform apply
À savoir : Les monitors et dashboards existants s'exportent en JSON depuis l'interface ; des outils comme terraformer génèrent le code Terraform correspondant pour reprendre l'existant.

Articles liés

Architecture de la plateforme Datadog : sites, organisations, clés et modèle de données

Comprendre l'architecture de Datadog : sources de données (agent, intégrations cloud, SDK, OpenTelemetry), si…

Datadog sur Kubernetes : Operator, Cluster Agent et Autodiscovery

Superviser Kubernetes avec Datadog : Datadog Operator et ressource DatadogAgent, Cluster Agent, Autodiscovery…

Dashboards et notebooks Datadog : widgets, template variables et bonnes pratiques

Concevoir des dashboards Datadog utiles : types de widgets, template variables, groupes, Powerpacks, formules…

Pour aller plus loin