Enviar los logs de OpenTelemetry con Observability Pipelines
Este producto no es compatible con el
sitio Datadog seleccionado. (
).
CloudPrem está en vista previa
Únete a la vista previa de CloudPrem para acceder a las nuevas funciones de gestión de logs autoalojadas.
Request AccessCloudPrem admite la ingesta de logs desde recopiladores de OpenTelemetry utilizando Observability Pipelines como capa de ingesta. Esta guía proporciona instrucciones paso a paso para conectar logs de OpenTelemetry a CloudPrem, sin interrumpir tu configuración existente de OpenTelemetry.
Al final de esta guía, podrás:
- Iniciar CloudPrem localmente.
- Crear un Observability Pipeline con un procesador personalizado para añadir etiquetas.
- Ejecutar el worker de Observability Pipelines.
- Enviar logs de OpenTelemetry usando el SDK de Python.
- Ver logs etiquetados en Datadog.
Requisitos previos
Paso 1: Iniciar CloudPrem
Inicia una instancia local de CloudPrem. Sustituye <YOUR_API_KEY> por tu clave de API de Datadog:
export DD_API_KEY="<YOUR_API_KEY>"
export DD_SITE="datadoghq.com"
docker run -d \
--name cloudprem \
-v $(pwd)/qwdata:/quickwit/qwdata \
-e DD_SITE=${DD_SITE} \
-e DD_API_KEY=${DD_API_KEY} \
-p 127.0.0.1:7280:7280 \
datadog/cloudprem run
Paso 2: Crear un Observability Pipeline con la API
Crea un pipeline con una fuente de OpenTelemetry, un procesador de filtro y un destino de CloudPrem. Sustituye <YOUR_APP_KEY> por tu clave de aplicación de Datadog:
export DD_APP_KEY="<YOUR_APP_KEY>"
curl -s -X POST "https://api.${DD_SITE}/api/v2/obs-pipelines/pipelines" \
-H "Content-Type: application/json" \
-H "DD-API-KEY: ${DD_API_KEY}" \
-H "DD-APPLICATION-KEY: ${DD_APP_KEY}" \
-d '{
"data": {
"attributes": {
"name": "OTEL to CloudPrem Pipeline",
"config": {
"sources": [
{
"id": "otel-source",
"type": "opentelemetry"
}
],
"processor_groups": [
{
"id": "main-processors",
"enabled": true,
"include": "*",
"inputs": ["otel-source"],
"processors": [
{
"id": "add-tags",
"display_name": "Add tags",
"enabled": true,
"type": "custom_processor",
"include": "*",
"remaps": [
{
"drop_on_error": false,
"enabled": true,
"include": "*",
"name": "ddtags",
"source": ".ddtags = [\"pipeline:observability-pipelines\", \"source:opentelemetry\"]"
}
]
}
]
}
],
"destinations": [
{
"id": "cloudprem-dest",
"type": "cloud_prem",
"inputs": ["main-processors"]
}
]
}
},
"type": "pipelines"
}
}' | jq -r '.data.id'
Este comando devuelve el pipeline_id. Guárdalo para el próximo paso.
Nota: El procesador personalizado añade un campo ddtags con etiquetas personalizadas a todos los logs a través de la configuración de remaps.
Paso 3: Ejecutar el worker de Observability Pipelines
Inicia el worker de Observability Pipelines utilizando Docker. Sustituye <PIPELINE_ID> por el ID del paso 2:
export PIPELINE_ID="<PIPELINE_ID>"
docker run -d \
--name opw \
-p 4317:4317 \
-p 4318:4318 \
-e DD_API_KEY=${DD_API_KEY} \
-e DD_SITE=${DD_SITE} \
-e DD_OP_PIPELINE_ID=${PIPELINE_ID} \
-e DD_OP_SOURCE_OTEL_GRPC_ADDRESS="0.0.0.0:4317" \
-e DD_OP_SOURCE_OTEL_HTTP_ADDRESS="0.0.0.0:4318" \
-e DD_OP_DESTINATION_CLOUDPREM_ENDPOINT_URL="http://host.docker.internal:7280" \
datadog/observability-pipelines-worker run
Notas:
- El worker expone el puerto 4318 para HTTP y el 4317 para gRPC.
- En macOS/Windows, utiliza
host.docker.internal para conectarte a CloudPrem en el equipo host. - En Linux, utiliza
--network host en lugar de los indicadores -p y http://localhost:7280 para el endpoint.
Paso 4: Enviar logs a través de Observability Pipelines
Instala el kit de desarrollo de software (SDK) de OpenTelemetry y envía un log de test al worker de Observability Pipelines:
pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp-proto-http
python3 -c "
import time, logging
from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
from opentelemetry.exporter.otlp.proto.http._log_exporter import OTLPLogExporter
from opentelemetry.sdk.resources import Resource
exporter = OTLPLogExporter(endpoint='http://localhost:4318/v1/logs')
resource = Resource.create({'service.name': 'otel-demo'})
log_provider = LoggerProvider(resource=resource)
log_provider.add_log_record_processor(BatchLogRecordProcessor(exporter))
handler = LoggingHandler(logger_provider=log_provider)
logging.getLogger().addHandler(handler)
logging.getLogger().setLevel(logging.INFO)
logging.info('Hello from OpenTelemetry via Observability Pipelines!')
time.sleep(2)
log_provider.shutdown()
print('✓ Log sent successfully!')
"
Para producción, configura tu OpenTelemetry Collector para que reenvíe los logs al worker:
exporters:
otlphttp:
endpoint: http://localhost:4318
service:
pipelines:
logs:
receivers: [otlp]
exporters: [otlphttp]
Verifica el pipeline y CloudPrem
Comprueba que todos los componentes funcionan:
# Check CloudPrem status
docker logs cloudprem --tail 20
# Check Observability Pipelines Worker status
docker logs opw --tail 20
Paso 5: Ver los logs en Datadog
- Ve al Datadog Log Explorer.
- En el panel izquierdo de facetas, selecciona tu índice de CloudPrem en CLOUDPREM INDEXES (ÍNDICES DE CLOUDPREM).
- Deberías ver tus logs de OpenTelemetry del servicio
otel-demo con etiquetas personalizadas: pipeline:observability-pipelines y source:opentelemetry.
Siguientes pasos
- Configura tu OpenTelemetry Collector o las aplicaciones instrumentadas para enviar logs al worker.
- Añade más procesadores a tu pipeline (muestreo, enriquecimiento, transformación).
- Amplía el despliegue del worker para cargas de trabajo de producción.
- Consulta la documentación de Observability Pipelines para configuraciones avanzadas.
Limpieza
Para detener y retirar los contenedores:
docker stop cloudprem opw
docker rm cloudprem opw
Referencias adicionales
Más enlaces, artículos y documentación útiles: