RousselTMLEARNING

Observabilité

Installer l'agent Datadog et configurer les intégrations

Installer l'agent Datadog sur Linux, Docker et Kubernetes (Datadog Operator), comprendre datadog.yaml, activer des intégrations et l'autodiscovery des conteneurs, et diagnostiquer avec datadog-agent status.

1. Installer l'agent #

Linux, Docker, Kubernetes.

Linux #

DD_API_KEY=<cle_api> DD_SITE="datadoghq.eu" \
  bash -c "$(curl -L https://install.datadoghq.com/scripts/install_script_agent7.sh)"
sudo datadog-agent status | head -40

Docker #

docker run -d --name dd-agent \
  -e DD_API_KEY=<cle_api> -e DD_SITE=datadoghq.eu \
  -e DD_LOGS_ENABLED=true -e DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true \
  -e DD_APM_ENABLED=true -e DD_APM_NON_LOCAL_TRAFFIC=true -e DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  -v /proc/:/host/proc/:ro -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
  -p 8126:8126 -p 8125:8125/udp \
  gcr.io/datadoghq/agent:7

Kubernetes avec l'opérateur #

helm repo add datadog https://helm.datadoghq.com && helm repo update
helm install datadog-operator datadog/datadog-operator -n datadog --create-namespace
kubectl -n datadog create secret generic datadog-secret --from-literal api-key=<cle_api>
apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata: { name: datadog, namespace: datadog }
spec:
  global:
    site: datadoghq.eu
    clusterName: prod-eu
    credentials:
      apiSecret: { secretName: datadog-secret, keyName: api-key }
  features:
    logCollection: { enabled: true, containerCollectAll: true }
    apm: { instrumentation: { enabled: true } }
    liveProcessCollection: { enabled: true }

2. Les intégrations #

Activer un check.

Fichier de configuration #

# /etc/datadog-agent/conf.d/nginx.d/conf.yaml
init_config:
instances:
  - nginx_status_url: http://localhost:81/nginx_status
    tags: [service:front, env:prod]
sudo datadog-agent check nginx        # exécuter le check une fois
sudo systemctl restart datadog-agent

Autodiscovery des conteneurs #

Pour les conteneurs, la configuration se met dans des annotations (Kubernetes) ou des labels (Docker) : l'agent applique le check à chaque conteneur correspondant, où qu'il tourne.

metadata:
  annotations:
    ad.datadoghq.com/nginx.checks: |
      {"nginx": {"instances": [{"nginx_status_url": "http://%%host%%:81/nginx_status"}]}}
    ad.datadoghq.com/nginx.logs: '[{"source": "nginx", "service": "front"}]'
Bonne Pratique : La variable %%host%% est remplacée par l'adresse du conteneur : la même annotation fonctionne pour tous les pods.

3. Diagnostiquer l'agent #

Les commandes utiles.

Commandes #

sudo datadog-agent status            # état des checks, logs, APM, erreurs
sudo datadog-agent configcheck       # configurations chargées (dont autodiscovery)
sudo datadog-agent flare <ticket>    # paquet de diagnostic pour le support
kubectl -n datadog exec ds/datadog-agent -- agent status

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