Skip to content

Commit 649cf78

Browse files
committed
feat: make OpenTelemetry configuration optional for service name, headers, and endpoints
1 parent 4c96f98 commit 649cf78

6 files changed

Lines changed: 51 additions & 44 deletions

File tree

.env.local

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,17 @@ NEXT_PUBLIC_SCULPTOR_VERSION=0.0.0
77
NEXT_PUBLIC_PICTOR_VERSION=0.5.1
88
NEXT_PUBLIC_ALLOWED_REDIRECT_DOMAINS=*.code0.tech,*.codezero.build
99

10-
NEXT_PUBLIC_OTEL_SERVICE_NAME="sculptor-client"
11-
NEXT_PUBLIC_OTEL_HEADER="Authorization: Basic <auth-token>"
12-
NEXT_PUBLIC_OTEL_ENVIRONMENT="development"
10+
NEXT_PUBLIC_OTEL_SERVICE_NAME=#"sculptor-client"
11+
NEXT_PUBLIC_OTEL_HEADER=#"Authorization: Basic <auth-token>"
12+
NEXT_PUBLIC_OTEL_ENVIRONMENT=#"development"
1313

14-
OTEL_SERVICE_NAME="sculptor-server"
15-
OTEL_HEADER="Authorization: Basic <auth-token>"
14+
OTEL_SERVICE_NAME=#"sculptor-server"
15+
OTEL_HEADER=#"Authorization: Basic <auth-token>"
1616

17-
NEXT_PUBLIC_OTEL_LOGS_ENDPOINT="http://localhost:4318/v1/logs"
18-
OTEL_LOGS_ENDPOINT="http://localhost:4318/v1/logs"
17+
NEXT_PUBLIC_OTEL_LOGS_ENDPOINT=#"http://localhost:4318/v1/logs"
18+
OTEL_LOGS_ENDPOINT=#"http://localhost:4318/v1/logs"
1919

20-
NEXT_PUBLIC_OTEL_TRACES_ENDPOINT="http://localhost:4318/v1/traces"
21-
OTEL_TRACES_ENDPOINT="http://localhost:4318/v1/traces"
20+
NEXT_PUBLIC_OTEL_TRACES_ENDPOINT=#"http://localhost:4318/v1/traces"
21+
OTEL_TRACES_ENDPOINT=#"http://localhost:4318/v1/traces"
2222

23-
OTEL_METRICS_ENDPOINT="http://localhost:4318/v1/metrics"
23+
OTEL_METRICS_ENDPOINT=#"http://localhost:4318/v1/metrics"

src/instrumentation-client.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import initializeTraces, {openTelemetryClientTracesProvider} from "@core/util/op
44
import {logs} from "@opentelemetry/api-logs"
55
import {trace} from "@opentelemetry/api"
66

7+
if (process.env)
78
initializeLogs("client")
89
logs.setGlobalLoggerProvider(openTelemetryClientLogsProvider)
910

src/packages/core/src/util/open-telemetry-logs.ts

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,34 @@ import {resource, serverResource} from "@core/util/open-telemetry"
44
import {recordException} from "@core/util/open-telemetry-exceptions"
55
import {parseHeaders} from "@core/util/headers";
66

7-
export const openTelemetryServerLogsReader = new OTLPLogExporter({
7+
export const openTelemetryServerLogsReader = process.env.OTEL_LOGS_ENDPOINT ? new OTLPLogExporter({
88
url: process.env.OTEL_LOGS_ENDPOINT,
99
headers: parseHeaders(process.env.OTEL_HEADER),
10-
})
10+
}) : undefined
1111

12-
export const openTelemetryClientLogsReader = new OTLPLogExporter({
12+
export const openTelemetryClientLogsReader = process.env.NEXT_PUBLIC_OTEL_LOGS_ENDPOINT ? new OTLPLogExporter({
1313
url: process.env.NEXT_PUBLIC_OTEL_LOGS_ENDPOINT,
1414
headers: parseHeaders(process.env.NEXT_PUBLIC_OTEL_HEADER),
15-
})
15+
}) : undefined
1616

17-
export const openTelemetryServerLogsProvider = new LoggerProvider({
17+
export const openTelemetryServerLogsProvider = openTelemetryServerLogsReader ? new LoggerProvider({
1818
resource: serverResource,
1919
processors: [new BatchLogRecordProcessor(openTelemetryServerLogsReader)]
20-
})
20+
}) : undefined
2121

22-
export const openTelemetryClientLogsProvider = new LoggerProvider({
22+
export const openTelemetryClientLogsProvider = openTelemetryClientLogsReader ? new LoggerProvider({
2323
resource: resource,
2424
processors: [new BatchLogRecordProcessor(openTelemetryClientLogsReader)]
25-
})
25+
}) : undefined
2626

2727
export default (level: 'server' | "client" = "server") => {
2828

29+
if (level === 'server' && !openTelemetryServerLogsProvider) return
30+
if (level === 'client' && !openTelemetryClientLogsProvider) return
31+
2932
const logger = level === "server" ?
30-
openTelemetryServerLogsProvider.getLogger("default", "1.0.0") :
31-
openTelemetryClientLogsProvider.getLogger("default", "1.0.0")
33+
openTelemetryServerLogsProvider?.getLogger("default", "1.0.0") :
34+
openTelemetryClientLogsProvider?.getLogger("default", "1.0.0")
3235

3336
const originalConsole = {
3437
log: console.log,
@@ -52,7 +55,7 @@ export default (level: 'server' | "client" = "server") => {
5255
.map((arg) => (typeof arg === "object" ? JSON.stringify(arg) : String(arg)))
5356
.join(" ")
5457

55-
logger.emit({
58+
logger?.emit({
5659
severityNumber: SeverityNumber.INFO,
5760
severityText: "INFO",
5861
body: message,
@@ -72,7 +75,7 @@ export default (level: 'server' | "client" = "server") => {
7275
.map((arg) => (typeof arg === "object" ? JSON.stringify(arg) : String(arg)))
7376
.join(" ")
7477

75-
logger.emit({
78+
logger?.emit({
7679
severityNumber: SeverityNumber.INFO,
7780
severityText: "INFO",
7881
body: message,
@@ -91,7 +94,7 @@ export default (level: 'server' | "client" = "server") => {
9194
.map((arg) => (typeof arg === "object" ? JSON.stringify(arg) : String(arg)))
9295
.join(" ")
9396

94-
logger.emit({
97+
logger?.emit({
9598
severityNumber: SeverityNumber.WARN,
9699
severityText: "WARN",
97100
body: message,
@@ -110,7 +113,7 @@ export default (level: 'server' | "client" = "server") => {
110113
.map((arg) => (typeof arg === "object" ? JSON.stringify(arg) : String(arg)))
111114
.join(" ")
112115

113-
logger.emit({
116+
logger?.emit({
114117
severityNumber: SeverityNumber.ERROR,
115118
severityText: "ERROR",
116119
body: message,
@@ -132,7 +135,7 @@ export default (level: 'server' | "client" = "server") => {
132135
.map((arg) => (typeof arg === "object" ? JSON.stringify(arg) : String(arg)))
133136
.join(" ")
134137

135-
logger.emit({
138+
logger?.emit({
136139
severityNumber: SeverityNumber.DEBUG,
137140
severityText: "DEBUG",
138141
body: message,

src/packages/core/src/util/open-telemetry-metrics.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,25 @@ import {OTLPMetricExporter} from "@opentelemetry/exporter-metrics-otlp-http"
44
import {parseHeaders} from "@core/util/headers";
55

66

7-
export const openTelemetryMetricReader = new PeriodicExportingMetricReader({
7+
export const openTelemetryMetricReader = process.env.OTEL_METRICS_ENDPOINT ? new PeriodicExportingMetricReader({
88
exporter: new OTLPMetricExporter({
99

1010
url: process.env.OTEL_METRICS_ENDPOINT,
1111
headers: parseHeaders(process.env.OTEL_HEADER),
1212
}),
1313
exportIntervalMillis: 10000,
14-
})
14+
}) : undefined
1515

16-
export const openTelemetryMetricProvider = new MeterProvider({
16+
export const openTelemetryMetricProvider = openTelemetryMetricReader ? new MeterProvider({
1717
resource: serverResource,
1818
readers: [openTelemetryMetricReader],
19-
})
19+
}) : undefined
2020

2121
export default () => {
2222

23+
24+
if (!openTelemetryMetricProvider) return
25+
2326
const g = globalThis as any
2427
const proc = g['process']
2528

src/packages/core/src/util/open-telemetry-traces.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,33 +8,33 @@ import {FetchInstrumentation} from '@opentelemetry/instrumentation-fetch'
88
import {ZoneContextManager} from '@opentelemetry/context-zone'
99
import {parseHeaders} from "@core/util/headers";
1010

11-
export const openTelemetryServerTracesReader = new OTLPTraceExporter({
11+
export const openTelemetryServerTracesReader = process.env.OTEL_TRACES_ENDPOINT ? new OTLPTraceExporter({
1212
url: process.env.OTEL_TRACES_ENDPOINT,
1313
headers: parseHeaders(process.env.OTEL_HEADER),
14-
})
14+
}) : undefined
1515

16-
export const openTelemetryClientTracesReader = new OTLPTraceExporter({
17-
url: process.env.NEXT_PUBLIC_OTEL_TRACES_ENDPOINT,
16+
export const openTelemetryClientTracesReader = process.env.NEXT_PUBLIC_OTEL_TRACES_ENDPOINT ? new OTLPTraceExporter({
17+
url: process.env.NEXT_PUBLIC_OTEL_TRACES_ENDPOINT || "",
1818
headers: parseHeaders(process.env.NEXT_PUBLIC_OTEL_HEADER),
19-
})
19+
}) : undefined
2020

21-
export const openTelemetryServerTracesProvider = new WebTracerProvider({
21+
export const openTelemetryServerTracesProvider = openTelemetryServerTracesReader ? new WebTracerProvider({
2222
resource: serverResource,
2323
spanProcessors: [new BatchSpanProcessor(openTelemetryServerTracesReader)],
24-
})
24+
}) : undefined
2525

26-
export const openTelemetryClientTracesProvider = new WebTracerProvider({
26+
export const openTelemetryClientTracesProvider = openTelemetryClientTracesReader ? new WebTracerProvider({
2727
resource: resource,
2828
spanProcessors: [new BatchSpanProcessor(openTelemetryClientTracesReader)],
29-
})
29+
}) : undefined
3030

3131
export default (level: 'server' | "client" = "server") => {
3232

33-
if (level === 'server') {
33+
if (level === 'server' && openTelemetryServerTracesProvider) {
3434
openTelemetryServerTracesProvider.register({
3535
contextManager: new ZoneContextManager(),
3636
})
37-
} else if (level === 'client') {
37+
} else if (level === 'client' && openTelemetryClientTracesProvider) {
3838
openTelemetryClientTracesProvider.register({
3939
contextManager: new ZoneContextManager(),
4040
})
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import {resourceFromAttributes} from "@opentelemetry/resources";
22

33
export const resource = resourceFromAttributes({
4-
'service.name': process.env.NEXT_PUBLIC_OTEL_SERVICE_NAME,
4+
'service.name': process.env.NEXT_PUBLIC_OTEL_SERVICE_NAME || "service.name",
55
'service.version': (process.env.NEXT_PUBLIC_SCULPTOR_VERSION ?? "0.0.0") + "-" + (process.env.NEXT_PUBLIC_EDITION ?? "edition"),
6-
'deployment.environment.name': process.env.NEXT_PUBLIC_OTEL_ENVIRONMENT,
6+
'deployment.environment.name': process.env.NEXT_PUBLIC_OTEL_ENVIRONMENT || "deployment.environment.name",
77
});
88

99
export const serverResource = resourceFromAttributes({
10-
'service.name': process.env.OTEL_SERVICE_NAME,
10+
'service.name': process.env.OTEL_SERVICE_NAME || "service.name",
1111
'service.version': (process.env.NEXT_PUBLIC_SCULPTOR_VERSION ?? "0.0.0") + "-" + (process.env.NEXT_PUBLIC_EDITION ?? "edition"),
12-
'deployment.environment.name': process.env.NEXT_PUBLIC_OTEL_ENVIRONMENT,
12+
'deployment.environment.name': process.env.NEXT_PUBLIC_OTEL_ENVIRONMENT || "deployment.environment.name",
1313
});

0 commit comments

Comments
 (0)