From 038d143344d600733f30e40b2a423ae76411ade0 Mon Sep 17 00:00:00 2001 From: Laurent Date: Tue, 27 Aug 2024 16:19:15 +0200 Subject: [PATCH] chore: add otel headers config to support axiom (#724) Co-authored-by: ben --- .env.local.example | 4 +++- packages/otel/env.ts | 15 +++++++++++++++ packages/otel/setup.ts | 6 ++++-- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/.env.local.example b/.env.local.example index 82865410..9ece11ff 100644 --- a/.env.local.example +++ b/.env.local.example @@ -105,8 +105,10 @@ WORKER_ACCESS_KEY=secretsecretsecretsecretsecretsecret ######################### OpenTelemetry Variables ################################ OTEL_ENABLED=false OTEL_EXPORTER_TRACES_ENDPOINT= -OTEL_EXPORTER_METRICS_ENDPOINT= +OTEL_EXPORTER_TRACES_HEADERS= OTEL_EXPORTER_LOGS_ENDPOINT= +OTEL_EXPORTER_LOGS_HEADERS= +OTEL_EXPORTER_METRICS_ENDPOINT= ########################## POSTHOG VARIABLES ################################ diff --git a/packages/otel/env.ts b/packages/otel/env.ts index 5a53ef21..f55b5e6a 100644 --- a/packages/otel/env.ts +++ b/packages/otel/env.ts @@ -1,6 +1,15 @@ import { createEnv } from '@t3-oss/env-core'; import { z } from 'zod'; +const stringToJSON = z.string().transform((str, ctx) => { + try { + return JSON.parse(str) as unknown; + } catch (e) { + ctx.addIssue({ code: 'custom', message: 'Invalid JSON' }); + return z.NEVER; + } +}); + export const env = createEnv({ server: { OTEL_ENABLED: z @@ -8,7 +17,13 @@ export const env = createEnv({ .optional() .transform((v) => v === 'true'), OTEL_EXPORTER_TRACES_ENDPOINT: z.string().url().optional(), + OTEL_EXPORTER_TRACES_HEADERS: stringToJSON + .pipe(z.record(z.string())) + .optional(), OTEL_EXPORTER_LOGS_ENDPOINT: z.string().url().optional(), + OTEL_EXPORTER_LOGS_HEADERS: stringToJSON + .pipe(z.record(z.string())) + .optional(), OTEL_EXPORTER_METRICS_ENDPOINT: z.string().url().optional(), NODE_ENV: z.enum(['development', 'production']).default('development') }, diff --git a/packages/otel/setup.ts b/packages/otel/setup.ts index 4b8de6a5..a39590fd 100644 --- a/packages/otel/setup.ts +++ b/packages/otel/setup.ts @@ -32,7 +32,8 @@ export const setupOpentelemetry = ({ traceProvider.addSpanProcessor( new BatchSpanProcessor( new OTLPTraceExporter({ - url: env.OTEL_EXPORTER_TRACES_ENDPOINT + url: env.OTEL_EXPORTER_TRACES_ENDPOINT, + headers: env.OTEL_EXPORTER_TRACES_HEADERS }) ) ); @@ -42,7 +43,8 @@ export const setupOpentelemetry = ({ loggerProvider.addLogRecordProcessor( new BatchLogRecordProcessor( new OTLPLogExporter({ - url: env.OTEL_EXPORTER_LOGS_ENDPOINT + url: env.OTEL_EXPORTER_LOGS_ENDPOINT, + headers: env.OTEL_EXPORTER_LOGS_HEADERS }) ) );