Extraction de tags dans Kubernetes

L’Agent peut créer et attribuer des tags à toutes les métriques, toutes les traces et tous les logs émis par un pod, en fonction de ses étiquettes ou de ses annotations.

Si vous exécutez l’Agent en tant que binaire sur un host, configurez vos extractions de tag en suivant les instructions de l’onglet Agent. Si vous exécutez l’Agent en tant que conteneur dans votre cluster Kubernetes, configurez vos extractions de tag en suivant les instructions de l’onglet Agent conteneurisé.

Tags prêts à l’emploi

L’Agent peut découvrir automatiquement des tags et les ajouter à toutes les données générées par des pods entiers ou par un conteneur spécifique dans un pod. La liste des tags ajoutés automatiquement dépend de la configuration de cardinalité de l’Agent.

TagCardinalitéSourcePrérequis
container_idÉlevéeStatut de podS.O.
display_container_nameÉlevéeStatut de podS.O.
pod_nameOrchestrateurMétadonnées de podS.O.
oshift_deploymentOrchestrateurAnnotation de pod openshift.io/deployment.nameL’environnement OpenShift et l’annotation de pod doivent exister.
kube_ownerref_nameOrchestrateurOwnerref de podLe pod doit avoir un propriétaire.
kube_jobOrchestrateurOwnerref de podLe pod doit être ajouté à un cronjob.
kube_jobFaibleOwnerref de podLe pod doit être ajouté à un job.
kube_replica_setFaibleOwnerref de podLe pod doit être ajouté à un ReplicaSet.
kube_serviceFaibleDécouverte de service KubernetesLe pod se trouve derrière un service Kubernetes.
kube_daemon_setFaibleOwnerref de podLe pod doit être ajouté à un DaemonSet.
kube_container_nameFaibleStatut de podS.O.
kube_namespaceFaibleMétadonnées de podS.O.
kube_app_nameFaibleÉtiquette de pod app.kubernetes.io/nameL’étiquette de pod doit exister.
kube_app_instanceFaibleÉtiquette de pod app.kubernetes.io/instanceL’étiquette de pod doit exister.
kube_app_versionFaibleÉtiquette de pod app.kubernetes.io/versionL’étiquette de pod doit exister.
kube_app_componentFaibleÉtiquette de pod app.kubernetes.io/componentL’étiquette de pod doit exister.
kube_app_part_ofFaibleÉtiquette de pod app.kubernetes.io/part-ofL’étiquette de pod doit exister.
kube_app_managed_byFaibleÉtiquette de pod app.kubernetes.io/managed-byL’étiquette de pod doit exister.
envFaibleÉtiquette de pod tags.datadoghq.com/env ou variable d’environnement de container DD_ENVLe tagging de service unifié est activé.
versionFaibleÉtiquette de pod tags.datadoghq.com/version ou variable d’environnement de conteneur DD_VERSIONLe tagging de service unifié est activé.
serviceFaibleÉtiquette de pod tags.datadoghq.com/service ou variable d’environnement de conteneur DD_SERVICELe tagging de service unifié est activé.
pod_phaseFaibleStatut de podS.O.
oshift_deployment_configFaibleAnnotation de pod openshift.io/deployment-config.nameL’environnement OpenShift et l’annotation de pod doivent exister.
kube_ownerref_kindFaibleOwnerref de podLe pod doit avoir un propriétaire.
kube_deploymentFaibleOwnerref de podLe pod doit être ajouté à un déploiement.
kube_replication_controllerFaibleOwnerref de podLe pod doit être ajouté à un contrôleur de réplication.
kube_stateful_setFaibleOwnerref de podLe pod doit être ajouté à un statefulset.
persistentvolumeclaimFaibleSpécification de podUne PVC (demande de volume persistant) doit être ajoutée au pod.
kube_cronjobFaibleOwnerref de podUn pod doit être ajouté à un cronjob.
image_nameFaibleSpécification de podS.O.
short_imageFaibleSpécification de podS.O.
image_tagFaibleSpécification de podS.O.
eks_fargate_nodeFaibleSpécification de podEnvironnement EKS Fargate

Tag host

L’Agent peut ajouter des informations sur l’environnement Kubernetes sous la forme de tags de host.

TagCardinalitéSourcePrérequis
kube_cluster_nameFaibleVariable d’environnement DD_CLUSTER_NAME ou intégration de fournisseur cloudLa variable d’environnement DD_CLUSTER_NAME ou l’intégration de fournisseur cloud est activée.
kube_node_roleFaibleÉtiquette de nœud node-role.kubernetes.io/<role>L’étiquette de nœud doit exister.

Récupération automatique des tags

À partir de la version 6.10+ de l’Agent, l’Agent peut automatiquement récupérer les tags des annotations de pod. Il est ainsi capable d’associer des tags à l’ensemble des données envoyées par un pod entier ou par un conteneur spécifique dans ce pod.

Datadog vous conseille d’utiliser le tagging de service unifié pour mieux unifier vos tags dans les environnements conteneurisés. Le tagging de service unifié permet de lier les données de télémétrie Datadog entre elles via trois tags standards : env, service et version. Pour découvrir comment configurer le tagging unifié pour votre environnement, consultez la documentation dédiée au tagging de service unifié.

Pour appliquer un tag <CLÉ_TAG>:<VALEUR_TAG> à l’ensemble des données envoyées par un pod donné et recueillies par l’Agent, utilisez l’annotation suivante sur votre pod :

annotations:
  ad.datadoghq.com/tags: '{"<CLÉ_TAG>": "<VALEUR_TAG>","<CLÉ_TAG_1>": "<VALEUR_TAG_1>"}'

Si vous souhaitez appliquer un tag <CLÉ_TAG>:<VALEUR_TAG> à un conteneur <IDENTIFICATEUR_CONTENEUR> spécifique dans un pod, utilisez l’annotation suivante sur votre pod :

annotations:
  ad.datadoghq.com/<IDENTIFICATEUR_CONTENEUR>.tags: '{"<CLÉ_TAG>": "<VALEUR_TAG>","<CLÉ_TAG_1>": "<VALEUR_TAG_1>"}'

À partir de la version 7.17+ de l’Agent, l’Agent peut automatiquement récupérer les tags à partir des étiquettes Docker. Il peut ainsi appliquer des tags personnalisés à l’ensemble des données envoyées par un conteneur, sans qu’il soit nécessaire de modifier son fichier datadog.yaml.

com.datadoghq.ad.tags: '["<CLÉ_TAG>:VALEUR_TAG", "<CLÉ_TAG_1>:<VALEUR_TAG_1>"]'

Étiquettes de nœud comme tags

À partir de la version 6.0+ de l’Agent, l’Agent peut recueillir les étiquettes d’un nœud donné sous la forme de tags et les appliquer à l’ensemble des métriques envoyées par l’ensemble des pods sur ce nœud :

Pour extraire une étiquette de nœud <ÉTIQUETTE_NŒUD> donnée et la transformer en clé de tag <CLÉ_TAG> dans Datadog, ajoutez la variable d’environnement suivante à l’Agent Datadog :

DD_KUBERNETES_NODE_LABELS_AS_TAGS='{"<ÉTIQUETTE_NŒUD>": "<CLÉ_TAG>"}'

Par exemple, il est possible d’utiliser la configuration suivante :

DD_KUBERNETES_NODE_LABELS_AS_TAGS='{"app":"kube_app"}'

Pour les versions 7.24.0 et ultérieures de l’Agent, utilisez la configuration de variable d’environnement suivante pour appliquer l’ensemble des étiquettes de nœud en tant que tags à vos métriques. Dans cet exemple, les noms des tags sont précédés de <PRÉFIXE>_ :

DD_KUBERNETES_NODE_LABELS_AS_TAGS='{"*":"<PRÉFIXE>_%%label%%"}'

Remarque : les métriques custom peuvent avoir une incidence sur votre facturation. Consultez la page de facturation des métriques custom pour en savoir plus.

Pour extraire une étiquette de nœud <ÉTIQUETTE_NŒUD> donnée et la transformer en clé de tag <CLÉ_TAG> dans Datadog, ajoutez le bloc de configuration suivant dans le fichier de configuration datadog.yaml de l’Agent :

kubernetes_node_labels_as_tags:
  <ÉTIQUETTE_NŒUD>: <CLÉ_TAG>

Par exemple, il est possible d’utiliser la configuration suivante :

kubernetes_node_labels_as_tags:
  app: kube_app

Étiquettes de pod comme tags

À partir de la version 6.0+ de l’Agent, l’Agent peut recueillir les étiquettes d’un pod donné sous la forme de tags et les appliquer à l’ensemble des métriques envoyées par ce pod :

Pour extraire une étiquette de nœud <ÉTIQUETTE_POD> donnée et la transformer en clé de tag <CLÉ_TAG> dans Datadog, ajoutez la variable d’environnement suivante à l’Agent Datadog :

DD_KUBERNETES_POD_LABELS_AS_TAGS='{"<ÉTIQUETTE_POD>": "<CLÉ_TAG>"}'

Par exemple, il est possible d’utiliser la configuration suivante :

DD_KUBERNETES_POD_LABELS_AS_TAGS='{"app":"kube_app"}'

Pour la version >= 6.8.0 de l’Agent, utilisez la configuration de variable d’environnement suivante pour appliquer l’ensemble des étiquettes de pod comme tags à vos métriques. Dans cet exemple, les noms de tag sont précédés de <PRÉFIXE>_ :

DD_KUBERNETES_POD_LABELS_AS_TAGS='{"*":"<PRÉFIXE>_%%label%%"}'

Remarque : les métriques custom peuvent avoir une incidence sur votre facturation. Consultez la page de facturation des métriques custom pour en savoir plus.

Pour extraire une étiquette de pod <ÉTIQUETTE_POD> donnée et la transformer en clé de tag <CLÉ_TAG> dans Datadog, ajoutez le bloc de configuration suivant dans le fichier de configuration datadog.yaml de l’Agent :

kubernetes_pod_labels_as_tags:
  <ÉTIQUETTE_POD>: <CLÉ_TAG>

Par exemple, il est possible d’utiliser la configuration suivante :

kubernetes_pod_labels_as_tags:
  app: kube_app

Pour la version >= 6.8.0 de l’Agent, utilisez la configuration de variable d’environnement suivante pour appliquer l’ensemble des étiquettes de pod comme tags à vos métriques. Dans cet exemple, les noms de tag sont précédés de <PRÉFIXE>_ :

kubernetes_pod_labels_as_tags:
  *: <PRÉFIXE>_%%label%%

Remarque : les métriques custom peuvent avoir une incidence sur vos coûts. Consultez la section [Facturation des métriques custom][3] pour en savoir plus.

Annotations de pod comme tags

À partir de la version 6.0+ de l’Agent, l’Agent peut recueillir les annotations d’un pod donné sous la forme de tags et les appliquer à l’ensemble des métriques envoyées par ce pod :

Pour extraire une étiquette de pod <ANNOTATION_POD> donnée et la transformer en clé de tag <CLÉ_TAG> dans Datadog, ajoutez la variable d’environnement suivante à l’Agent Datadog :

DD_KUBERNETES_POD_ANNOTATIONS_AS_TAGS='{"<ANNOTATION_POD>": "<CLÉ_TAG>"}'

Par exemple, il est possible d’utiliser la configuration suivante :

DD_KUBERNETES_POD_ANNOTATIONS_AS_TAGS='{"app":"kube_app"}'

Pour les versions 7.24.0 et ultérieures de l’Agent, utilisez la configuration de variable d’environnement suivante pour appliquer l’ensemble des annotations de pod en tant que tags à vos métriques. Dans cet exemple, les noms des tags sont précédés de <PRÉFIXE>_ :

DD_KUBERNETES_POD_ANNOTATIONS_AS_TAGS='{"*":"<PRÉFIXE>_%%annotation%%"}'

Remarque : les métriques custom peuvent avoir une incidence sur votre facturation. Consultez la page de facturation des métriques custom pour en savoir plus.

Pour extraire une annotation de pod <ANNOTATION_POD> donnée et la transformer en clé de tag <CLÉ_TAG> dans Datadog, ajoutez le bloc de configuration suivant dans le fichier de configuration datadog.yaml de l’Agent :

kubernetes_pod_annotations_as_tags:
  <ANNOTATION_POD>: <CLÉ_TAG>

Par exemple, il est possible d’utiliser la configuration suivante :

kubernetes_pod_annotations_as_tags:
  app: kube_app

Étiquettes d’espace de nommage en tant que tags

À partir de la version 7.27+ de l’Agent, l’Agent peut recueillir les étiquettes d’un espace de nommage donné sous la forme de tags et les appliquer à l’ensemble des métriques envoyées par tous les pods sur cet espace de nommage :

Pour extraire une étiquette d’espace de nommage <ÉTIQUETTE_ESPACE_DE_NOMMAGE> donnée et la transformer en clé de tag <CLÉ_TAG> dans Datadog, ajoutez la variable d’environnement suivante à l’Agent Datadog :

DD_KUBERNETES_NAMESPACE_LABELS_AS_TAGS='{"<ÉTIQUETTE_ESPACE_DE_NOMMAGE>": "<CLÉ_TAG>"}'

Par exemple, il est possible d’utiliser la configuration suivante :

DD_KUBERNETES_NAMESPACE_LABELS_AS_TAGS='{"app":"kube_app"}'

Utilisez la configuration de variable d’environnement suivante pour appliquer l’ensemble des étiquettes d’espace de nommage comme tags à vos métriques. Dans cet exemple, les noms de tag sont précédés de <PRÉFIXE>_ :

DD_KUBERNETES_NAMESPACE_LABELS_AS_TAGS='{"*":"<PRÉFIXE>_%%label%%"}'

Remarque : les métriques custom peuvent avoir une incidence sur votre facturation. Consultez la page de facturation des métriques custom pour en savoir plus.

Pour extraire une étiquette d’espace de nommage <ÉTIQUETTE_ESPACE_DE_NOMMAGE> donnée et la transformer en clé de tag <CLÉ_TAG> dans Datadog, ajoutez le bloc de configuration suivant dans le fichier de configuration datadog.yaml de l’Agent :

kubernetes_namespace_labels_as_tags:
  <ÉTIQUETTE_ESPACE_DE_NOMMAGE>: <CLÉ_TAG>

Par exemple, il est possible d’utiliser la configuration suivante :

kubernetes_namespace_labels_as_tags:
  app: kube_app

Variables d’environnement de conteneur en tant que tags

À partir de la version 7.32+ de l’Agent, l’Agent peut recueillir des variables d’environnement de conteneur sous la forme de tags et les appliquer à l’ensemble des métriques correspondant au conteneur. Les conteneurs docker et containerd sont pris en charge :

Pour extraire une variable d’environnement <VARIABLE_ENVIRONNEMENT> donnée et la transformer en clé de tag <CLÉ_TAG> dans Datadog, ajoutez la variable d’environnement suivante à l’Agent Datadog :

DD_CONTAINER_ENV_AS_TAGS='{"<VARIABLE_ENVIRONNEMENT>": "<CLÉ_TAG>"}'

Par exemple :

DD_CONTAINER_ENV_AS_TAGS='{"app":"kube_app"}'

Remarque : les métriques custom peuvent avoir une incidence sur vos coûts. Consultez la section Facturation des métriques custom pour en savoir plus.

Pour extraire une variable d’environnement <VARIABLE_ENVIRONNEMENT> donnée et la transformer en clé de tag <CLÉ_TAG> dans Datadog, ajoutez le bloc de configuration suivant dans le fichier de configuration datadog.yaml de l’Agent :

container_env_as_tags:
  <VARIABLE_ENVIRONNEMENT>: <CLÉ_TAG>

Par exemple :

container_env_as_tags:
  app: kube_app

Étiquettes de conteneur en tant que tags

À partir de la version 7.33+ de l’Agent, l’Agent peut recueillir des étiquettes de conteneur sous la forme de tags et les appliquer à l’ensemble des métriques associées au conteneur. L’Agent peut générer des tags à partir des étiquettes des conteneurs docker et containerd. Pour les conteneurs containerd, vous devez utiliser au minimum la version 1.5.6, car les versions antérieures ne propagent pas correctement les étiquettes.

Pour extraire une étiquette de conteneur <ÉTIQUETTE_CONTENEUR> donnée et la transformer en clé de tag <CLÉ_TAG>, ajoutez la variable d’environnement suivante à l’Agent Datadog :

DD_CONTAINER_LABELS_AS_TAGS='{"<ÉTIQUETTE_CONTENEUR>":"<CLÉ_TAG>"}'

Par exemple :

DD_CONTAINER_LABELS_AS_TAGS='{"app":"kube_app"}'

Remarque : les métriques custom peuvent avoir une incidence sur vos coûts. Consultez la section Facturation des métriques custom pour en savoir plus.

Pour extraire une étiquette de conteneur <ÉTIQUETTE_CONTENEUR> donnée et la transformer en clé de tag <CLÉ_TAG>, ajoutez le bloc de configuration suivant dans le fichier de configuration datadog.yaml de l’Agent :

container_labels_as_tags:
  <ÉTIQUETTE_CONTENEUR>: <CLÉ_TAG>

Par exemple :

container_labels_as_tags:
  app: kube_app

Pour aller plus loin

PREVIEWING: safchain/fix-custom-agent