mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-18 12:37:53 +00:00
102 lines
3.7 KiB
TypeScript
102 lines
3.7 KiB
TypeScript
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';
|
|
//import { OTLPTraceExporter } from '@opentelemetry/exporter-otlp-http';
|
|
import { context, trace, propagation } from '@opentelemetry/api';
|
|
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
|
|
// const { OTLPTraceExporter: OTLPTraceExporterProto } = require("@opentelemetry/exporter-trace-otlp-proto");
|
|
|
|
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.cloud-xip.com:85/zipkin-endpoint/api/v2/spans',
|
|
//url: 'https://dev-obs01.doneit.co.ao/api/v2/spans',
|
|
url: 'https://tracing.petermaquiran.xyz/api/v2/spans',
|
|
serviceName: serviceName,
|
|
getExportRequestHeaders: () => {
|
|
return {
|
|
'Authorization': `Basic ${btoa('doneit:Tabteste@006')}`,
|
|
};
|
|
},
|
|
headers: {
|
|
'Authorization': `Basic ${btoa('doneit:Tabteste@006')}`,
|
|
}
|
|
})));
|
|
|
|
// provider.addSpanProcessor(new SimpleSpanProcessor(new OTLPTraceExporter({
|
|
// url: 'https://ip-2-56-212-253-123420.vps.hosted-by-mvps.net:85/collector/v1/traces',
|
|
// })));
|
|
|
|
provider.register();
|
|
return provider;
|
|
}
|
|
|
|
// Example usage:
|
|
export const OpentelemetryChatProvider = createProvider('FO-chat-service');
|
|
export const OpentelemetryUserProvider = createProvider('FO-User-service');
|
|
export const OpentelemetryAgendaProvider = createProvider('FO-agenda-service');
|
|
export const OpentelemetryNotificationProvider = createProvider('FO-notification');
|
|
export const OpentelemetryInterceptorProvider = createProvider('FO-interceptor');
|
|
export const OpentelemetryPublicationProvider = createProvider('FO-publication-service');
|
|
export const OpentelemetryOtherProvider = createProvider('FO-other-service');
|
|
|
|
export const OpentelemetryLogging = createProvider('logging');
|
|
|
|
const tracerInstance = OpentelemetryAgendaProvider.getTracer('example-tracer-hole', '111', {})
|
|
|
|
|
|
function parentSpanExample() {
|
|
// Create a tracer instance
|
|
const tracer = trace.getTracer('FO-chat-service');
|
|
|
|
// Start a parent span
|
|
const parentSpan = tracer.startSpan('parent-span');
|
|
parentSpan.setAttribute('key', 'value')
|
|
|
|
const traceId = parentSpan.spanContext().traceId;
|
|
const spanId = parentSpan.spanContext().spanId;
|
|
parentSpan.end(); // End the parent span
|
|
|
|
const spanContext = {
|
|
traceId: traceId,
|
|
spanId: spanId,
|
|
traceFlags: 1 // 1 means the trace is sampled
|
|
};
|
|
|
|
// Create a new context with the parent span
|
|
const parentContext = trace.setSpan(context.active(), parentSpan);
|
|
const parentContext1 = trace.setSpan(context.active(), trace.wrapSpanContext(spanContext));
|
|
|
|
// Start a new child span
|
|
const childSpan = tracer.startSpan('child-span1', {root: false}, parentContext1);
|
|
childSpan.end();
|
|
|
|
// Simulate some work
|
|
setTimeout(() => {
|
|
childSpanExample(parentContext); // Pass the context to child span
|
|
|
|
}, 500);
|
|
}
|
|
|
|
|
|
function childSpanExample(parentContext) {
|
|
// Create a new child span with the parent context
|
|
const tracer = trace.getTracer('FO-chat-service');
|
|
const childSpan = tracer.startSpan('child-span', undefined, parentContext);
|
|
|
|
// Simulate some work
|
|
setTimeout(() => {
|
|
childSpan.end(); // End the child span
|
|
}, 500);
|
|
}
|
|
|
|
// parentSpanExample()
|