Extraction de balises Kubernetes

L’Agent Datadog peut automatiquement attribuer des balises aux métriques, traces et journaux émis par un pod (ou un conteneur individuel au sein d’un pod) en fonction des étiquettes ou des annotations.

Balises prêtes à l’emploi

La liste des balises attribuées automatiquement dépend de la configuration de cardinalité de l’Agent. Cardinalité des balises est ajoutée avant l’ingestion et peut avoir un impact sur la facturation, car différentes configurations de cardinalité influencent le nombre de métriques émises.

BaliseCardinalitéSourceExigence
container_idÉlevéÉtat du podN/A
display_container_nameÉlevéÉtat du podN/A
pod_nameOrchestrateurMétadonnées du podN/A
oshift_deploymentOrchestrateurAnnotation du pod openshift.io/deployment.nameL’environnement OpenShift et l’annotation du pod doivent exister
kube_ownerref_nameOrchestrateurRéférence du propriétaire du podLe pod doit avoir un propriétaire
kube_jobOrchestrateurRéférence du propriétaire du podLe pod doit être attaché à un cronjob
kube_jobFaibleRéférence du propriétaire du podLe pod doit être attaché à un job
kube_replica_setFaibleRéférence du propriétaire du podLe pod doit être attaché à un ensemble de réplicas
kube_serviceFaibleDécouverte de service KubernetesLe pod est derrière un service Kubernetes
kube_daemon_setFaibleRéférence du propriétaire du podLe pod doit être attaché à un DaemonSet
kube_container_nameFaibleÉtat du podN/A
kube_namespaceFaibleMétadonnées du podN/A
kube_app_nameFaibleÉtiquette du pod app.kubernetes.io/nameL’étiquette du pod doit exister
kube_app_instanceFaibleÉtiquette du pod app.kubernetes.io/instanceL’étiquette du pod doit exister
kube_app_versionFaibleÉtiquette du pod app.kubernetes.io/versionL’étiquette du pod doit exister
kube_app_componentFaibleÉtiquette du pod app.kubernetes.io/componentL’étiquette du pod doit exister
kube_app_part_ofFaibleÉtiquette du pod app.kubernetes.io/part-ofL’étiquette du pod doit exister
kube_app_managed_byFaibleÉtiquette du pod app.kubernetes.io/managed-byL’étiquette du pod doit exister
envFaibleÉtiquette du pod tags.datadoghq.com/env ou variable d’environnement du conteneur (DD_ENV ou OTEL_RESOURCE_ATTRIBUTES)Étiquetage de service unifié activé
versionFaibleÉtiquette du pod tags.datadoghq.com/version ou variable d’environnement du conteneur (DD_VERSION ou OTEL_RESOURCE_ATTRIBUTES)Étiquetage de service unifié activé
serviceFaibleÉtiquette du pod tags.datadoghq.com/service ou variable d’environnement du conteneur (DD_SERVICE, OTEL_RESOURCE_ATTRIBUTES, ou OTEL_SERVICE_NAME)Étiquetage de service unifié activé
pod_phaseFaibleÉtat du podN/A
oshift_deployment_configFaibleAnnotation du pod openshift.io/deployment-config.nameL’environnement OpenShift et l’annotation du pod doivent exister
kube_ownerref_kindFaibleRéférence du propriétaire du podLe pod doit avoir un propriétaire
kube_deploymentFaibleRéférence du propriétaire du podLe pod doit être attaché à un déploiement
kube_argo_rolloutFaibleRéférence du propriétaire du podLe pod doit être attaché à un déploiement argo
kube_replication_controllerFaibleRéférence du propriétaire du podLe pod doit être attaché à un contrôleur de réplication
kube_stateful_setFaibleRéférence du propriétaire du podLe pod doit être attaché à un statefulset
persistentvolumeclaimFaibleSpécification du podUn PVC doit être attaché au pod
kube_cronjobFaibleRéférence du propriétaire du podLe pod doit être attaché à un cronjob
image_nameFaibleSpécification du podN/A
short_imageFaibleSpécification du podN/A
image_tagFaibleSpécification du podN/A
eks_fargate_nodeFaibleSpécification du podEnvironnement EKS Fargate
kube_runtime_classFaibleSpécification du podLe pod doit être attaché à une classe d’exécution
gpu_vendorFaibleSpécification du podLe conteneur doit être attaché à une ressource GPU
image_idFaibleID de l’image du conteneurN/A
kube_autoscaler_kindFaibleType d’autoscaler KubernetesUn autoscaler Kubernetes doit être utilisé
kube_priority_classFaibleClasse de priorité du podLe pod doit avoir une classe de priorité définie
kube_qosFaibleClasse de qualité de service du podN/A

Étiquette d’hôte

L’Agent peut attacher des informations sur l’environnement Kubernetes en tant qu’“étiquettes d’hôte”.

ÉtiquetteCardinalitéSourceExigence
kube_cluster_nameFaibleDD_CLUSTER_NAME intégration envvar ou fournisseur de cloudDD_CLUSTER_NAME intégration envvar ou fournisseur de cloud activée
kube_node_roleFaibleÉtiquette de nœud node-role.kubernetes.io/<role>L’étiquette de nœud doit exister
kube_nodeFaibleNodeName champ dans les spécifications d’un pod
orch_cluster_idFaibleMétadonnées du cluster orchestrateurEnvironnement orchestrateur
kube_distributionFaibleÉtiquettes de nœud et NodeSystemInfo

Découverte automatique des étiquettes

À partir de l’Agent v6.10+, l’Agent peut découvrir automatiquement des balises à partir des annotations de Pod. Cela permet à l’Agent d’associer des balises à toutes les données émises par l’ensemble des pods ou un conteneur individuel au sein de ce pod.

En tant que meilleure pratique dans les environnements conteneurisés, Datadog recommande d’utiliser un étiquetage de service unifié pour aider à unifier les étiquettes. L’étiquetage de service unifié relie la télémétrie de Datadog grâce à l’utilisation de trois étiquettes standard : env, service et version. Pour apprendre à configurer votre environnement avec un étiquetage unifié, référez-vous à la documentation dédiée à l’étiquetage de service unifié.

Pour appliquer une étiquette <TAG_KEY>:<TAG_VALUE> à toutes les données émises par un pod donné et collectées par l’Agent, utilisez l’annotation suivante sur votre pod :

annotations:
  ad.datadoghq.com/tags: '{"<TAG_KEY>": "<TAG_VALUE>","<TAG_KEY_1>": "<TAG_VALUE_1>"}'

Si vous souhaitez appliquer une étiquette <TAG_KEY>:<TAG_VALUE> à un conteneur individuel <CONTAINER_NAME> au sein d’un pod, utilisez l’annotation suivante sur votre pod :

annotations:
  ad.datadoghq.com/<CONTAINER_NAME>.tags: '{"<TAG_KEY>": "<TAG_VALUE>","<TAG_KEY_1>": "<TAG_VALUE_1>"}'

À partir de l’Agent v7.17+, l’Agent peut découvrir automatiquement des étiquettes à partir des étiquettes Docker. Ce processus permet à l’Agent d’associer des étiquettes personnalisées à toutes les données émises par un conteneur, sans modifier la configuration de l’Agent.

com.datadoghq.ad.tags: '["<TAG_KEY>:TAG_VALUE", "<TAG_KEY_1>:<TAG_VALUE_1>"]'

À partir de l’Agent v7.77+, les annotations d’étiquettes prennent en charge les variables de modèle de découverte automatique pour un étiquetage dynamique basé sur les métadonnées d’exécution. À l’exception de %%env_<VAR>%%, toutes les variables de modèle sont prises en charge.

annotations:
  ad.datadoghq.com/tags: '{"pod_ip":"%%host%%","pod_name":"%%kube_pod_name%%","namespace":"%%kube_namespace%%"}'
  ad.datadoghq.com/nginx.tags: '{"container_port":"%%port_80%%"}'

Extraction d’étiquettes

À partir de la version 7.64+, l’Agent et l’Agent de Cluster peuvent être configurés pour collecter des étiquettes et des annotations à partir des ressources Kubernetes et les utiliser comme étiquettes à partir d’une configuration commune. Datadog recommande d’utiliser les options suivantes pour garantir un reporting cohérent entre l’étiquetage principal de l’Agent, le reporting KSM de l’Agent de Cluster et le reporting de l’Orchestrateur Explorer des deux Agents :

  • kubernetesResourcesLabelsAsTags
  • kubernetesResourcesAnnotationsAsTags

Ces options doivent être utilisées au lieu des anciennes options de l’Agent podLabelsAsTags, nodeLabelsAsTags, namespaceLabelsAsTags, et de tout remplacement de configuration KSM.

Ces configurations font référence au type de ressource de l’objet à partir duquel extraire les métadonnées. Chaque type de ressource doit être spécifié au format resourceType.apiGroup, où resourceType est le nom au pluriel de la ressource. Les ressources dans le groupe API vide (par exemple, les pods et les nœuds) peuvent être spécifiées en utilisant uniquement le nom resourceType.

Par exemple, exécutez kubectl api-resources pour récupérer cette information :

NomVersion de l’APIConfiguration des ressources Datadog
podsv1pods
nœudsv1nœuds
espaces de nomsv1espaces de noms
déploiementsapps/v1déploiements.apps
rôlesrbac.authorization.k8s.io/v1rôles.rbac.authorization.k8s.io

Notes :

  • Les tags ne se propagent pas entre la charge de travail et les ressources enfants. Par exemple, les étiquettes sur un déploiement ne sont pas automatiquement appliquées aux journaux de ses pods enfants. Pour taguer les données des pods, configurez l’extraction des étiquettes directement sur les pods.
  • Les tags * se propagent de l’espace de noms vers les pods et les conteneurs qui s’y trouvent *.
  • Utilisez Datadog Agent 7.73+ pour employer des caractères génériques dans les règles d’extraction des tags de vos métriques KSM.

Étiquettes des ressources Kubernetes en tant que tags

Cette option est utilisée pour extraire une étiquette donnée sur vos ressources Kubernetes et l’envoyer en tant que tag Datadog.

Pour extraire une étiquette de ressource donnée <LABEL> et la transformer en clé de balise <TAG_KEY> dans Datadog, ajoutez la configuration suivante à la configuration de votre opérateur DatadogAgent dans datadog-agent.yaml :

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    kubernetesResourcesLabelsAsTags:
      <RESOURCE>:
        <LABEL>: <TAG_KEY>

Par exemple, pour extraire des étiquettes de ressource des nœuds, des pods et des déploiements :

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    kubernetesResourcesLabelsAsTags:
      nodes:
        kubernetes.io/arch: arch
      pods:
        role: pod_role
      deployments.apps:
        team: kube_team

Pour extraire une étiquette de ressource donnée <LABEL> et la transformer en clé de balise <TAG_KEY> dans Datadog, ajoutez la configuration suivante à votre fichier Helm datadog-values.yaml :

datadog:
  kubernetesResourcesLabelsAsTags:
    <RESOURCE>:
      <LABEL>: <TAG_KEY>

Par exemple, pour extraire des étiquettes de ressource des nœuds, des pods et des déploiements :

datadog:
  kubernetesResourcesLabelsAsTags:
    nodes:
      kubernetes.io/arch: arch
    pods:
      role: pod_role
    deployments.apps:
      team: kube_team

Pour extraire une étiquette de ressource donnée <LABEL> et la transformer en clé de balise <TAG_KEY> dans Datadog, ajoutez la variable d’environnement suivante à à la fois vos conteneurs Agent et Cluster Agent.

- name: DD_KUBERNETES_RESOURCES_LABELS_AS_TAGS
  value: '{"<RESOURCE>":{"<LABEL>":"<TAG_KEY>"}}'

Par exemple, pour extraire des étiquettes de ressource des nœuds, des pods et des déploiements :

- name: DD_KUBERNETES_RESOURCES_LABELS_AS_TAGS
  value: '{"deployments.apps":{"team":"kube_team"},"nodes":{"kubernetes.io/arch":"arch"},"pods":{"role":"pod_role"}}'

Pour l’Agent 7.73.0 et plus, utilisez la configuration suivante pour ajouter toutes les étiquettes de ressource en tant que balises à vos métriques. Dans cet exemple, les noms de balises sont préfixés par <PREFIX>_ :

    #(...)
    kubernetesResourcesLabelsAsTags:
      pods:
        "*": <PREFIX>_%%label%%

