1. Architecture #
Les composants.
Composants #
| Composant | Rôle |
|---|---|
| Agent (DaemonSet) | Un par nœud : métriques du nœud et des conteneurs, logs des conteneurs, réception des traces |
| Cluster Agent | Interroge 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 Operator | Gè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ôme | Cause fréquente |
|---|---|
| Pas de logs de conteneurs | containerCollectAll 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ées | Check de cluster lancé par chaque agent au lieu du Cluster Agent |
