Envío de datos desde OpenTelemetry Demo a Datadog
La OpenTelemetry Demo es una aplicación de demostración de microservicios desarrollada por la comunidad para demostrar la instrumentación de OpenTelemetry (OTel)
y sus capacidades de observabilidad. Se trata de una página web de comercio electrónico compuesto por múltiples microservicios que se comunican entre sí a través de HTTP y gRPC. Todos los servicios están instrumentados con OpenTelemetry y producen trazas, métricas y logs.
Esta página te guiará a través de los pasos necesarios para desplegar la OpenTelemetry Demo y enviar sus datos a Datadog.
Requisitos previos
Para completar esta guía, asegúrate de tener lo siguiente:
- Crea una cuenta en Datadog si aún no lo has hecho.
- Busca o crea tu clave de API de Datadog.
- 6 GB de RAM libre para la aplicación.
Puedes desplegar la demostración con Docker o Kubernetes (con Helm). Elige el método de despliegue que prefieras y asegúrate de tener instaladas las herramientas necesarias:
- Docker
- Docker Compose v2.0.0+
- Make (opcional)
- Kubernetes 1.24+
- Helm 3.9+
Configuración y despliegue de la demostración
Clonación del repositorio
Clona el repositorio opentelemetry-demo
en tu dispositivo:
git clone https://github.com/open-telemetry/opentelemetry-demo.git
Configuración de OpenTelemetry Collector
Para enviar los datos de telemetría de la demostración a Datadog es necesario añadir tres componentes a la configuración de OpenTelemetry Collector:
Resource Processor
es un componente optional
que es recomendado, utilizado para establecer la etiqueta env
para Datadog.Datadog Connector
se encarga de calcular métricas de traza de Datadog APM.Datadog Exporter
se encarga de exportar trazas, métricas y logs a Datadog.
Completa los siguientes pasos para configurar estos tres componentes.
Abre el repositorio de demostración. Crea un archivo llamado docker-compose.override.yml
en la carpeta raíz.
Abre el archivo creado. Pega el siguiente contenido y configura las variables de entorno del sitio de Datadog y la clave de API de Datadog:
services:
otelcol:
command:
- "--config=/etc/otelcol-config.yml"
- "--config=/etc/otelcol-config-extras.yml"
- "--feature-gates=exporter.datadogexporter.UseLogsAgentExporter"
environment:
- DD_SITE_PARAMETER=<Your API Site>
- DD_API_KEY=<Your API Key>
Para configurar el OpenTelemetry Collector, abre src/otelcollector/otelcol-config-extras.yml
y añade lo siguiente al archivo:
exporters:
datadog:
traces:
span_name_as_resource_name: true
trace_buffer: 500
hostname: "otelcol-docker"
api:
site: ${DD_SITE_PARAMETER}
key: ${DD_API_KEY}
processors:
resource:
attributes:
- key: deployment.environment
value: "otel"
action: upsert
connectors:
datadog/connector:
traces:
span_name_as_resource_name: true
service:
pipelines:
traces:
processors: [resource, batch]
exporters: [otlp, debug, spanmetrics, datadog, datadog/connector]
metrics:
receivers: [docker_stats, httpcheck/frontendproxy, otlp, prometheus, redis, spanmetrics, datadog/connector]
processors: [resource, batch]
exporters: [otlphttp/prometheus, debug, datadog]
logs:
processors: [resource, batch]
exporters: [opensearch, debug, datadog]
Por defecto, el Collector de la aplicación de demostración fusiona la configuración de dos archivos:
src/otelcollector/otelcol-config.yml
: contiene la configuración por defecto para el Collector.src/otelcollector/otelcol-config-extras.yml
: utilizado para añadir más configuración al Collector.
When merging YAML values, objects are merged and arrays are replaced.
That's why there are more components specified in the pipelines than actually configured.
The previous configuration does not replace the values configured in the main otelcol-config
file.
Crea un secreto llamado dd-secrets
para almacenar los secretos del sitio de Datadog y la clave de API:
kubectl create secret generic dd-secrets --from-literal="DD_SITE_PARAMETER=<Your API Site>" --from-literal="DD_API_KEY=<Your API Key>"
Añade el Helm chart de OpenTelemetry a tu repositorio para gestionar y desplegar la OpenTelemetry Demo:
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
Crea un archivo llamado my-values-file.yml
con el siguiente contenido:
opentelemetry-collector:
extraEnvsFrom:
- secretRef:
name: dd-secrets
config:
exporters:
datadog:
traces:
span_name_as_resource_name: true
trace_buffer: 500
hostname: "otelcol-helm"
api:
site: ${DD_SITE_PARAMETER}
key: ${DD_API_KEY}
processors:
resource:
attributes:
- key: deployment.environment
value: "otel"
action: upsert
connectors:
datadog/connector:
traces:
span_name_as_resource_name: true
service:
pipelines:
traces:
processors: [resource, batch]
exporters: [otlp, debug, spanmetrics, datadog, datadog/connector]
metrics:
receivers: [httpcheck/frontendproxy, otlp, redis, spanmetrics, datadog/connector]
processors: [resource, batch]
exporters: [otlphttp/prometheus, debug, datadog]
logs:
processors: [resource, batch]
exporters: [opensearch, debug, datadog]
When merging YAML values, objects are merged and arrays are replaced.
That's why there are more components specified in the pipelines than actually configured.
The previous configuration does not replace the values configured in the main otelcol-config
file.
Ejecución de la demostración
Si tienes make instalado, puedes usar el siguiente comando para iniciar la demostración:
Si no tienes instalado make
, puedes utilizar directamente el comando docker compose
:
docker compose up --force-recreate --remove-orphans --detach
Para desplegar la aplicación de demostración en Kubernetes con Helm, ejecuta el siguiente comando:
helm install my-otel-demo open-telemetry/opentelemetry-demo --values my-values-file.yml
Navegación por la aplicación
Puedes acceder a la interfaz de usuario web de Astronomy Shop para explorar la aplicación y observar cómo se generan los datos de telemetría.
Si estás ejecutando un clúster local, debes redirigir el puerto al proxy de frontend:
kubectl port-forward svc/my-otel-demo-frontendproxy 8080:8080
Ve a http://localhost:8080.
Correlación de datos telemétricos
Los pasos de instrumentación utilizados en todos los servicios de la demostración se pueden encontrar
en la documentación principal de OpenTelemetry.
Puedes encontrar el lenguaje en el que se ha implementado cada servicio así como su
documentación en la tabla de referencia de característica de lenguaje.
Exploración de los datos de OpenTelemetry en Datadog
Cuando se ejecuta OTel Demo, el generador de carga incorporado simula el tráfico en la aplicación.
Al cabo de un par de segundos puedes ver los datos que llegan a Datadog.
Catálogo de servicios
Ver todos los servicios que forman parte de OTel Demo:
- Ve a APM > Service Catalog (APM > Catálogo de servicios).
- Selecciona Map (Mapa) para ver cómo están conectados los servicios. Cambia la Map layout (Disposición del mapa) a Cluster (Clúster) o Flow (Flujo) para ver el mapa en distintos modos.
- Selecciona la vista List (Lista) y, a continuación, selecciona un servicio para ver un resumen del rendimiento en el panel lateral.
Trace Explorer
Explora las trazas recibidas de OTel Demo:
- Desde Performance > Setup Guidance (Rendimiento > Guía de configuración), haz clic en View traces (Ver trazas) para abrir el Trace Explorer, con el servicio seleccionado aplicado como filtro.
- Selecciona un tramo (span) indexado para ver los detalles completos de traza de esta transacción.
- Navega por las pestañas para ver detalles adicionales:
- Métricas de infraestructura para los servicios que informan métricas de host.
- Métricas de tiempo de ejecución para los servicios que ya se han implementado.
- Entradas de log correlacionadas con esta traza.
- Enlaces de tramo vinculados a esta traza.
Consultas de trazas
Datadog te permite filtrar y agrupar los datos de OpenTelemetry recibidos. Por ejemplo, para encontrar todas las transacciones de un usuario específico, puedes utilizar Consultas de traza.
La OTel Demo envía user.id
como etiquetas de tramo, por lo que puedes utilizarlo para filtrar todas las transacciones activadas por el usuario:
Desde Info (Información) en el panel lateral, pasa el ratón por encima de la línea con el ID de usuario, haz clic en el icono de engranaje y selecciona filter by @app.user.id: (filtrar por @app.user.id:).
Elimina cualquier filtro anterior, dejando solo @app.user.id aplicado para ver todas las transacciones que contengan tramos con el ID de usuario especificado.
Rastreo de errores
La OpenTelemetry Demo incluye flagd, un motor de evaluación de indicadores de características para simular escenarios de error.
- Abre el archivo
src/flagd/demo.flagd.json
y establece defaultVariant
en on
para uno de los casos. Consulta la documentación de OpenTelemetry Demo para ver los casos disponibles. - Cuando la demostración empiece a producir errores, podrás visualizar y localizar los servicios afectados en Datadog.
Referencias adicionales
Más enlaces, artículos y documentación útiles: