Si vous avez déployé le Datadog Cluster Agent avec l’Admission Controller activé, ce dernier modifie les manifestes de pod et injecte toutes les variables d’environnement requises (en fonction des conditions de mutation configurées). Dans ce cas, la configuration manuelle des DD_ variables d’environnement dans les manifestes de pod n’est pas nécessaire. Pour plus d’informations, consultez la documentation de l’Admission Controller.
Configuration complète
Pour exploiter tout le potentiel du tagging de service unifié lorsque vous utilisez Kubernetes, ajoutez les variables d’environnement au niveau de l’objet de déploiement et au niveau des spécifications du modèle de pod :
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
tags.datadoghq.com/env: "<ENV>"
tags.datadoghq.com/service: "<SERVICE>"
tags.datadoghq.com/version: "<VERSION>"
...
template:
metadata:
labels:
tags.datadoghq.com/env: "<ENV>"
tags.datadoghq.com/service: "<SERVICE>"
tags.datadoghq.com/version: "<VERSION>"
containers:
- ...
env:
- name: DD_ENV
valueFrom:
fieldRef:
fieldPath: metadata.labels['tags.datadoghq.com/env']
- name: DD_SERVICE
valueFrom:
fieldRef:
fieldPath: metadata.labels['tags.datadoghq.com/service']
- name: DD_VERSION
valueFrom:
fieldRef:
fieldPath: metadata.labels['tags.datadoghq.com/version']
Vous pouvez également utiliser les variables d’environnement des Attributs de Ressource OpenTelemetry pour définir les balises env, service et version :
containers:
- ...
env:
- name: OTEL_RESOURCE_ATTRIBUTES
value: "service.name=<SERVICE>,service.version=<VERSION>,deployment.environment=<ENV>"
- name: OTEL_SERVICE_NAME
value: "<SERVICE>"
Le OTEL_SERVICE_NAME la variable d'environnement a la priorité sur le service.name attribut dans le OTEL_RESOURCE_ATTRIBUTES variable d'environnement.
Configuration partielle
Métriques au niveau du pod
Pour configurer les métriques au niveau du pod, ajoutez les étiquettes standard suivantes (tags.datadoghq.com) à la spécification du pod d’un Déploiement, StatefulSet ou Job :
template:
metadata:
labels:
tags.datadoghq.com/env: "<ENV>"
tags.datadoghq.com/service: "<SERVICE>"
tags.datadoghq.com/version: "<VERSION>"
Ces étiquettes couvrent les métriques Kubernetes de CPU, mémoire, réseau et disque au niveau du pod, et peuvent être utilisées pour injecter DD_ENV, DD_SERVICE et DD_VERSION dans le conteneur de votre service via l’API descendante de Kubernetes.
Si vous avez plusieurs conteneurs par pod, vous pouvez spécifier des étiquettes standard par conteneur :
tags.datadoghq.com/<container-name>.env
tags.datadoghq.com/<container-name>.service
tags.datadoghq.com/<container-name>.version
Métriques d’état
Pour configurer des métriques Kubernetes State, procédez comme suit :
Définissez join_standard_tags sur true dans votre fichier de configuration. Consultez cet exemple de fichier de configuration pour l’emplacement du paramètre.
Ajoutez les mêmes étiquettes standard à la collection d’étiquettes pour la ressource parente, par exemple : Deployment.
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
tags.datadoghq.com/env: "<ENV>"
tags.datadoghq.com/service: "<SERVICE>"
tags.datadoghq.com/version: "<VERSION>"
spec:
template:
metadata:
labels:
tags.datadoghq.com/env: "<ENV>"
tags.datadoghq.com/service: "<SERVICE>"
tags.datadoghq.com/version: "<VERSION>"
SDK Datadog et client StatsD
Pour configurer les variables d’environnement du SDK Datadog et du client StatsD, utilisez l’API descendante de Kubernetes dans le format ci-dessous :
containers:
- ...
env:
- name: DD_ENV
valueFrom:
fieldRef:
fieldPath: metadata.labels['tags.datadoghq.com/env']
- name: DD_SERVICE
valueFrom:
fieldRef:
fieldPath: metadata.labels['tags.datadoghq.com/service']
- name: DD_VERSION
valueFrom:
fieldRef:
fieldPath: metadata.labels['tags.datadoghq.com/version']
Étiquetage automatique des versions pour les données APM dans des environnements conteneurisés
Vous pouvez utiliser la balise version dans APM pour surveiller les déploiements et pour identifier les déploiements de code défectueux grâce à la Détection automatique des déploiements défectueux.
Pour les données APM, Datadog définit la balise version pour vous dans l’ordre de priorité suivant. Si vous définissez manuellement version, Datadog ne remplace pas votre valeur version.
| Priorité | Valeur de version |
|---|
| 1 | {votre valeur de version} |
| 2 | {image_tag}_{premiers_7_chiffres_du_git_commit_sha} |
| 3 | {image_tag} ou {premiers_7_chiffres_du_git_commit_sha} si un seul est disponible |
Exigences :
- Version de l’Agent Datadog 7.52.0 ou supérieure
- Si vos services s’exécutent dans un environnement conteneurisé et que
image_tag est suffisant pour suivre les nouveaux déploiements de versions, aucune configuration supplémentaire n’est nécessaire. - Si vos services ne s’exécutent pas dans un environnement conteneurisé, ou si vous souhaitez également inclure le SHA Git, intégrez les informations Git dans vos artefacts de construction.
Configuration complète
Définissez les variables d’environnement DD_ENV, DD_SERVICE et DD_VERSION ainsi que les étiquettes Docker correspondantes pour votre conteneur afin d’obtenir l’ensemble complet d’étiquetage de service unifié.
Les valeurs pour service et version peuvent être fournies dans le Dockerfile :
ENV DD_SERVICE <SERVICE>
ENV DD_VERSION <VERSION>
LABEL com.datadoghq.tags.service="<SERVICE>"
LABEL com.datadoghq.tags.version="<VERSION>"
Puisque env est probablement déterminé au moment du déploiement, vous pouvez injecter la variable d’environnement et l’étiquette ultérieurement :
docker run -e DD_ENV=<ENV> -l com.datadoghq.tags.env=<ENV> ...
Vous pouvez également préférer définir tous les éléments au moment du déploiement :
docker run -e DD_ENV="<ENV>" \
-e DD_SERVICE="<SERVICE>" \
-e DD_VERSION="<VERSION>" \
-l com.datadoghq.tags.env="<ENV>" \
-l com.datadoghq.tags.service="<SERVICE>" \
-l com.datadoghq.tags.version="<VERSION>" \
...
Configuration partielle
Si votre service n’a pas besoin des variables d’environnement Datadog (par exemple, les logiciels tiers comme Redis, PostgreSQL, NGINX et les applications non tracées par l’APM), vous pouvez utiliser les étiquettes Docker :
com.datadoghq.tags.env
com.datadoghq.tags.service
com.datadoghq.tags.version
Comme expliqué pour la configuration complète, ces étiquettes peuvent être définies dans un Dockerfile ou comme arguments pour lancer le conteneur.
Étiquetage automatique des versions pour les données APM dans des environnements conteneurisés
Vous pouvez utiliser la balise version dans APM pour surveiller les déploiements et pour identifier les déploiements de code défectueux grâce à la Détection automatique des déploiements défectueux.
Pour les données APM, Datadog définit la balise version pour vous dans l’ordre de priorité suivant. Si vous définissez manuellement version, Datadog ne remplace pas votre valeur version.
| Priorité | Valeur de version |
|---|
| 1 | {votre valeur de version} |
| 2 | {image_tag}_{premiers_7_chiffres_du_git_commit_sha} |
| 3 | {image_tag} ou {premiers_7_chiffres_du_git_commit_sha} si un seul est disponible |
Exigences :
- Version de l’Agent Datadog 7.52.0 ou supérieure
- Si vos services s’exécutent dans un environnement conteneurisé et que
image_tag est suffisant pour suivre les nouveaux déploiements de versions, aucune configuration supplémentaire n’est nécessaire. - Si vos services ne s’exécutent pas dans un environnement conteneurisé, ou si vous souhaitez également inclure le SHA Git, intégrez les informations Git dans vos artefacts de construction.
Sur ECS Fargate utilisant Fluent Bit ou FireLens, l'étiquetage de service unifié n'est disponible que pour les métriques et les traces, pas pour la collecte de journaux.
Configuration complète
Définissez les variables d’environnement DD_ENV, DD_SERVICE et DD_VERSION (optionnelles avec étiquetage automatique de version) et les étiquettes Docker correspondantes dans l’environnement d’exécution de chaque conteneur de service pour obtenir l’ensemble complet d’étiquetage de service unifié. Par exemple, vous pouvez définir toute cette configuration à un seul endroit dans la définition de votre tâche ECS :
"environment": [
{
"name": "DD_ENV",
"value": "<ENV>"
},
{
"name": "DD_SERVICE",
"value": "<SERVICE>"
},
{
"name": "DD_VERSION",
"value": "<VERSION>"
}
],
"dockerLabels": {
"com.datadoghq.tags.env": "<ENV>",
"com.datadoghq.tags.service": "<SERVICE>",
"com.datadoghq.tags.version": "<VERSION>"
}
Sur ECS Fargate, vous devez ajouter ces étiquettes à votre conteneur d'application, pas au conteneur de l'Agent Datadog.
Configuration partielle
Si votre service n’utilise pas les variables d’environnement Datadog (par exemple, des logiciels tiers comme Redis, PostgreSQL, NGINX, ou des applications non tracées par la solution APM), vous pouvez utiliser les étiquettes Docker dans votre définition de tâche ECS :
"dockerLabels": {
"com.datadoghq.tags.env": "<ENV>",
"com.datadoghq.tags.service": "<SERVICE>",
"com.datadoghq.tags.version": "<VERSION>"
}
Étiquetage automatique des versions pour les données APM dans des environnements conteneurisés
Cette fonctionnalité est activée uniquement pour les données APM (Application Performance Monitoring).
Vous pouvez utiliser la balise version dans APM pour surveiller les déploiements et pour identifier les déploiements de code défectueux grâce à la Détection automatique des déploiements défectueux.
Pour les données APM, Datadog définit la balise version pour vous dans l’ordre de priorité suivant. Si vous définissez manuellement version, Datadog ne remplace pas votre valeur version.
| Priorité | Valeur de version |
|---|
| 1 | {votre valeur de version} |
| 2 | {image_tag}_{premiers_7_chiffres_du_git_commit_sha} |
| 3 | {image_tag} ou {premiers_7_chiffres_du_git_commit_sha} si un seul est disponible |
Exigences :
- Version de l’Agent Datadog 7.52.0 ou supérieure
- Si vos services s’exécutent dans un environnement conteneurisé et que
image_tag est suffisant pour suivre les nouveaux déploiements de versions, aucune configuration supplémentaire n’est nécessaire. - Si vos services ne s’exécutent pas dans un environnement conteneurisé, ou si vous souhaitez également inclure le SHA Git, intégrez les informations Git dans vos artefacts de construction.