Notes : Les métriques personnalisées peuvent avoir un impact sur la facturation. Consultez la page de facturation des métriques personnalisées pour plus d’informations.

Fusion avec des configurations héritées

Cette option de configuration est fusionnée avec d’autres configurations définies dans podLabelsAsTags, namespaceLabelsAsTags et nodeLabelsAsTags. En cas de conflit, kubernetesResourcesLabelsAsTags a la priorité lors de la fusion des configurations.

Par exemple, si vous avez les configurations suivantes :

datadog:
  kubernetesResourcesLabelsAsTags:
    pods:
      label-1: tag-a
      label-2: tag-b

  podLabelsAsTags:
    label-2: legacy-tag-c
    label-3: legacy-tag-d

Le mappage suivant est utilisé pour extraire des balises des étiquettes de pod :

label-1: tag-a
label-2: tag-b
label-3: legacy-tag-d

Annotations des ressources Kubernetes en tant que balises

Cette option extrait une annotation spécifiée de vos ressources Kubernetes et l’envoie en tant que balise Datadog.

Pour extraire une annotation de ressource donnée <ANNOTATION> et la transformer en clé de balise <TAG_KEY> dans Datadog, ajoutez la configuration suivante à la configuration de votre opérateur DatadogAgent dans datadog-agent.yaml :

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    kubernetesResourcesAnnotationsAsTags:
      <RESOURCE>:
        <ANNOTATION>: <TAG_KEY>

Par exemple, pour extraire des annotations de ressource des nœuds, des pods et des déploiements :

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    kubernetesResourcesAnnotationsAsTags:
      nodes:
        kubernetes.io/arch: arch
      pods:
        role: pod_role
      deployments.apps:
        team: kube_team

Pour extraire une annotation de ressource donnée <ANNOTATION> et la transformer en clé de balise <TAG_KEY> dans Datadog, ajoutez la configuration suivante à votre fichier Helm datadog-values.yaml :

datadog:
  kubernetesResourcesAnnotationsAsTags:
    <RESOURCE>:
      <ANNOTATION>: <TAG_KEY>

Par exemple, pour extraire des annotations de ressource des nœuds, des pods et des déploiements :

datadog:
  kubernetesResourcesAnnotationsAsTags:
    nodes:
      kubernetes.io/arch: arch
    pods:
      role: pod_role
    deployments.apps:
      team: kube_team

Pour extraire une annotation de ressource donnée <ANNOTATION> et la transformer en clé de balise <TAG_KEY> dans Datadog, ajoutez la variable d’environnement suivante à à la fois vos conteneurs Agent et Cluster Agent :

- name: DD_KUBERNETES_RESOURCES_ANNOTATIONS_AS_TAGS
  value: '{"<RESOURCE>":{"<ANNOTATION>":"<TAG_KEY>"}}'

Par exemple, pour extraire des annotations de ressource des nœuds, des pods et des déploiements :

- name: DD_KUBERNETES_RESOURCES_ANNOTATIONS_AS_TAGS
  value: '{"deployments.apps":{"team":"kube_team"},"nodes":{"kubernetes.io/arch":"arch"},"pods":{"role":"pod_role"}}'

Pour l’Agent 7.73.0 et plus, utilisez la configuration suivante pour ajouter toutes les annotations de ressource en tant que balises à vos métriques. Dans cet exemple, les noms de balises sont préfixés par <PREFIX>_ :

    #(...)
    kubernetesResourcesAnnotationsAsTags:
      pods:
        "*": <PREFIX>_%%annotation%%

Notes : Les métriques personnalisées peuvent avoir un impact sur la facturation. Consultez la page de facturation des métriques personnalisées pour plus d’informations.

Cette option de configuration est fusionnée avec d’autres configurations définies dans podAnnotationsAsTags. En cas de conflit, kubernetesResourcesAnnotationsAsTags a la priorité lors de la fusion des configurations.

Par exemple, si vous avez les configurations suivantes :

datadog:
  kubernetesResourcesAnnotationsAsTags:
    pods:
      annotation-1: tag-a
      annotation-2: tag-b

  podAnnotationsAsTags:
    annotation-2: legacy-tag-c
    annotation-3: legacy-tag-d

Le mappage suivant est utilisé pour extraire des balises des annotations de pod :

