@multiplayer-app/otlp-core
Version:
Multiplayer otlp core
55 lines (50 loc) • 1.49 kB
text/typescript
import {
ReadableSpan,
SpanExporter,
} from '@opentelemetry/sdk-trace-base'
import {
OTLPExporterNodeConfigBase,
OTLPExporterBase,
} from '@opentelemetry/otlp-exporter-base'
import {
convertLegacyOtlpGrpcOptions,
createOtlpGrpcExportDelegate,
OTLPGRPCExporterConfigNode,
} from '@opentelemetry/otlp-grpc-exporter-base'
import { MultiplayerJsonTraceSerializer } from './MultiplayerJsonTraceSerializer'
import { MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL } from './constants.base'
interface MultiplayerGrpcExporterNodeConfig
extends OTLPGRPCExporterConfigNode {
apiKey?: string
}
/**
* Collector Trace Exporter for Web
*/
export class MultiplayerGrpcTraceExporterNode
extends OTLPExporterBase<ReadableSpan[]>
implements SpanExporter
{
constructor(config: MultiplayerGrpcExporterNodeConfig = {}) {
const _config = {
...config,
url: config.url || MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL,
headers: {
...(config.headers || {}),
...config.apiKey
? { Authorization: config.apiKey }
: {},
},
}
super(
createOtlpGrpcExportDelegate(
convertLegacyOtlpGrpcOptions(_config, 'TRACES'),
MultiplayerJsonTraceSerializer,
'TraceExportService',
'/opentelemetry.proto.collector.trace.v1.TraceService/Export',
),
)
}
getDefaultUrl(config: OTLPExporterNodeConfigBase): string {
return config.url || MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL
}
}