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

问题描述 投票:0回答:2

我一直在尝试构建一个 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 发送?

javascript browser open-telemetry
2个回答
0
投票

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

这个想法是,您可以通过适用于您的基础设施的任何形式的安全性,通过 HTTPS 将跟踪发送到收集器,然后让收集器在将数据发送到 Honeycomb 之前处理您的数据(从而防止您的 Honeycomb API 密钥暴露给浏览器)。

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


我计划更新这个答案,因为 Honeycomb 更新了他们的 API 以通过 HTTPS 处理跟踪收集。


0
投票

啊,现在更新了。您可以使用 JSON 将 OTLP/HTTP 跟踪发送到 Honeycomb.io

© www.soinside.com 2019 - 2024. All rights reserved.