annotation-1: tag-a
annotation-2: tag-b
annotation-3: legacy-tag-d

Étiquettes de nœud en tant que balises

Si vous utilisez la version de l’agent 7.58.0 ou plus, il est conseillé d’utiliser les étiquettes des ressources Kubernetes en tant que balises pour configurer les étiquettes en tant que balises.

À partir de l’Agent v6.0+, l’Agent peut collecter des étiquettes pour un nœud donné et les utiliser comme balises à attacher à toutes les métriques, traces et journaux émis associés à ce host dans Datadog :

Pour extraire une étiquette de nœud donnée <NODE_LABEL> et la transformer en clé de balise <TAG_KEY> dans Datadog, ajoutez la configuration suivante à la configuration de votre opérateur DatadogAgent dans datadog-agent.yaml :

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    nodeLabelsAsTags:
      <NODE_LABEL>: <TAG_KEY>

Par exemple, vous pourriez configurer :

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    nodeLabelsAsTags:
      kubernetes.io/arch: arch

Pour l’Agent v7.24.0 et plus, utilisez la configuration de variable d’environnement suivante pour ajouter toutes les étiquettes de nœud en tant que balises à vos métriques. Dans cet exemple, les noms de balises sont préfixés par <PREFIX>_ :

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    nodeLabelsAsTags:
      "*": <PREFIX>_%%label%% # Note: wildcards do not work for KSM metrics before version 7.73

Pour extraire une étiquette de nœud donnée <NODE_LABEL> et la transformer en clé de balise <TAG_KEY> dans Datadog, ajoutez la configuration suivante à votre fichier Helm datadog-values.yaml :

datadog:
  nodeLabelsAsTags:
    <NODE_LABEL>: <TAG_KEY>

Par exemple, vous pourriez configurer :

datadog:
  nodeLabelsAsTags:
    kubernetes.io/arch: arch

Pour l’Agent v7.24.0 et plus, utilisez la configuration de variable d’environnement suivante pour ajouter toutes les étiquettes de nœud en tant que balises à vos métriques. Dans cet exemple, les noms de balises sont préfixés par <PREFIX>_ :

datadog:
  nodeLabelsAsTags:
    "*": <PREFIX>_%%label%% # Note: wildcards do not work for KSM metrics before version 7.73

Pour extraire une étiquette de nœud donnée <NODE_LABEL> et la transformer en clé de balise <TAG_KEY> dans Datadog, ajoutez la variable d’environnement suivante à l’Agent Datadog :

DD_KUBERNETES_NODE_LABELS_AS_TAGS='{"<NODE_LABEL>": "<TAG_KEY>"}'

Par exemple, vous pourriez configurer :

DD_KUBERNETES_NODE_LABELS_AS_TAGS='{"kubernetes.io/arch":"arch"}'

Pour l’Agent v7.24.0 et plus, utilisez la configuration de variable d’environnement suivante pour ajouter toutes les étiquettes de nœud en tant que balises à vos métriques. Dans cet exemple, les noms des balises sont préfixés par <PREFIX>_ :

DD_KUBERNETES_NODE_LABELS_AS_TAGS='{"*":"<PREFIX>_%%label%%"}' # Note: wildcards do not work for KSM metrics before version 7.73

Remarque : Les métriques personnalisées peuvent avoir un impact sur la facturation. Consultez la page de facturation des métriques personnalisées pour plus d’informations.

Étiquettes de pod en tant que balises

Si vous utilisez la version de l’agent 7.58.0 ou plus, il est conseillé d’utiliser les étiquettes des ressources Kubernetes en tant que balises pour configurer les étiquettes de pod en tant que balises.

À partir de l’Agent v6.0+, l’Agent peut collecter des étiquettes pour un pod donné et les utiliser comme balises à attacher à toutes les métriques, traces et journaux émis par ce pod :

Pour extraire une étiquette de pod donnée <POD_LABEL> et la transformer en clé de balise <TAG_KEY> dans Datadog, ajoutez la configuration suivante à la configuration de votre opérateur DatadogAgent dans datadog-agent.yaml :

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    podLabelsAsTags:
      <POD_LABEL>: <TAG_KEY>

Par exemple, vous pourriez configurer :

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    podLabelsAsTags:
      app: kube_app

Pour l’Agent v7.24.0 et supérieur, utilisez la configuration de variable d’environnement suivante pour ajouter toutes les étiquettes de pod en tant que tags à vos métriques. Dans cet exemple, les noms des tags sont préfixés par <PREFIX>_ :

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    podLabelsAsTags:
      "*": <PREFIX>_%%label%% # Note: wildcards do not work for KSM metrics before version 7.73

Pour extraire une étiquette de pod donnée <POD_LABEL> et la transformer en clé de balise <TAG_KEY> dans Datadog, ajoutez la configuration suivante à votre fichier Helm datadog-values.yaml :

datadog:
  podLabelsAsTags:
    <POD_LABEL>: <TAG_KEY>

Par exemple, vous pourriez configurer :

datadog:
  podLabelsAsTags:
    app: kube_app

Pour l’Agent v7.24.0 et supérieur, utilisez la configuration de variable d’environnement suivante pour ajouter toutes les étiquettes de pod en tant que tags à vos métriques, sauf celles de KSM (kubernetes_state.*). Dans cet exemple, les noms des tags sont préfixés par <PREFIX>_ :

datadog:
  podLabelsAsTags:
    "*": <PREFIX>_%%label%% # Note: wildcards do not work for KSM metrics

Pour extraire une étiquette de pod donnée <POD_LABEL> et la transformer en clé de balise <TAG_KEY> dans Datadog, ajoutez la variable d’environnement suivante à l’Agent Datadog :

DD_KUBERNETES_POD_LABELS_AS_TAGS='{"<POD_LABEL>": "<TAG_KEY>"}'

Par exemple, vous pourriez configurer :

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

Pour l’Agent v7.24.0 et supérieur, utilisez la configuration de variable d’environnement suivante pour ajouter toutes les étiquettes de pod en tant que tags à vos métriques, sauf celles de KSM (kubernetes_state.*). Dans cet exemple, les noms des tags sont préfixés par <PREFIX>_ :

DD_KUBERNETES_POD_LABELS_AS_TAGS='{"*":"<PREFIX>_%%label%%"}'

Remarque : Les métriques personnalisées peuvent avoir un impact sur la facturation. Consultez la page de facturation des métriques personnalisées pour plus d’informations.

Annotations de pod en tant que tags

Si vous utilisez la version de l’agent 7.58.0 ou supérieure, il est conseillé d’utiliser les étiquettes des ressources Kubernetes en tant que tags pour configurer les annotations de pod en tant que tags.

À partir de l’Agent v6.0 et supérieur, l’Agent peut collecter des annotations pour un pod donné et les utiliser comme tags à attacher à toutes les métriques, traces et journaux émis par ce pod :

Pour extraire une annotation de pod donnée <POD_ANNOTATION> et la transformer en clé de tag <TAG_KEY> dans Datadog, ajoutez la configuration suivante à la configuration de votre opérateur DatadogAgent dans datadog-agent.yaml

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    podAnnotationsAsTags:
      <POD_ANNOTATION>: <TAG_KEY>

Par exemple, vous pourriez configurer :

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    podAnnotationsAsTags:
      app: kube_app

Pour l’Agent v7.24.0 et supérieur, utilisez la configuration de variable d’environnement suivante pour ajouter toutes les annotations de pod en tant que tags à vos métriques, sauf celles de KSM (kubernetes_state.*). Dans cet exemple, les noms des tags sont préfixés par <PREFIX>_ :

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    podAnnotationsAsTags:
      "*": <PREFIX>_%%annotation%% # Note: wildcards do not work for KSM metrics

Pour extraire une annotation de pod donnée <POD_ANNOTATION> et la transformer en clé de tag <TAG_KEY> dans Datadog, ajoutez la configuration suivante à votre fichier Helm datadog-values.yaml :

datadog:
  podAnnotationsAsTags:
    <POD_ANNOTATION>: <TAG_KEY>

Par exemple, vous pourriez configurer :

datadog:
  podAnnotationsAsTags:
    app: kube_app

Pour l’Agent v7.24.0 et supérieur, utilisez la configuration de variable d’environnement suivante pour ajouter toutes les annotations de pod en tant que tags à vos métriques, sauf celles de KSM (kubernetes_state.*). Dans cet exemple, les noms des tags sont préfixés par <PREFIX>_ :

