如何从浏览器直接将OpenTelemetry跟踪发送到Honeycomb.io



我一直在尝试构建一个OpenTelemetry实现,它将跟踪直接发送到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 = '<DATA_SET>';
const HONEYCOMB_TEAM = '<API_KEY>';
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('default tracer');

如果我以后打电话给

tracer.startSpan('link click').setAttributes(attributes).end();

我收到了来自https://api.honeycomb.io/v1/traces/的501响应,其中包含正文:

{
"message": "Invalid content-type. Only application/protobuf is supported."
}

如何将我的踪迹作为Protobuf发送?

目前Honeycomb建议解决此问题的方法是通过应用程序和API之间的OpenTelemetry收集器。

这个想法是,你可以通过HTTPS将跟踪发送到你的收集器,通过任何对你的基础设施有效的安全形式,然后让收集器在将数据发送到Honeycomb之前按摩你的数据(从而防止你的Honeycombneneneba API密钥暴露在浏览器中(。

来源:https://www.honeycomb.io/blog/opentelemetry-browser-instrumentation/


我计划在Honeycomb更新其API以通过HTTPS处理跟踪收集时更新这个答案。

最新更新