mirror of
https://github.com/FoggedLens/deflock.git
synced 2026-05-16 21:23:31 +02:00
a39f1a6a36
* init otel * deflock group * no internal metrics * only log errors for now
50 lines
1.8 KiB
TypeScript
50 lines
1.8 KiB
TypeScript
import { NodeTracerProvider, BatchSpanProcessor } from '@opentelemetry/sdk-trace-node';
|
|
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
|
|
import { LoggerProvider, BatchLogRecordProcessor } from '@opentelemetry/sdk-logs';
|
|
import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';
|
|
import { MeterProvider, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';
|
|
import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
|
|
import { resourceFromAttributes } from '@opentelemetry/resources';
|
|
import { trace, metrics } from '@opentelemetry/api';
|
|
import { logs, SeverityNumber } from '@opentelemetry/api-logs';
|
|
|
|
export { SeverityNumber };
|
|
|
|
const OTEL_ENDPOINT = process.env.OTEL_EXPORTER_OTLP_ENDPOINT ?? 'http://127.0.0.1:4318';
|
|
|
|
const resource = resourceFromAttributes({
|
|
'service.name': 'deflock-api',
|
|
'deployment.environment': process.env.NODE_ENV ?? 'production',
|
|
});
|
|
|
|
const tracerProvider = new NodeTracerProvider({
|
|
resource,
|
|
spanProcessors: [
|
|
new BatchSpanProcessor(new OTLPTraceExporter({ url: `${OTEL_ENDPOINT}/v1/traces` })),
|
|
],
|
|
});
|
|
tracerProvider.register();
|
|
|
|
const loggerProvider = new LoggerProvider({
|
|
resource,
|
|
processors: [
|
|
new BatchLogRecordProcessor(new OTLPLogExporter({ url: `${OTEL_ENDPOINT}/v1/logs` })),
|
|
],
|
|
});
|
|
logs.setGlobalLoggerProvider(loggerProvider);
|
|
|
|
const meterProvider = new MeterProvider({
|
|
resource,
|
|
readers: [
|
|
new PeriodicExportingMetricReader({
|
|
exporter: new OTLPMetricExporter({ url: `${OTEL_ENDPOINT}/v1/metrics` }),
|
|
exportIntervalMillis: 10_000,
|
|
}),
|
|
],
|
|
});
|
|
metrics.setGlobalMeterProvider(meterProvider);
|
|
|
|
export const tracer = trace.getTracer('deflock-api', '1.0.0');
|
|
export const otelLogger = logs.getLogger('deflock-api', '1.0.0');
|
|
export const meter = metrics.getMeter('deflock-api', '1.0.0');
|