Skip to content

Commit 5d4d7d8

Browse files
committed
feat: fetch OpenTelemetry configuration at runtime for dynamic client setup
1 parent a385b86 commit 5d4d7d8

1 file changed

Lines changed: 15 additions & 9 deletions

File tree

src/instrumentation-client.ts

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
import "@opentelemetry/api-logs"
2-
import initializeLogs, {openTelemetryClientLogsProvider} from "@core/util/open-telemetry-logs"
3-
import initializeTraces, {openTelemetryClientTracesProvider} from "@core/util/open-telemetry-traces"
4-
import {logs} from "@opentelemetry/api-logs"
5-
import {trace} from "@opentelemetry/api"
2+
import {ClientOtelConfig} from "@core/util/open-telemetry"
3+
import {initializeClientLogs} from "@core/util/open-telemetry-logs"
4+
import {initializeClientTraces} from "@core/util/open-telemetry-traces"
65

7-
initializeLogs("client")
8-
if (openTelemetryClientLogsProvider) logs.setGlobalLoggerProvider(openTelemetryClientLogsProvider)
9-
10-
initializeTraces("client")
11-
if (openTelemetryClientTracesProvider) trace.setGlobalTracerProvider(openTelemetryClientTracesProvider)
6+
// The browser OpenTelemetry configuration is fetched from the server at runtime
7+
// (see /api/config) instead of relying on build-time inlined NEXT_PUBLIC_*
8+
// variables, so the collector endpoints can be changed without rebuilding.
9+
fetch("/api/config")
10+
.then((response) => response.json())
11+
.then((config: ClientOtelConfig) => {
12+
initializeClientLogs(config)
13+
initializeClientTraces(config)
14+
})
15+
.catch(() => {
16+
// Telemetry is best-effort; ignore config fetch/initialization failures.
17+
})

0 commit comments

Comments
 (0)