mirror of
https://github.com/FoggedLens/deflock.git
synced 2026-08-18 00:17:13 +02:00
Add OTel (#114)
* init otel * deflock group * no internal metrics * only log errors for now
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
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');
|
||||
Reference in New Issue
Block a user