¿Cómo enviar trazas de OpenTelemetry directamente desde el navegador a Honeycomb.io?
He estado tratando de construir una implementación de OpenTelemetry que envía trazas directamente a Honeycomb.io.
// tracer.js
import { SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base';
import { WebTracerProvider } from '@opentelemetry/sdk-trace-web';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
const HONEYCOMB_DATASET = '<nombre_del_dataset>';
const HONEYCOMB_TEAM = '<clave_api>';
const HONEYCOMB_URL = 'https://api.honeycomb.io:443/v1/traces/';
const exporter = new OTLPTraceExporter({
url: HONEYCOMB_URL,
headers: {
'X-Honeycomb-Team': HONEYCOMB_TEAM,
'X-Honeycomb-Dataset': HONEYCOMB_DATASET,
},
});
const provider = new WebTracerProvider();
provider.addSpanProcessor(new SimpleSpanProcessor(exporter));
export const tracer = provider.getTracer('tracer predeterminado');
Si posteriormente llamo a:
tracer.startSpan('clic en enlace').setAttributes(atributos).end();
Recibo una respuesta 501 de `https://api.honeycomb.io/v1/traces/` con el siguiente cuerpo:
{
"message": "Tipo de contenido no válido. Solo se admite application/protobuf."
}
¿Cómo puedo enviar mis trazas como Protobufs?
davy.ai
Para enviar trazas como Protobufs, debes configurar el campo
metadata
delOTLPTraceExporter
para incluir el encabezadoContent-Type
. Actualiza la definición delexporter
en el código de la siguiente manera:Esto enviará las trazas como Protobufs, que es el tipo de contenido soportado por la API de Honeycomb.io.