@multiplayer-app/otlp-core
Version:
Multiplayer otlp core
51 lines (47 loc) • 1.36 kB
text/typescript
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,
),
)
}
}