import { ConsoleSpanExporter, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base'; import { WebTracerProvider } from '@opentelemetry/sdk-trace-web'; import { ZipkinExporter } from '@opentelemetry/exporter-zipkin'; import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions' import { Resource } from '@opentelemetry/resources'; function createProvider(serviceName) { const provider = new WebTracerProvider({ resource: new Resource({ [SemanticResourceAttributes.SERVICE_NAME]: serviceName, }), }); provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter())); provider.addSpanProcessor(new SimpleSpanProcessor(new ZipkinExporter({ url: 'https://5.180.182.151/zipkin-endpoint/api/v2/spans', serviceName: serviceName, // Uncomment and customize the following if needed // getExportRequestHeaders: () => { // return { // foo: 'bar', // }; // } }))); provider.register(); return provider; } // Example usage: export const OpentelemetryChatProvider = createProvider('FO-chat-service'); export const OpentelemetryAgendaProvider = createProvider('FO-agenda-service'); export const OpentelemetryPublicationProvider = createProvider('FO-publication-service');