如何直接从浏览器将 OpenTelemetry 跟踪发送到 Honeycomb.io?
Posted
技术标签:
【中文标题】如何直接从浏览器将 OpenTelemetry 跟踪发送到 Honeycomb.io?【英文标题】:How to send OpenTelemetry traces to Honeycomb.io directly from browser? 【发布时间】:2022-01-23 02:14:33 【问题描述】:我一直在尝试构建一个 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."
如何以 Protobufs 的形式发送我的跟踪记录?
【问题讨论】:
【参考方案1】:目前 Honeycomb 建议解决此问题的方法是通过应用程序与其 API 之间的 OpenTelemetry 收集器。
这个想法是,您可以通过 HTTPS 将跟踪发送到您的收集器,通过适用于您的基础设施的任何形式的安全性,然后让收集器在将数据发送到 Honeycomb 之前对您的数据进行处理(从而防止您的 Honeycomb API 密钥被暴露到浏览器)。
来源:https://www.honeycomb.io/blog/opentelemetry-browser-instrumentation/
我计划在 Honeycomb 更新其 API 以通过 HTTPS 处理跟踪收集时更新此答案。
【讨论】:
以上是关于如何直接从浏览器将 OpenTelemetry 跟踪发送到 Honeycomb.io?的主要内容,如果未能解决你的问题,请参考以下文章
如何从字符串 traceid 创建 opentelemetry span
如何将 OpenTelemetry Java 代理生成的跟踪导出到 Google Cloud Trace?
OpenTelemetry Python - 如何将新跨度实例化为给定 traceid 的子跨度