UNPKG

@multiplayer-app/otlp-core

Version:

Multiplayer otlp core

51 lines (47 loc) 1.36 kB
import { ReadableSpan, SpanExporter, } from '@opentelemetry/sdk-trace-base' import { createOtlpHttpExportDelegate, convertLegacyHttpOptions, } from '@opentelemetry/otlp-exporter-base/node-http' import { OTLPExporterNodeConfigBase, OTLPExporterBase, } from '@opentelemetry/otlp-exporter-base' import { MultiplayerJsonTraceSerializer } from './MultiplayerJsonTraceSerializer' import { MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL } from './constants.base' interface MultiplayerExporterNodeConfig extends OTLPExporterNodeConfigBase { apiKey?: string } /** * Collector Trace Exporter for Web */ export class MultiplayerHttpTraceExporterNode extends OTLPExporterBase<ReadableSpan[]> implements SpanExporter { constructor(config: MultiplayerExporterNodeConfig = {}) { const _config = { ...config, url: config.url || MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL, headers: { ...(config.headers || {}), ...config.apiKey ? { Authorization: config.apiKey } : {}, }, } super( createOtlpHttpExportDelegate( convertLegacyHttpOptions(_config, 'TRACES', 'v1/traces', { 'User-Agent': 'Multiplayer-OTel-OTLP-Exporter-JavaScript-TRACES', 'Content-Type': 'application/json', }), MultiplayerJsonTraceSerializer, ), ) } }