datadog:
  podAnnotationsAsTags:
    "*": <PREFIX>_%%annotation%% # Note: wildcards do not work for KSM metrics

Pour extraire une annotation de pod donnée <POD_ANNOTATION> et la transformer en clé de tag <TAG_KEY> dans Datadog, ajoutez la variable d’environnement suivante à l’Agent Datadog :

DD_KUBERNETES_POD_ANNOTATIONS_AS_TAGS='{"<POD_ANNOTATION>": "<TAG_KEY>"}'

Par exemple, vous pourriez configurer :

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

Pour l’Agent v7.24.0 et supérieur, utilisez la configuration de variable d’environnement suivante pour ajouter toutes les annotations de pod en tant que tags à vos métriques, sauf celles de KSM (kubernetes_state.*). Dans cet exemple, les noms des tags sont préfixés par <PREFIX>_ :

DD_KUBERNETES_POD_ANNOTATIONS_AS_TAGS='{"*":"<PREFIX>_%%annotation%%"}'

Remarque : Les métriques personnalisées peuvent avoir un impact sur la facturation. Consultez la page de facturation des métriques personnalisées pour plus d’informations.

Étiquettes de namespace en tant que tags

Si vous utilisez la version de l’agent 7.58.0 ou supérieure, il est conseillé d’utiliser les étiquettes des ressources Kubernetes en tant que tags pour configurer les étiquettes de namespace en tant que tags.

À partir de l’Agent 7.55.0 et supérieur, l’Agent peut collecter des étiquettes pour un namespace donné et les utiliser comme tags à attacher à toutes les métriques, traces et journaux émis par tous les pods dans ce namespace :

Pour extraire une étiquette de namespace donnée <NAMESPACE_LABEL> et la transformer en clé de tag <TAG_KEY> dans Datadog, ajoutez la configuration suivante à la configuration de votre opérateur DatadogAgent dans datadog-agent.yaml :

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    namespaceLabelsAsTags:
      <NAMESPACE_LABEL>: <TAG_KEY>

Par exemple, vous pourriez configurer :

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    namespaceLabelsAsTags:
      app: kube_app

Pour l’Agent v7.24.0 et supérieur, utilisez la configuration de variable d’environnement suivante pour ajouter toutes les étiquettes de namespace en tant que tags à vos métriques, sauf celles de KSM (kubernetes_state.*). Dans cet exemple, les noms des tags sont préfixés par <PREFIX>_ :

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    namespaceLabelsAsTags:
      "*": <PREFIX>_%%label%% # Note: wildcards do not work for KSM metrics

Pour extraire une étiquette de namespace donnée <NAMESPACE_LABEL> et la transformer en clé de tag <TAG_KEY> dans Datadog, ajoutez la configuration suivante à votre fichier Helm datadog-values.yaml :

datadog:
  namespaceLabelsAsTags:
    <NAMESPACE_LABEL>: <TAG_KEY>

Par exemple, vous pourriez configurer :

datadog:
  namespaceLabelsAsTags:
    app: kube_app

Pour l’Agent v7.24.0 et supérieur, utilisez la configuration de variable d’environnement suivante pour ajouter toutes les étiquettes de namespace en tant que tags à vos métriques, sauf celles de KSM (kubernetes_state.*). Dans cet exemple, les noms des tags sont préfixés par <PREFIX>_ :

datadog:
  namespaceLabelsAsTags:
    "*": <PREFIX>_%%label%% # Note: wildcards do not work for KSM metrics

Pour extraire une étiquette de namespace donnée <NAMESPACE_LABEL> et la transformer en clé de tag <TAG_KEY> dans Datadog, ajoutez la variable d’environnement suivante à l’Agent Datadog :

DD_KUBERNETES_NAMESPACE_LABELS_AS_TAGS='{"<NAMESPACE_LABEL>": "<TAG_KEY>"}'

Par exemple, vous pourriez configurer :

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

Pour l’Agent v7.24.0 et supérieur, utilisez la configuration de variable d’environnement suivante pour ajouter toutes les étiquettes de namespace en tant que tags à vos métriques, sauf celles de KSM (kubernetes_state.*). Dans cet exemple, les noms des tags sont préfixés par <PREFIX>_ :

