Esta guía explica cómo crear una imagen del Datadog Agent con componentes adicionales de OpenTelemetry no incluidos en la imagen por defecto del Datadog Agent. Para ver una lista de los componentes ya incluidos en el Agent por defecto, consulta Componentes incluidos.
Conocimientos básicos del proceso de compilación Go y de los módulos Go.
Descargar el archivo Docker
Descargue la plantilla del archivo Docker:
Ve a tu localización de archivos preferida en un terminal. Ejecuta los siguientes comandos para crear una nueva carpeta (por ejemplo, llamada agent-with-otel) y cd en ella.
Descarga y descomprime el código fuente del Datadog Agent.
Crea un entorno virtual e instala los paquetes Python necesarios.
Crea el Agent OpenTelemetry y copia el binario resultante en la imagen final.
La rama main tiene la versión más actualizada del Dockerfile. Sin embargo, es una rama de desarrollo que está sujeta a cambios frecuentes y es menos estable que las etiquetas (tags) de versión. Para producción y otros casos de uso estables, utiliza las versiones etiquetadas que se indican en esta guía.
Crear un manifiesto de OpenTelemetry Collector Builder
Crea y personaliza un archivo del manifiesto de OpenTelemetry Collector Builder (OCB), que defina los componentes que se incluirán en tu Datadog Agent personalizado.
Abre el archivo manifest.yaml y añade los componentes adicionales de OpenTelemetry a las secciones correspondientes (extensiones, exportadores, procesadores, receptores o conectores).
La línea resaltada en este ejemplo añade un procesador de transformación de métricas:
docker tag agent-otel <IMAGE-NAME>/<IMAGE-TAG>
docker push <IMAGE-NAME>/<IMAGE-TAG>
Sustituye <IMAGE-NAME> y <IMAGE-TAG> por el nombre y la etiqueta de tu imagen. Si el repositorio de destino no es Docker Hub, tendrás que incluir el nombre del repositorio.
Para instalar una tabla de Helm, establece la etiqueta de la imagen en tu archivo de valores:
Sustituye <YOUR-REPO> y <IMAGE-TAG> por el nombre de tu repositorio y la imagen deseada etiquetar.
Testear y validar
Crea un archivo de configuración de ejemplo y ejecuta tu Agent personalizado para asegurarte de que todo funciona correctamente.
Crea un archivo de configuración de ejemplo de OpenTelemetry con los componentes adicionales.
El siguiente ejemplo configura un procesador de transformación de métricas adicional:
receivers:otlp:protocols:http:endpoint:"0.0.0.0:4318"grpc:endpoint:"0.0.0.0:4317"processors:batch:send_batch_max_size:1000send_batch_size:100timeout:10s# Rename system.cpu.usage to system.cpu.usage_timemetricstransform:transforms:- include:system.cpu.usageaction:updatenew_name:system.cpu.usage_timeexporters:datadog:api:site:${env:DD_SITE}key:${env:DD_API_KEY}connectors:datadog/connector:traces:compute_top_level_by_span_kind:truepeer_tags_aggregation:truecompute_stats_by_span_kind:trueservice:pipelines:metrics:receivers:[otlp, datadog/connector]processors:[metricstransform, batch]exporters:[datadog]traces:receivers:[otlp]processors:[batch]exporters:[datadog/connector]traces/2:receivers:[datadog/connector]processors:[batch]exporters:[datadog]logs:receivers:[otlp]processors:[batch]exporters:[datadog]
Ejecuta el Agent con el siguiente comando de Docker.
El inicio del Agent indica que el proceso de compilación fue correcto.
Ahora puedes utilizar esta nueva imagen para instalar el Agent. Esto activa las capacidades de monitorización de Datadog junto con los componentes adicionales de OpenTelemetry que añadiste.
En esta sección, se tratan algunos de los problemas más comunes que pueden surgir durante la compilación y ejecución del Datadog Agent, junto con sus soluciones:
Problemas de compatibilidad con awscontainerinsightreceiver
Problema: es posible que se produzcan errores relacionados con awscontainerinsightreceiver durante la compilación:
Solución: elimina awscontainerinsightreceiver del archivo manifest.yaml. Este receptor tiene bibliotecas incompatibles y no se puede incluir en la compilación.
Errores en el proceso de compilación
Problema: recibes el siguiente error:
ERROR: failed to solve: process "/bin/sh -c . venv/bin/activate && invoke otel-agent.build" did not complete successfully: chown /var/lib/docker/overlay2/r75bx8o94uz6t7yr3ae6gop0b/work/work: no such file or directory
Solución: vuelve a ejecutar el comando de compilación:
docker build . -t agent-otel --no-cache
Espacio en disco insuficiente
Problema: Puedes encontrarte con errores relacionados con la insuficiencia de espacio en el disco, como: