Files
doneit-web/src/app/services/monitoring/opentelemetry/opentelemetry.ts
T

98 lines
3.6 KiB
TypeScript
Raw Normal View History

2024-06-17 09:02:10 +01:00
import { ConsoleSpanExporter, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base';
import { WebTracerProvider } from '@opentelemetry/sdk-trace-web';
2024-10-07 13:27:49 +01:00
import { ZipkinExporter } from '@opentelemetry/exporter-zipkin';
2024-06-17 09:02:10 +01:00
import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'
import { Resource } from '@opentelemetry/resources';
2024-10-07 13:27:49 +01:00
//import { OTLPTraceExporter } from '@opentelemetry/exporter-otlp-http';
2024-07-22 11:37:02 +01:00
import { context, trace, propagation } from '@opentelemetry/api';
2024-08-05 11:12:51 +01:00
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
2024-10-07 13:27:49 +01:00
// const { OTLPTraceExporter: OTLPTraceExporterProto } = require("@opentelemetry/exporter-trace-otlp-proto");
2024-06-17 09:02:10 +01:00
function createProvider(serviceName) {
const provider = new WebTracerProvider({
resource: new Resource({
[SemanticResourceAttributes.SERVICE_NAME]: serviceName,
}),
});
2024-06-21 13:45:06 +01:00
// provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));
2024-08-05 11:12:51 +01:00
// provider.addSpanProcessor(new SimpleSpanProcessor(new ZipkinExporter({
// //url: 'https://5-180-182-151.cloud-xip.com:85/zipkin-endpoint/api/v2/spans',
// url: 'https://185-229-224-75.cloud-xip.com:85/zipkin-endpoint/api/v2/spans',
// serviceName: serviceName,
// getExportRequestHeaders: () => {
// return {
// 'Authorization': 'Basic ' + btoa('tabteste@006:tabteste@006'),
// };
// }
// })));
provider.addSpanProcessor(new SimpleSpanProcessor(new OTLPTraceExporter({
url: 'https://185-229-224-75.cloud-xip.com:85/collector2/v1/traces',
2024-06-17 09:02:10 +01:00
})));
provider.register();
return provider;
}
// Example usage:
export const OpentelemetryChatProvider = createProvider('FO-chat-service');
2024-11-06 09:13:36 +01:00
export const OpentelemetryUserProvider = createProvider('FO-User-service');
2024-06-17 09:02:10 +01:00
export const OpentelemetryAgendaProvider = createProvider('FO-agenda-service');
2024-06-18 12:03:38 +01:00
export const OpentelemetryNotificationProvider = createProvider('FO-notification');
2024-06-19 09:03:26 +01:00
export const OpentelemetryInterceptorProvider = createProvider('FO-interceptor');
2024-06-17 09:02:10 +01:00
export const OpentelemetryPublicationProvider = createProvider('FO-publication-service');
2024-07-29 17:36:35 +01:00
export const OpentelemetryOtherProvider = createProvider('FO-other-service');
2024-07-22 11:37:02 +01:00
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()