DD_KUBERNETES_NAMESPACE_LABELS_AS_TAGS='{"*":"<PREFIX>_%%label%%"}'

Remarque : Les métriques personnalisées peuvent avoir un impact sur la facturation. Consultez la page de facturation des métriques personnalisées pour plus d’informations.

Variables d’environnement de conteneur en tant que tags

À partir de la version 7.32+ de l’Agent, l’Agent peut collecter les variables d’environnement des conteneurs et les utiliser comme tags à attacher à toutes les métriques, traces et journaux correspondant au conteneur. Les conteneurs docker et containerd sont tous deux pris en charge :

Pour extraire une variable d’environnement donnée <ENV_VAR> et la transformer en clé de tag <TAG_KEY> dans Datadog, ajoutez la configuration suivante à la configuration DatadogAgent de votre Opérateur dans datadog-agent.yaml :

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  #(...)
  override:
    nodeAgent:
      env:
        - name: DD_CONTAINER_ENV_AS_TAGS
          value: '{"<ENV_VAR>": "<TAG_KEY>"}'

Par exemple, vous pourriez configurer :

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  #(...)
  override:
    nodeAgent:
      env:
        - name: DD_CONTAINER_ENV_AS_TAGS
          value: '{"app":"kube_app"}'

Pour extraire une variable d’environnement donnée <ENV_VAR> et la transformer en clé de tag <TAG_KEY> dans Datadog, ajoutez la configuration suivante à votre fichier Helm datadog-values.yaml :

datadog:
  env:
    - name: DD_CONTAINER_ENV_AS_TAGS
      value: '{"<ENV_VAR>": "<TAG_KEY>"}'

Par exemple, vous pourriez configurer :

datadog:
  env:
    - name: DD_CONTAINER_ENV_AS_TAGS
      value: '{"app":"kube_app"}'

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

DD_CONTAINER_ENV_AS_TAGS='{"<ENV_VAR>": "<TAG_KEY>"}'

Par exemple :

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

Remarque : Les métriques personnalisées peuvent avoir un impact sur la facturation. Voir Facturation des métriques personnalisées pour plus de détails.

Étiquettes de conteneur en tant que tags

À partir de la version 7.33+ de l’Agent, l’Agent peut collecter les étiquettes de conteneur et les utiliser comme tags. L’agent attache les tags à toutes les métriques, traces et journaux associés au conteneur.

L’Agent peut générer des tags à partir des étiquettes de conteneur pour les conteneurs docker et containerd. Dans le cas de containerd, la version minimale prise en charge est v1.5.6, car les versions précédentes ne propagent pas correctement les étiquettes.

Pour extraire une étiquette de conteneur donnée <CONTAINER_LABEL> et la transformer en clé de tag <TAG_KEY> dans Datadog, ajoutez la configuration suivante à la configuration DatadogAgent de votre Opérateur dans datadog-agent.yaml :

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  #(...)
  override:
    nodeAgent:
      env:
        - name: DD_CONTAINER_LABELS_AS_TAGS
          value: '{"<CONTAINER_LABEL>": "<TAG_KEY>"}'

Par exemple, vous pourriez configurer :

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  #(...)
  override:
    nodeAgent:
      env:
        - name: DD_CONTAINER_LABELS_AS_TAGS
          value: '{"app":"kube_app"}'

Pour extraire une étiquette de conteneur donnée <CONTAINER_LABEL> et la transformer en clé de tag <TAG_KEY> dans Datadog, ajoutez la configuration suivante à votre fichier Helm datadog-values.yaml :

datadog:
  env:
    - name: DD_CONTAINER_LABELS_AS_TAGS
      value: '{"<CONTAINER_LABEL>": "<TAG_KEY>"}'

Par exemple, vous pourriez configurer :

datadog:
  env:
    - name: DD_CONTAINER_LABELS_AS_TAGS
      value: '{"app":"kube_app"}'

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

DD_CONTAINER_LABELS_AS_TAGS='{"<CONTAINER_LABEL>":"<TAG_KEY>"}'

Par exemple :

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

Remarque : Les métriques personnalisées peuvent avoir un impact sur la facturation. Voir Facturation des métriques personnalisées pour plus de détails.

Lectures complémentaires