Instrumentación APM de un solo paso en Kubernetes
Descripción general
En un entorno de Kubernetes, utilice la instrumentación de un solo paso (SSI) para APM para instalar el Datadog Agent e instrumentar sus aplicaciones con los Datadog SDKs en un solo paso.
Requisitos
Habilitar APM en sus aplicaciones
La instrumentación de un solo paso no instrumenta aplicaciones en el espacio de nombres donde se instala el Datadog Agent. Instale el Datadog Agent en un espacio de nombres separado donde no ejecute sus aplicaciones.
Siga estos pasos para habilitar la instrumentación de un solo paso en todo su clúster. Esto envía automáticamente trazas de todas las aplicaciones escritas en lenguajes compatibles.
Nota: Para instrumentar solo espacios de nombres o pods específicos, consulte la segmentación de carga de trabajo en Opciones avanzadas.
En Datadog, vea la página Instalar el Datadog Agent en Kubernetes.
Siga las instrucciones en pantalla para elegir su método de instalación, seleccionar una clave de API y configurar el repositorio del Datadog Operator o de Helm.
En la sección Configurar datadog-agent.yaml, ve a Configuración adicional > Observabilidad de aplicaciones y activa Instrumentación APM.
Despliega el Agente utilizando el archivo de configuración generado.
Reinicie sus aplicaciones.
SSI añade un pequeño tiempo de inicio a las aplicaciones instrumentadas. Si esta sobrecarga no es aceptable para su caso de uso, contacte a Datadog Support
Las Etiquetas de Servicio Unificadas (USTs) aplican etiquetas consistentes a través de trazas, métricas y registros, facilitando la navegación y correlación de sus datos de observabilidad. Puede configurar USTs a través de la extracción automática de etiquetas (recomendado), mediante la configuración explícita con ddTraceConfigs o en manifiestos de despliegue.
Con SSI, puede extraer automáticamente los valores de UST de las etiquetas y metadatos de los pods sin modificar despliegues individuales. Para hacer esto, configure kubernetesResourcesLabelsAsTags para mapear sus etiquetas de Kubernetes existentes a las etiquetas de servicio de Datadog.
Nota: Este método no es compatible con Remote Configuration. Si está utilizando Remote Configuration, consulte Configure USTs explícitamente con ddTraceConfigs.
Requisitos previos
| Componente | Versión mínima |
|---|
datadog-agent | 7.69 |
datadog-operator | 1.16.0 |
datadog-helm-chart | 3.120.0 |
Configuración
Reemplace app.kubernetes.io/name en el siguiente ejemplo con cualquier etiqueta que contenga el nombre de su servicio (por ejemplo, service.kubernetes.io/name o component). Puede configurar múltiples etiquetas de esta manera.
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
Con esta configuración, Datadog establece automáticamente la etiqueta service utilizando el valor de la etiqueta app.kubernetes.io/name para cualquier carga de trabajo instrumentada que incluya esta etiqueta.
En la mayoría de los casos, la configuración automática es suficiente. Sin embargo, si necesita un control granular sobre la configuración para cargas de trabajo específicas, utilice ddTraceConfigs para mapear explícitamente etiquetas a configuraciones de servicio:
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 su configuración no utiliza etiquetas adecuadas para la extracción de UST, puede establecer USTs directamente en sus manifiestos de despliegue utilizando variables de entorno. Este enfoque requiere modificar cada despliegue individualmente, pero ofrece un control preciso.
Para instrucciones completas, consulta configuración de USTs para servicios de Kubernetes.
Habilitar productos y características dependientes del SDK
Después de que SSI cargue el SDK de Datadog en tus aplicaciones y habilite el rastreo distribuido, puedes configurar productos adicionales que dependen del SDK:
Note: All variables accept true or false. DD_PROFILING_ENABLED also accepts auto, which profiles only eligible processes and is recommended for SSI.
Utilice uno de los siguientes métodos de configuración:
Configurar con orientación de carga de trabajo (recomendado):
Por defecto, la instrumentación de un solo paso instrumenta todos los servicios en todos los espacios de nombres. Utilice la orientación de carga de trabajo para limitar la instrumentación a espacios de nombres, pods o cargas de trabajo específicos, y aplique configuraciones personalizadas.
Establecer variables de entorno:
Habilite productos configurando variables de entorno directamente en la configuración de su aplicación.
Opciones avanzadas
Utilice las siguientes opciones avanzadas para personalizar cómo se comporta la instrumentación de paso único en su entorno. Estas configuraciones son opcionales y generalmente solo se necesitan en configuraciones especializadas.
SSI admite múltiples modos de inyección, que controlan cómo se entregan los archivos del inyector y de la biblioteca APM a los contenedores de su aplicación. Generalmente, no necesita configurar esta opción manualmente. Considere ajustarla si observa retrasos significativos en el inicio de los pods o un uso de recursos (CPU, memoria) superior al esperado durante la inicialización del pod. Para más información sobre cómo funciona el inyector, consulte Comportamiento del inyector con la instrumentación de un solo paso.
| Modo | Descripción | Requisitos |
|---|
init_container | Utiliza contenedores de inicialización para copiar archivos del inyector y de la biblioteca APM en los contenedores de la aplicación. | Datadog Agent desplegado con Helm Chart o Datadog Operator |
csi | En versión preliminar. Monta archivos del inyector y de la biblioteca APM utilizando el controlador CSI de Datadog. Reduce el tiempo de inicio del pod en comparación con el modo de contenedor de inicialización. | Datadog Agent 7.76.0+, Datadog CSI driver 1.2.0+, Helm Chart 3.178.1+ o Datadog Operator 1.25.0+ |
Antes de usar el modo csi, instale y active el Datadog CSI driver. Si está implementando con Helm, también establezca datadog.csi.enabled: true en su datadog-values.yaml. Consulte la documentación del Datadog CSI driver para los pasos de instalación y los requisitos específicos del entorno, como GKE Autopilot.
Para establecer el modo de inyección a nivel de clúster, agregue injectionMode a su datadog-values.yaml:
datadog:
apm:
instrumentation:
injectionMode: <mode>
Valores soportados: init_container, csi.
Para establecer el modo de inyección a nivel de clúster, agregue injectionMode a su datadog-agent.yaml:
features:
apm:
instrumentation:
injectionMode: <mode>
Valores soportados: init_container, csi.
Si está utilizando Datadog Operator en una versión anterior a la 1.25.0, utilice la anotación del pod para anular el modo de inyección para pods específicos.
Para anular el modo de inyección para un pod específico, agregue la siguiente anotación a la especificación del pod:
metadata:
annotations:
admission.datadoghq.com/apm-inject.injection-mode: "<mode>"
Valores soportados: init_container, csi.
Dirija cargas de trabajo específicas
Por defecto, SSI instrumenta todos los servicios en todos los espacios de nombres de su clúster. Dependiendo de la versión de su Datadog Agent, utilice uno de los siguientes métodos de configuración para refinar qué servicios se instrumentan y cómo.
Cree bloques de destino con la etiqueta targets para especificar qué cargas de trabajo instrumentar y qué configuraciones aplicar.
Cada bloque de destino tiene las siguientes claves:
| Clave | Descripción |
|---|
name | El nombre del bloque de destino. Esto no tiene efecto en el estado de monitoreo y se utiliza solo como metadatos. |
namespaceSelector | El(los) espacio(s) de nombres a instrumentar. Especifique utilizando uno o más de: - matchNames: Una lista de uno o más nombre(s) de espacio(s) de nombres. - matchLabels: Una lista de uno o más etiqueta(s) definidas en pares {key,value}. - matchExpressions: Una lista de requisitos de selección de espacio de nombres.
Los espacios de nombres deben cumplir con todos los criterios para coincidir. Para más detalles, consulte la documentación del selector de Kubernetes. |
podSelector | El(los) pod(s) a instrumentar. Especifique utilizando uno o más de: - matchLabels: Una lista de uno o más etiqueta(s) definidas en pares {key,value}. - matchExpressions: Una lista de requisitos de selección de pod.
Los pods deben cumplir con todos los criterios para coincidir. Para más detalles, consulte la documentación del selector de Kubernetes. |
ddTraceVersions | La versión del SDK de APM de Datadog que se utilizará para cada lenguaje. |
ddTraceConfigs | Configuraciones del SDK de APM que permiten establecer Etiquetas de Servicio Unificadas, habilitando productos dependientes del SDK más allá de la traza, y personalizando otras configuraciones de APM. |
El archivo que necesita configurar depende de cómo habilitó la Instrumentación de Paso Único:
- Si habilitó SSI con Datadog Operator, edite
datadog-agent.yaml. - Si habilitó SSI con Helm, edite
datadog-values.yaml.
Nota: Los objetivos se evalúan en orden; la primera coincidencia tiene prioridad.
Ejemplos de configuraciones
Revise los siguientes ejemplos que demuestran cómo seleccionar servicios específicos:
Esta configuración:
- habilita APM para todos los espacios de nombres excepto el
jenkins espacio de nombres.- Nota: use
enabledNamespaces para deshabilitar para todos los espacios de nombres excepto aquellos listados.
- instruye a Datadog a instrumentar las aplicaciones Java con el SDK de Java predeterminado y las aplicaciones de Python con
v.3.1.0 del SDK de Python.
apm:
instrumentation:
enabled: true
disabledNamespaces:
- "jenkins"
targets:
- name: "all-remaining-services"
ddTraceVersions:
java: "default"
python: "3.1.0"
Esta configuración crea dos bloques de destino:
- El primer bloque (nombrado
login-service_namespace):- habilita APM para servicios en el espacio de nombres
login-service. - instruye a Datadog a instrumentar servicios en este espacio de nombres con la versión predeterminada del kit de desarrollo de software de Java.
- establece la variable de entorno
DD_PROFILING_ENABLED para este grupo de objetivos
- El segundo bloque (nombrado
billing-service_apps)- habilita APM para servicios en el(los) espacio(s) de nombres con la etiqueta
app:billing-service. - instruye a Datadog a instrumentar este conjunto de servicios con
v3.1.0 del kit de desarrollo de software de 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"
Esta configuración hace lo siguiente:
- habilita APM para pods con las siguientes etiquetas:
app:db-user, que marca los pods que ejecutan la aplicación db-user.webserver:routing, que marca los pods que ejecutan la aplicación request-router.
- instruye a Datadog para usar las versiones predeterminadas de los kits de desarrollo de software del Datadog Tracer.
- establece las variables de entorno de Datadog que se aplican a cada grupo objetivo y configura los kits de desarrollo de software.
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"
Esta configuración:
- habilita APM para los pods etiquetados
app:password-resolver dentro del espacio de nombres login-service. - instruye a Datadog para usar la versión predeterminada del kit de desarrollo de software del Datadog Java Tracer.
- establece las variables de entorno de Datadog que se aplican a este objetivo.
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"
Esta configuración habilita APM para todos los pods, excepto aquellos que tienen alguna de las etiquetas app=app1 o app=app2.
apm:
instrumentation:
enabled: true
targets:
- name: "default-target"
podSelector:
matchExpressions:
- key: app
operator: NotIn
values:
- app1
- app2
Esta configuración habilita App and API Protection (AAP) y Continuous Profiler para los servicios en el espacio de nombres web-apps, utilizando ddTraceConfigs para establecer las variables de entorno requeridas:
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"
Para una lista completa de productos que puede habilitar a través de SSI, consulte Habilitar productos y características dependientes del kit de desarrollo de software.
Habilitar o deshabilitar la instrumentación para espacios de nombres
Puede elegir habilitar o deshabilitar la instrumentación para aplicaciones en espacios de nombres específicos. Solo puede establecer enabledNamespaces o disabledNamespaces, no ambos.
El archivo que necesita configurar depende de si habilitó la Instrumentación de Paso Único con Datadog Operator o Helm:
Para habilitar la instrumentación para espacios de nombres específicos, agregue enabledNamespaces configuración a datadog-agent.yaml:
features:
apm:
instrumentation:
enabled: true
enabledNamespaces: # Add namespaces to instrument
- default
- applications
Para deshabilitar la instrumentación para espacios de nombres específicos, agregue disabledNamespaces configuración a datadog-agent.yaml:
features:
apm:
instrumentation:
enabled: true
disabledNamespaces: # Add namespaces to not instrument
- default
- applications
Para habilitar la instrumentación para espacios de nombres específicos, agregue la configuración enabledNamespaces a datadog-values.yaml:
datadog:
apm:
instrumentation:
enabled: true
enabledNamespaces: # Add namespaces to instrument
- namespace_1
- namespace_2
Para deshabilitar la instrumentación para espacios de nombres específicos, agregue la configuración disabledNamespaces a datadog-values.yaml:
datadog:
apm:
instrumentation:
enabled: true
disabledNamespaces: # Add namespaces to not instrument
- namespace_1
- namespace_2
Especifique las versiones de los SDK
A partir de Datadog Cluster Agent v7.52.0+, puede instrumentar automáticamente un subconjunto de sus aplicaciones, según los SDK que especifique.
Especifique los SDK de Datadog y sus versiones para instrumentar automáticamente las aplicaciones escritas en esos lenguajes. Puede configurar esto de dos maneras, que se aplican en el siguiente orden de precedencia:
- Especifique a nivel de servicio, o
- Especifique a nivel de clúster.
Por defecto: Si no especifica ninguna versión de biblioteca, las aplicaciones escritas en lenguajes soportados se instrumentan automáticamente utilizando las últimas versiones de los SDK.
Especifique a nivel de servicio
Para instrumentar automáticamente aplicaciones en pods específicos, agregue la anotación de lenguaje apropiada y la versión de la biblioteca para su aplicación en la especificación de su pod:
| Lenguaje | Anotación del 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>" |
Reemplace <CONTAINER IMAGE TAG> con la versión de biblioteca deseada. Las versiones disponibles se enumeran en los registros de contenedores de Datadog y en los repositorios de código fuente de tracer para cada lenguaje:
Ejercite precaución al usar el latest etiqueta, ya que las versiones principales de la biblioteca pueden introducir cambios incompatibles.
Por ejemplo, para instrumentar automáticamente aplicaciones Java:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
# ...
spec:
template:
metadata:
annotations:
admission.datadoghq.com/java-lib.version: "<CONTAINER IMAGE TAG>"
spec:
containers:
- # ...
Especifique a nivel de clúster
Si no habilita la instrumentación automática para pods específicos usando anotaciones, puede especificar qué lenguajes instrumentar en todo el clúster usando la configuración SSI. Cuando apm.instrumentation.libVersions está configurado, solo se instrumentan las aplicaciones escritas en los lenguajes especificados, utilizando las versiones de los SDK especificadas.
El archivo que necesita configurar depende de si habilitó la Instrumentación de Paso Único con Datadog Operator o Helm:
Por ejemplo, para instrumentar aplicaciones de .NET, Python y Node.js, agregue la siguiente configuración a su archivo 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"
Por ejemplo, para instrumentar aplicaciones de .NET, Python y Node.js, agregue la siguiente configuración a su archivo 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"
Cambie el registro de contenedor predeterminado
Datadog publica imágenes de bibliotecas de instrumentación en gcr.io, Docker Hub y Amazon ECR:
La variable de entorno DD_ADMISSION_CONTROLLER_AUTO_INSTRUMENTATION_CONTAINER_REGISTRY en la configuración del Agente de Clúster de Datadog especifica el registro utilizado por el Controlador de Admisión. El valor predeterminado es gcr.io/datadoghq.
Puede obtener el SDK de un registro diferente cambiándolo a docker.io/datadog, public.ecr.aws/datadog o a otra URL si está alojando las imágenes en un registro de contenedor local.
Para obtener instrucciones sobre cómo cambiar su registro de contenedor, consulte Cambiar su registro de contenedor.
Utilice un registro de contenedor privado
Si su organización no permite descargas directas de registros públicos (como gcr.io, docker.io o public.ecr.aws), puede alojar las imágenes requeridas de Datadog internamente y configurar el Controlador de Admisión para usarlas.
Para usar SSI con un registro de contenedor privado:
Siga estas instrucciones para reflejar las imágenes de contenedor de Datadog en su registro privado.
Solo necesita las imágenes para los lenguajes que está instrumentando. Si no está seguro de cuáles necesita, aquí hay una línea base que cubre la mayoría de los casos de uso:
apm-injectdd-lib-java-initdd-lib-python-initdd-lib-dotnet-initdd-lib-php-initdd-lib-ruby-initdd-lib-js-init
Puede encontrar estas imágenes en gcr.io, Docker Hub o Amazon ECR Public Gallery.
Etiquete las imágenes de acuerdo a su configuración.
Las versiones que refleja deben coincidir con las versiones configuradas en sus cargas de trabajo, que pueden estar establecidas de una de las siguientes maneras:
- globalmente en la configuración del Agente usando
ddTraceVersions, o - por pod usando anotaciones como
admission.datadoghq.com/java-lib.version.
Si no se configura explícitamente una versión, se utiliza la versión predeterminada (0).
Por ejemplo:
apm:
instrumentation:
enabled: true
targets:
- name: "default-target"
ddTraceVersions:
java: "1"
python: "3"
Esta configuración requiere las siguientes etiquetas de imagen:
apm-inject:0dd-lib-java-init:1dd-lib-python-init:3
Actualice la configuración del Agente de Clúster de Datadog para utilizar su registro privado.
Establezca la variable de entorno DD_ADMISSION_CONTROLLER_AUTO_INSTRUMENTATION_CONTAINER_REGISTRY en la configuración de su Agente de Clúster de Datadog para utilizar su registro privado.
Para más detalles sobre cómo cambiar tu registro de contenedores, consulta Cambiando Tu Registro de Contenedores.
Usando una Interfaz de Red de Contenedores en EKS
Al usar un CNI como Calico, los nodos del plano de control no pueden iniciar conexiones de red al Controlador de Admisión de Datadog y reportan un error de “Dirección no permitida”.
Para usar la instrumentación de Un Solo Paso, modifique el Agente de Clúster de Datadog con el parámetro useHostNetwork: true.
datadog:
...
clusterAgent:
useHostNetwork: true
admissionController:
...
Elimine la instrumentación de APM de Un Solo Paso de su Agente
Si no desea recopilar datos de trazas para un servicio, host, VM o contenedor en particular, complete los siguientes pasos:
Elimine la instrumentación para servicios específicos
Para eliminar la instrumentación de APM y dejar de enviar trazas desde un servicio específico, puede hacer una de las siguientes acciones:
Utilice reglas de instrumentación para dirigir cargas de trabajo específicas (recomendado)
Con las reglas de instrumentación (disponibles para el Agente v7.64+), puede habilitar y deshabilitar la producción de trazas para aplicaciones específicas. Consulte los detalles de configuración aquí
Utilice el Controlador de Admisión de Datadog
Como alternativa, o para una versión del agente que no soporte reglas de instrumentación, también puede deshabilitar la mutación de pods añadiendo una etiqueta a su pod.
Además de deshabilitar SSI, los siguientes pasos deshabilitan otros webhooks de mutación. Utilícelo con precaución.
- Establezca la etiqueta
admission.datadoghq.com/enabled: en "false" para la especificación del pod:spec:
template:
metadata:
labels:
admission.datadoghq.com/enabled: "false"
- Aplique la configuración:
kubectl apply -f /path/to/your/deployment.yaml
- Reinicie los servicios de los cuales desea eliminar la instrumentación.
Elimine APM para todos los servicios en la infraestructura
Para dejar de producir trazas, desinstale APM y reinicie la infraestructura:
El archivo que necesita configurar depende de si habilitó la Instrumentación de Paso Único con Datadog Operator o Helm:
Establezca instrumentation.enabled=false en datadog-agent.yaml:
features:
apm:
instrumentation:
enabled: false
Despliegue el Agente de Datadog con el archivo de configuración actualizado:
kubectl apply -f /path/to/your/datadog-agent.yaml
Establezca instrumentation.enabled=false en datadog-values.yaml:
datadog:
apm:
instrumentation:
enabled: false
Ejecute el siguiente comando:
helm upgrade datadog-agent -f datadog-values.yaml datadog/datadog
Mejores prácticas
Después de habilitar SSI, todos los procesos soportados en el clúster se instrumentan automáticamente y comienzan a producir trazas en minutos.
Para controlar dónde se activa APM y reducir la sobrecarga, considere las siguientes mejores prácticas.
Instrumentación por defecto vs. instrumentación por opt-in
| Modo | Comportamiento | Cuándo usar |
|---|
| Predeterminado | Todos los procesos soportados en el clúster están instrumentados. | Clústeres pequeños o prototipos. |
| Opt-in | Utilice reglas de instrumentación para restringir la instrumentación a espacios de nombres o pods específicos. | Clústeres de producción, implementaciones escalonadas o casos de uso sensibles al costo. |
Ejemplo: Habilite la instrumentación para pods específicos
Agregue una etiqueta significativa (por ejemplo, datadoghq.com/apm-instrumentation: "enabled") tanto a los metadatos de implementación como a la plantilla del 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
En la configuración de Helm de su Datadog Agent, habilite SSI y use podSelector para inyectar solo en pods con la etiqueta de opt-in correspondiente.
apm:
instrumentation:
enabled: true
targets:
- name: apm-instrumented
podSelector:
matchLabels:
datadoghq.com/apm-instrumentation: "enabled"
Consulte reglas de instrumentación para ejemplos adicionales.
Utilice ddTraceVersions en la configuración de Helm de su Datadog Agent para controlar tanto el lenguaje como la versión del SDK de Datadog. Esto evita que se descarguen SDKs innecesarios, lo que minimiza la huella del contenedor de inicialización, reduce el tamaño de la imagen y permite actualizaciones más deliberadas del tracer (por ejemplo, para cumplir con requisitos de cumplimiento o simplificar la depuración).
Ejemplo: Especifique un SDK de Java para un espacio de nombres
Solo las aplicaciones Java se ejecutan en el espacio de nombres login-service. Para evitar la descarga de otros SDKs, configure el Agente para apuntar a ese espacio de nombres e inyectar únicamente la versión 1.48.2 del SDK de Java.
targets:
- name: login-service
namespaceSelector:
matchNames: ["login-service"]
ddTraceVersions:
java: "1.48.2" # pin version
Configuración predeterminada
Si un pod no coincide con ninguna regla ddTraceVersions, se aplica el objetivo predeterminado.
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"
Solución de problemas
Si encuentra problemas al habilitar APM con SSI, consulte la guía de solución de problemas de SSI.
Lectura adicional
Más enlaces, artículos y documentación útiles: