Instrumentation APM à étape unique sur Kubernetes
Aperçu
Dans un environnement Kubernetes, utilisez l’instrumentation à étape unique (SSI) pour APM afin d’installer l’Agent Datadog et instrumenter vos applications avec les SDK Datadog en une seule étape.
Exigences
Activer APM sur vos applications
L'instrumentation à étape unique n'instrumente pas les applications dans l'espace de noms où l'Agent Datadog est installé. Installez l'Agent dans un espace de noms séparé où vous n'exécutez pas vos applications.
Suivez ces étapes pour activer l’instrumentation à étape unique sur l’ensemble de votre cluster. Cela envoie automatiquement des traces de toutes les applications écrites dans des langages pris en charge.
Remarque : Pour instrumenter uniquement des espaces de noms ou des pods spécifiques, consultez le ciblage des charges de travail dans Options avancées.
Dans Datadog, allez à la page Installer l’Agent Datadog sur Kubernetes.
Suivez les instructions à l’écran pour choisir votre méthode d’installation, sélectionner une clé API et configurer l’Opérateur ou le dépôt Helm.
Dans la section Configurer datadog-agent.yaml, allez à Configuration supplémentaire > Observabilité de l’application, et activez Instrumentation APM.
Déployez l’Agent en utilisant le fichier de configuration généré.
Redémarrez vos applications.
SSI ajoute un petit temps de démarrage aux applications instrumentées. Si ce surcoût n'est pas acceptable pour votre cas d'utilisation, contactez
le support Datadog.
Les étiquettes de service unifiées (UST) appliquent des étiquettes cohérentes à travers les traces, les métriques et les journaux, facilitant la navigation et la corrélation de vos données d’observabilité. Vous pouvez configurer les UST via l’extraction automatique d’étiquettes (recommandé), par configuration explicite avec ddTraceConfigs, ou dans les manifestes de déploiement.
Avec SSI, vous pouvez extraire automatiquement les valeurs UST des étiquettes et des métadonnées des pods sans modifier les déploiements individuels. Pour ce faire, configurez kubernetesResourcesLabelsAsTags pour mapper vos étiquettes Kubernetes existantes aux étiquettes de service Datadog.
Remarque : Cette méthode n’est pas compatible avec la configuration distante. Si vous utilisez la configuration distante, consultez Configurer les UST explicitement avec ddTraceConfigs.
Prérequis
| Composant | Version minimale |
|---|
datadog-agent | 7.69 |
datadog-operator | 1.16.0 |
datadog-helm-chart | 3.120.0 |
Configuration
Remplacez app.kubernetes.io/name dans l’exemple suivant par toute étiquette contenant le nom de votre service (par exemple, service.kubernetes.io/name ou component). Vous pouvez configurer plusieurs étiquettes de cette manière.
datadog:
# Automatically extract service names from Kubernetes labels
kubernetesResourcesLabelsAsTags:
pods:
app.kubernetes.io/name: service # Modern Kubernetes label
deployments.apps:
app.kubernetes.io/name: service
replicasets.apps:
app.kubernetes.io/name: service
# Set environment globally for the entire cluster
tags:
- "env:production"
apm:
instrumentation:
enabled: true
Avec cette configuration, Datadog définit automatiquement le tag service en utilisant la valeur de l’étiquette app.kubernetes.io/name pour toute charge de travail instrumentée qui inclut cette étiquette.
Dans la plupart des cas, la configuration automatique est suffisante. Cependant, si vous avez besoin d’un contrôle granulaire sur les paramètres pour des charges de travail spécifiques, utilisez ddTraceConfigs pour mapper explicitement les étiquettes aux configurations de service:
datadog:
kubernetesResourcesLabelsAsTags:
pods:
app.kubernetes.io/name: service
deployments.apps:
app.kubernetes.io/name: service
# Set environment globally for the entire cluster
tags:
- "env:production"
apm:
instrumentation:
enabled: true
targets:
- name: frontend-services
podSelector:
matchLabels:
tier: frontend
ddTraceConfigs:
- name: DD_SERVICE # Explicitly override service name
valueFrom:
fieldRef:
fieldPath: metadata.labels['app.kubernetes.io/name']
# DD_ENV inherited from cluster-level tags above
# DD_VERSION automatically extracted from image tags
Si votre configuration n’utilise pas d’étiquettes adaptées à l’extraction des UST, vous pouvez définir les UST directement dans vos manifestes de déploiement en utilisant des variables d’environnement. Cette approche nécessite de modifier chaque déploiement individuellement, mais offre un contrôle précis.
Pour des instructions complètes, voir configuration des UST pour les services Kubernetes.
Activez les produits et fonctionnalités dépendants du SDK
Après que SSI a chargé le SDK Datadog dans vos applications et activé le traçage distribué, vous pouvez configurer des produits supplémentaires qui dépendent du SDK :
Note: All variables accept true or false. DD_PROFILING_ENABLED also accepts auto, which profiles only eligible processes and is recommended for SSI.
Utilisez l’une des méthodes de configuration suivantes :
Configurez avec le ciblage des workloads (recommandé) :
Par défaut, l’instrumentation par étape unique instrumente tous les services dans tous les espaces de noms. Utilisez le ciblage des charges de travail pour limiter l’instrumentation à des espaces de noms, pods ou charges de travail spécifiques, et appliquez des configurations personnalisées.
Définir des variables d’environnement :
Activez les produits en définissant des variables d’environnement directement dans la configuration de votre application.
Options avancées
Utilisez les options avancées suivantes pour personnaliser le comportement de l’instrumentation à étape unique dans votre environnement. Ces paramètres sont optionnels et généralement nécessaires uniquement dans des configurations spécialisées.
SSI prend en charge plusieurs modes d’injection, qui contrôlent la manière dont les fichiers de l’injecteur et de la bibliothèque APM sont livrés à vos conteneurs d’application. Vous n’avez généralement pas besoin de configurer ce paramètre manuellement. Envisagez de l’ajuster si vous remarquez des délais de démarrage de pod significatifs ou une utilisation des ressources (CPU, mémoire) plus élevée que prévu lors de l’initialisation du pod. Pour en savoir plus sur le fonctionnement de l’injecteur, consultez Comportement de l’injecteur avec l’instrumentation à étape unique.
| Mode | Description | Exigences : |
|---|
init_container | Utilise des conteneurs d’initialisation pour copier les fichiers de l’injecteur et de la bibliothèque APM dans les conteneurs d’application. | Agent déployé avec Helm Chart ou Datadog Operator |
csi | En avant-première. Monte les fichiers de l’injecteur et de la bibliothèque APM en utilisant le driver CSI Datadog. Réduit le temps de démarrage du pod par rapport au mode conteneur d’initialisation. | Agent 7.76.0+, driver CSI 1.2.0+, Helm Chart 3.178.1+ ou Datadog Operator 1.25.0+ |
Avant d’utiliser le mode csi, installez et activez le driver CSI Datadog. Si vous déployez avec Helm, définissez également datadog.csi.enabled: true dans votre datadog-values.yaml. Consultez la documentation du driver CSI pour les étapes d’installation et les exigences spécifiques à l’environnement, telles que GKE Autopilot.
Pour définir le mode d’injection à l’échelle du cluster, ajoutez injectionMode à votre datadog-values.yaml :
datadog:
apm:
instrumentation:
injectionMode: <mode>
Valeurs prises en charge : init_container, csi.
Pour définir le mode d’injection à l’échelle du cluster, ajoutez injectionMode à votre datadog-agent.yaml :
features:
apm:
instrumentation:
injectionMode: <mode>
Valeurs prises en charge : init_container, csi.
Si vous utilisez Datadog Operator antérieur à 1.25.0, utilisez l’annotation pod pour remplacer le mode d’injection pour des pods spécifiques.
Pour remplacer le mode d’injection pour un pod spécifique, ajoutez l’annotation suivante à la spécification du pod :
metadata:
annotations:
admission.datadoghq.com/apm-inject.injection-mode: "<mode>"
Valeurs prises en charge : init_container, csi.
Cibler des charges de travail spécifiques
Par défaut, SSI instrumente tous les services dans tous les espaces de noms de votre cluster. Selon la version de votre Agent, utilisez l’une des méthodes de configuration suivantes pour affiner quels services sont instrumentés et comment.
Créez des blocs de ciblage en utilisant l’étiquette targets pour préciser quelles charges de travail doivent être instrumentées et quelles configurations appliquer.
Chaque bloc cible a les clés suivantes :
| Clé | Description |
|---|
name | Le nom du bloc cible. Cela n’a aucun effet sur l’état de surveillance et est utilisé uniquement comme métadonnées. |
namespaceSelector | Les espaces de noms à instrumenter. Spécifiez en utilisant un ou plusieurs de : - matchNames : Une liste d’un ou plusieurs noms d’espace de noms. - matchLabels : Une liste d’une ou plusieurs étiquettes définies dans des paires {key,value}. - matchExpressions : Une liste d’exigences de sélection d’espace de noms.
Les espaces de noms doivent répondre à tous les critères pour correspondre. Pour plus de détails, voir la documentation du sélecteur Kubernetes. |
podSelector | Les pod(s) à instrumenter. Spécifiez en utilisant un ou plusieurs de : - matchLabels : Une liste d’une ou plusieurs étiquettes définies dans des paires {key,value}. - matchExpressions : Une liste d’exigences de sélection de pod.
Les pods doivent répondre à tous les critères pour correspondre. Pour plus de détails, consultez la documentation des sélecteurs Kubernetes. |
ddTraceVersions | La version du Datadog APM SDK à utiliser pour chaque langage. |
ddTraceConfigs | Configurations du SDK APM qui permettent de définir des tags de service unifiés, activant des produits dépendants du SDK au-delà du traçage, et personnalisant d’autres paramètres APM. |
Le fichier que vous devez configurer dépend de la manière dont vous avez activé l’instrumentation par étape unique :
- Si vous avez activé le SSI avec Datadog Operator, modifiez
datadog-agent.yaml. - Si vous avez activé le SSI avec Helm, modifiez
datadog-values.yaml.
Remarque : Les cibles sont évaluées dans l’ordre ; la première correspondance a la priorité.
Configurations d’exemple
Examinez les exemples suivants démontrant comment sélectionner des services spécifiques :
Cette configuration :
- active l’APM pour tous les espaces de noms sauf le
jenkins espace de noms.- Remarque : utilisez
enabledNamespaces pour désactiver pour tous les espaces de noms sauf ceux listés.
- indique à Datadog d’instrumenter les applications Java avec le SDK Java par défaut et les applications Python avec
v.3.1.0 du SDK Python.
apm:
instrumentation:
enabled: true
disabledNamespaces:
- "jenkins"
targets:
- name: "all-remaining-services"
ddTraceVersions:
java: "default"
python: "3.1.0"
Cette configuration crée deux blocs de cibles :
- Le premier bloc (nommé
login-service_namespace) :- active l’APM pour les services dans l’espace de noms
login-service. - indique à Datadog d’instrumenter les services dans cet espace de noms avec la version par défaut du SDK Java.
- définit la variable d’environnement
DD_PROFILING_ENABLED pour ce groupe cible.
- Le deuxième bloc (nommé
billing-service_apps)- active l’APM pour les services dans le(s) espace(s) de noms avec l’étiquette
app:billing-service. - indique à Datadog d’instrumenter cet ensemble de services avec
v3.1.0 du SDK Python.
apm:
instrumentation:
enabled: true
targets:
- name: "login-service_namespace"
namespaceSelector:
matchNames:
- "login-service"
ddTraceVersions:
java: "default"
ddTraceConfigs:
- name: "DD_PROFILING_ENABLED" ## profiling is enabled for all services in this namespace
value: "auto"
- name: "billing-service_apps"
namespaceSelector:
matchLabels:
app: "billing-service"
ddTraceVersions:
python: "3.1.0"
Cette configuration effectue les actions suivantes :
- active APM pour les pods avec les étiquettes suivantes :
app:db-user, qui marque les pods exécutant l’application db-user.webserver:routing, qui marque les pods exécutant l’application request-router.
- indique à Datadog d’utiliser les versions par défaut des SDK Datadog Tracer.
- définit les variables d’environnement Datadog à appliquer à chaque groupe cible et configure les SDKs.
apm:
instrumentation:
enabled: true
targets:
- name: "db-user"
podSelector:
matchLabels:
app: "db-user"
ddTraceVersions:
java: "default"
ddTraceConfigs: ## trace configs set for services in matching pods
- name: "DD_DATA_STREAMS_ENABLED"
value: "true"
- name: "user-request-router"
podSelector:
matchLabels:
webserver: "user"
ddTraceVersions:
php: "default"
Cette configuration :
- active l’APM pour les pods étiquetés
app:password-resolver à l’intérieur de l’espace de noms login-service. - indique à Datadog d’utiliser la version par défaut du SDK Datadog Java Tracer.
- définit les variables d’environnement Datadog à appliquer à cette cible.
apm:
instrumentation:
enabled: true
targets:
- name: "login-service-namespace"
namespaceSelector:
matchNames:
- "login-service"
podSelector:
matchLabels:
app: "password-resolver"
ddTraceVersions:
java: "default"
ddTraceConfigs:
- name: "DD_PROFILING_ENABLED"
value: "auto"
Cette configuration active APM pour tous les pods sauf ceux qui ont l’une des étiquettes app=app1 ou app=app2.
apm:
instrumentation:
enabled: true
targets:
- name: "default-target"
podSelector:
matchExpressions:
- key: app
operator: NotIn
values:
- app1
- app2
Cette configuration active App and API Protection (AAP) et Continuous Profiler pour les services dans l’espace de noms web-apps, en utilisant ddTraceConfigs pour définir les variables d’environnement requises :
apm:
instrumentation:
enabled: true
targets:
- name: "web-apps-with-security"
namespaceSelector:
matchNames:
- "web-apps"
ddTraceVersions:
java: "default"
python: "default"
ddTraceConfigs:
- name: "DD_APPSEC_ENABLED"
value: "true"
- name: "DD_PROFILING_ENABLED"
value: "auto"
Pour une liste complète des produits que vous pouvez activer via SSI, voir Activer des produits et fonctionnalités dépendants du SDK.
Activez ou désactivez l’instrumentation pour les espaces de noms
Vous pouvez choisir d’activer ou de désactiver l’instrumentation pour les applications dans des espaces de noms spécifiques. Vous ne pouvez définir que enabledNamespaces ou disabledNamespaces, pas les deux.
Le fichier que vous devez configurer dépend de si vous avez activé l’instrumentation par étape unique avec Datadog Operator ou Helm :
Pour activer l’instrumentation pour des espaces de noms spécifiques, ajoutez la configuration enabledNamespaces à datadog-agent.yaml :
features:
apm:
instrumentation:
enabled: true
enabledNamespaces: # Add namespaces to instrument
- default
- applications
Pour désactiver l’instrumentation pour des espaces de noms spécifiques, ajoutez la configuration disabledNamespaces à datadog-agent.yaml :
features:
apm:
instrumentation:
enabled: true
disabledNamespaces: # Add namespaces to not instrument
- default
- applications
Pour activer l’instrumentation pour des espaces de noms spécifiques, ajoutez la configuration enabledNamespaces à datadog-values.yaml :
datadog:
apm:
instrumentation:
enabled: true
enabledNamespaces: # Add namespaces to instrument
- namespace_1
- namespace_2
Pour désactiver l’instrumentation pour des espaces de noms spécifiques, ajoutez la configuration disabledNamespaces à datadog-values.yaml :
datadog:
apm:
instrumentation:
enabled: true
disabledNamespaces: # Add namespaces to not instrument
- namespace_1
- namespace_2
Spécifiez les versions SDK
À partir de Datadog Cluster Agent v7.52.0+, vous pouvez instrumenter automatiquement un sous-ensemble de vos applications, en fonction des SDK que vous spécifiez.
Spécifiez les SDK Datadog et leurs versions pour instrumenter automatiquement les applications écrites dans ces langages. Vous pouvez configurer cela de deux manières, qui sont appliquées dans l’ordre de priorité suivant :
- Spécifiez au niveau du service , ou
- Spécifiez au niveau du cluster .
Par défaut : Si vous ne spécifiez aucune version de bibliothèque, les applications écrites dans des langages pris en charge sont automatiquement instrumentées en utilisant les dernières versions SDK.
Spécifiez au niveau du service
Pour instrumenter automatiquement les applications dans des pods spécifiques, ajoutez l’annotation de langue appropriée et la version de la bibliothèque pour votre application dans votre spécification de pod :
| Langue | Annotation de pod |
|---|
| Java | admission.datadoghq.com/java-lib.version: "<CONTAINER IMAGE TAG>" |
| Node.js | admission.datadoghq.com/js-lib.version: "<CONTAINER IMAGE TAG>" |
| Python | admission.datadoghq.com/python-lib.version: "<CONTAINER IMAGE TAG>" |
| .NET | admission.datadoghq.com/dotnet-lib.version: "<CONTAINER IMAGE TAG>" |
| Ruby | admission.datadoghq.com/ruby-lib.version: "<CONTAINER IMAGE TAG>" |
| PHP | admission.datadoghq.com/php-lib.version: "<CONTAINER IMAGE TAG>" |
Remplacez <CONTAINER IMAGE TAG> par la version de bibliothèque souhaitée. Les versions disponibles sont listées dans les registres de conteneurs Datadog et les dépôts de code source des traceurs pour chaque langage :
Faites preuve de prudence lors de l'utilisation du latest tag, car les versions majeures des bibliothèques peuvent introduire des changements incompatibles.
Par exemple, pour instrumenter automatiquement les applications Java :
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
# ...
spec:
template:
metadata:
annotations:
admission.datadoghq.com/java-lib.version: "<CONTAINER IMAGE TAG>"
spec:
containers:
- # ...
Spécifiez au niveau du cluster
Si vous n’activez pas l’instrumentation automatique pour des pods spécifiques à l’aide d’annotations, vous pouvez spécifier les langages à instrumenter dans l’ensemble du cluster en utilisant la configuration SSI. Lorsque apm.instrumentation.libVersions est défini, seules les applications écrites dans les langages spécifiés sont instrumentées, en utilisant les versions de bibliothèque spécifiées.
Le fichier que vous devez configurer dépend de si vous avez activé l’instrumentation par étape unique avec Datadog Operator ou Helm :
Par exemple, pour instrumenter les applications .NET, Python et Node.js, ajoutez la configuration suivante à votre fichier datadog-agent.yaml :
features:
apm:
instrumentation:
enabled: true
libVersions: # Add any libraries and versions you want to set
dotnet: "x.x.x"
python: "x.x.x"
js: "x.x.x"
Par exemple, pour instrumenter les applications .NET, Python et Node.js, ajoutez la configuration suivante à votre fichier datadog-values.yaml :
datadog:
apm:
instrumentation:
enabled: true
libVersions: # Add any libraries and versions you want to set
dotnet: "x.x.x"
python: "x.x.x"
js: "x.x.x"
Changez le registre d’images par défaut
Datadog publie des images de bibliothèques d’instrumentation sur gcr.io, Docker Hub et Amazon ECR :
La variable d’environnement DD_ADMISSION_CONTROLLER_AUTO_INSTRUMENTATION_CONTAINER_REGISTRY dans la configuration du Datadog Cluster Agent spécifie le registre utilisé par le Contrôleur d’Admission. La valeur par défaut est gcr.io/datadoghq.
Vous pouvez récupérer le SDK depuis un registre différent en le changeant pour docker.io/datadog, public.ecr.aws/datadog, ou une autre URL si vous hébergez les images dans un registre de conteneurs local.
Pour obtenir des instructions sur la modification de votre registre de conteneurs, consultez Changing Your Container Registry.
Utilisez un registre de conteneurs privé
Si votre organisation n’autorise pas les récupérations directes depuis des registres publics (comme gcr.io, docker.io, ou public.ecr.aws), vous pouvez héberger les images Datadog requises en interne et configurer le Contrôleur d’Admission pour les utiliser.
Pour utiliser SSI avec un registre de conteneurs privé :
Suivez ces instructions pour mettre en miroir les images de conteneurs de Datadog sur votre registre privé.
Vous n’avez besoin que des images pour les langages que vous instrumentez. Si vous n’êtes pas certain de celles dont vous avez besoin, voici une configuration de base couvrant la plupart des cas d’utilisation :
apm-injectdd-lib-java-initdd-lib-python-initdd-lib-dotnet-initdd-lib-php-initdd-lib-ruby-initdd-lib-js-init
Vous pouvez trouver ces images sur gcr.io, Docker Hub, ou Amazon ECR Public Gallery.
Taguez les images selon votre configuration.
Les versions que vous reflétez doivent correspondre aux versions configurées dans vos charges de travail, qui peuvent être définies de l’une des manières suivantes :
- globalement dans la configuration de l’Agent en utilisant
ddTraceVersions, ou - per-pod utilisant des annotations comme
admission.datadoghq.com/java-lib.version.
Si aucune version n’est explicitement configurée, la version par défaut (0) est utilisée.
Exemple :
apm:
instrumentation:
enabled: true
targets:
- name: "default-target"
ddTraceVersions:
java: "1"
python: "3"
Cette configuration nécessite les tags d’image suivantes :
apm-inject:0dd-lib-java-init:1dd-lib-python-init:3
Mettez à jour la configuration de l’Agent de Cluster pour utiliser votre registre privé.
Définissez la variable d’environnement DD_ADMISSION_CONTROLLER_AUTO_INSTRUMENTATION_CONTAINER_REGISTRY dans la configuration de votre Agent de Cluster pour utiliser votre registre privé.
Pour obtenir plus de détails sur la modification de votre registre de conteneurs, consultez Changing Your Container Registry.
Utilisation d’une Interface de Réseau de Conteneurs sur EKS
Lors de l’utilisation d’un CNI comme Calico, les nœuds du plan de contrôle ne peuvent pas initier de connexions réseau au Contrôleur d’Admission de Datadog et signalent une erreur “L’adresse n’est pas autorisée”.
Pour utiliser l’instrumentation à Étape Unique, modifiez l’Agent de Cluster de Datadog avec le paramètre useHostNetwork: true.
datadog:
...
clusterAgent:
useHostNetwork: true
admissionController:
...
Supprimez l’instrumentation APM à Étape Unique de votre Agent
Si vous ne souhaitez pas collecter de données de trace pour un service, un hôte, une VM ou un conteneur particulier, complétez les étapes suivantes :
Supprimez l’instrumentation pour des services spécifiques
Pour supprimer l’instrumentation APM et arrêter l’envoi de traces d’un service spécifique, vous pouvez faire l’une des choses suivantes :
Utilisez des règles d’instrumentation pour cibler des charges de travail spécifiques (recommandé)
Avec les règles d’instrumentation (disponibles pour l’Agent v7.64+), vous pouvez activer et désactiver le traçage pour des applications spécifiques. Voir les détails de configuration ici.
Utilisez le Contrôleur d’Admission de Datadog
En alternative, ou pour une version de l’agent qui ne prend pas en charge les règles d’instrumentation, vous pouvez également désactiver la mutation de pod en ajoutant une étiquette à votre pod.
En plus de désactiver SSI, les étapes suivantes désactivent d'autres webhooks de mutation. Utilisez avec précaution.
- Définissez l’étiquette
admission.datadoghq.com/enabled: sur "false" pour la spécification du pod :spec:
template:
metadata:
labels:
admission.datadoghq.com/enabled: "false"
- Appliquez la configuration :
kubectl apply -f /path/to/your/deployment.yaml
- Redémarrez les services pour lesquels vous souhaitez supprimer l’instrumentation.
Supprimez APM pour tous les services sur l’infrastructure
Pour arrêter la production de traces, désinstallez APM et redémarrez l’infrastructure :
Le fichier que vous devez configurer dépend de si vous avez activé l’instrumentation par étape unique avec Datadog Operator ou Helm :
Définissez instrumentation.enabled=false dans datadog-agent.yaml :
features:
apm:
instrumentation:
enabled: false
Déployez l’Agent Datadog avec le fichier de configuration mis à jour :
kubectl apply -f /path/to/your/datadog-agent.yaml
Définissez instrumentation.enabled=false dans datadog-values.yaml :
datadog:
apm:
instrumentation:
enabled: false
Exécutez la commande suivante :
helm upgrade datadog-agent -f datadog-values.yaml datadog/datadog
Meilleures pratiques
Après avoir activé SSI, tous les processus pris en charge dans le cluster sont automatiquement instrumentés et commencent à produire des traces en quelques minutes.
Pour contrôler où APM est activé et réduire la surcharge, envisagez les meilleures pratiques suivantes.
Instrumentation par défaut vs. opt-in
| Mode | Comportement | Quand utiliser |
|---|
| Par défaut | Tous les processus pris en charge dans le cluster sont instrumentés. | Petits clusters ou prototypes. |
| Opt-in | Utilisez les règles d’instrumentation pour restreindre l’instrumentation à des espaces de noms ou des pods spécifiques. | Clusters de production, déploiements progressifs ou cas d’utilisation sensibles aux coûts. |
Exemple : Activez l’instrumentation pour des pods spécifiques
Ajoutez une étiquette significative (par exemple, datadoghq.com/apm-instrumentation: "enabled") aux métadonnées de déploiement et au modèle de pod.
apiVersion: apps/v1
kind: Deployment
metadata:
name: checkout-api
labels:
app: checkout-api
datadoghq.com/apm-instrumentation: "enabled" # opt-in label (cluster-wide)
spec:
replicas: 3
selector:
matchLabels:
app: checkout-api
template:
metadata:
labels:
app: checkout-api
datadoghq.com/apm-instrumentation: "enabled" # opt-in label must be on *template*, too
# Unified Service Tags (recommended)
tags.datadoghq.com/service: "checkout-api"
tags.datadoghq.com/env: "prod"
tags.datadoghq.com/version: "2025-06-10"
spec:
containers:
- name: api
image: my-registry/checkout:latest
ports:
- containerPort: 8080
Dans votre configuration Helm de l’Agent Datadog, activez SSI et utilisez podSelector pour injecter uniquement dans les pods avec l’étiquette d’opt-in correspondante.
apm:
instrumentation:
enabled: true
targets:
- name: apm-instrumented
podSelector:
matchLabels:
datadoghq.com/apm-instrumentation: "enabled"
Voir les règles d’instrumentation pour des exemples supplémentaires.
Utilisez ddTraceVersions dans votre configuration Helm de l’Agent pour contrôler à la fois la langue et la version du SDK Datadog. Cela empêche le téléchargement de SDK inutiles, ce qui minimise l’empreinte du conteneur d’initialisation, réduit la taille de l’image et permet des mises à niveau de traceurs plus délibérées (par exemple, pour répondre aux exigences de conformité ou simplifier le débogage).
Exemple : Spécifiez un SDK Java pour un espace de noms
Seules les applications Java s’exécutent dans l’espace de noms login-service. Pour éviter de télécharger d’autres SDK, configurez l’Agent pour cibler cet espace de noms et injecter uniquement la version 1.48.2 du SDK Java.
targets:
- name: login-service
namespaceSelector:
matchNames: ["login-service"]
ddTraceVersions:
java: "1.48.2" # pin version
Configuration par défaut
Si un pod ne correspond à aucune règle ddTraceVersions, la cible par défaut s’applique.
targets:
- name: default-target # tag any pod *without* an override
ddTraceVersions:
java: "1" # stay on latest v1.x
python: "3" # stay on latest v3.x
js: "5" # NodeJS
php: "1"
dotnet: "3"
Dépannage
Si vous rencontrez des problèmes pour activer APM avec SSI, consultez le guide de dépannage SSI.
Lectures complémentaires
Documentation, liens et articles supplémentaires utiles: