RousselTMLEARNING

Observabilité

Datadog sur Kubernetes : Operator, Cluster Agent et Autodiscovery

Superviser Kubernetes avec Datadog : Datadog Operator et ressource DatadogAgent, Cluster Agent, Autodiscovery par annotations, collecte des logs de conteneurs, instrumentation APM automatique (Single Step) et dépannage.

1. Architecture #

Les composants.

Composants #

Datadog sur Kubernetes
ComposantRôle
Agent (DaemonSet)Un par nœud : métriques du nœud et des conteneurs, logs des conteneurs, réception des traces
Cluster AgentInterroge l'API Kubernetes une seule fois pour tout le cluster (au lieu de chaque agent), distribue les checks de cluster, fournit les métriques externes pour l'HPA, porte l'admission controller
Datadog OperatorGère agent et Cluster Agent à partir d'une ressource DatadogAgent

2. Installer avec l'Operator #

Déclaratif.

Installation #

helm repo add datadog https://helm.datadoghq.com && helm repo update
helm install datadog-operator datadog/datadog-operator
kubectl create secret generic datadog-secret --from-literal api-key="$DD_API_KEY"
apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    clusterName: prod-eu
    site: datadoghq.eu
    credentials:
      apiSecret: { secretName: datadog-secret, keyName: api-key }
  features:
    logCollection: { enabled: true, containerCollectAll: true }
    apm:
      instrumentation: { enabled: true }      # injection automatique des bibliothèques APM
    liveProcessCollection: { enabled: true }
    orchestratorExplorer: { enabled: true }
À savoir : Le chart Helm datadog/datadog reste une alternative ; l'Operator a l'avantage d'une ressource unique, validée et facile à versionner en GitOps.

3. Autodiscovery #

Superviser ce qui arrive.

Annotations #

Autodiscovery applique une configuration de check à chaque conteneur correspondant, dès qu'il démarre. La configuration se pose en annotations sur le pod :

metadata:
  annotations:
    ad.datadoghq.com/redis.checks: |
      { "redisdb": { "instances": [ { "host": "%%host%%", "port": "6379" } ] } }
    ad.datadoghq.com/redis.logs: '[{"source": "redis", "service": "cache"}]'
  labels:
    tags.datadoghq.com/env: prod
    tags.datadoghq.com/service: cache
    tags.datadoghq.com/version: "7.2"
Bonne Pratique : Les labels tags.datadoghq.com/* posent le tagging unifié sur métriques, logs et traces du pod : c'est la première chose à standardiser dans vos charts.

4. Dépanner #

Les commandes utiles.

Commandes #

kubectl exec -it ds/datadog-agent -- agent status          # état des checks, logs, APM
kubectl exec -it ds/datadog-agent -- agent configcheck     # configurations Autodiscovery résolues
kubectl exec -it deploy/datadog-cluster-agent -- datadog-cluster-agent status
SymptômeCause fréquente
Pas de logs de conteneurscontainerCollectAll désactivé, ou chemin /var/log/pods non monté
Check non lancéNom du conteneur différent de celui de l'annotation ad.datadoghq.com/<conteneur>
Métriques dupliquéesCheck de cluster lancé par chaque agent au lieu du Cluster Agent

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…

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

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

Métriques Datadog avancées : types, agrégations, cardinalité et Metrics without Limits

Maîtriser les métriques Datadog : types (count, rate, gauge, histogram, distribution), agrégation temporelle …

Pour aller plus loin