Skip to content

Commit ff8ada2

Browse files
committed
chore(otel): more configurable otel options
1 parent 90757c0 commit ff8ada2

3 files changed

Lines changed: 14 additions & 5 deletions

File tree

.env.example

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ NEXT_TELEMETRY_DISABLED=1
77
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4318/v1/traces
88
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://localhost:4318/v1/metrics
99
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=http://localhost:4318/v1/logs
10+
OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4318"
1011

1112
## Authentication headers
1213
## Examples:
@@ -16,3 +17,4 @@ OTEL_EXPORTER_OTLP_HEADERS=
1617

1718
## Service name
1819
OTEL_SERVICE_NAME=quintet
20+
OTEL_SERVICE_NAMESPACE=website

src/otel/config.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ export interface OtelConfig {
22
traceEndpoint: string;
33
metricEndpoint: string;
44
logEndpoint: string;
5+
otelEndpoint: string;
56
apiKey: string;
7+
serviceNamespace: string;
68
serviceName: string;
79
}
810

@@ -19,7 +21,9 @@ export const getOtelConfig = (): OtelConfig | null => {
1921
const traceEndpoint = process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT;
2022
const metricEndpoint = process.env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT;
2123
const logEndpoint = process.env.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT;
24+
const otelEndpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT;
2225
const apiKey = process.env.OTEL_EXPORTER_OTLP_HEADERS || "";
26+
const serviceNamespace = process.env.OTEL_SERVICE_NAMESPACE || "website";
2327
const serviceName = process.env.OTEL_SERVICE_NAME || "quintet";
2428

2529
if (traceEndpoint && metricEndpoint && logEndpoint) {
@@ -29,18 +33,21 @@ export const getOtelConfig = (): OtelConfig | null => {
2933
}
3034
if (!isValidUrl(metricEndpoint)) {
3135
console.warn(`Invalid metric endpoint format: ${metricEndpoint}`);
32-
return null;
3336
}
3437
if (!isValidUrl(logEndpoint)) {
3538
console.warn(`Invalid log endpoint format: ${logEndpoint}`);
36-
return null;
39+
}
40+
if (!isValidUrl(otelEndpoint)) {
41+
console.warn(`Invalid log endpoint format: ${otelEndpoint}`);
3742
}
3843

3944
return {
4045
traceEndpoint,
4146
metricEndpoint,
4247
logEndpoint,
48+
otelEndpoint,
4349
apiKey,
50+
serviceNamespace,
4451
serviceName
4552
};
4653
}

src/otel/lifecycle.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ export function initializeOtel() {
2525
}
2626

2727
process.env.OTEL_TRACES_EXPORTER = "otlp";
28-
process.env.OTEL_EXPORTER_OTLP_ENDPOINT=
29-
process.env.OTEL_NODE_RESOURCE_DETECTORS ="env,host,os";
28+
process.env.OTEL_EXPORTER_OTLP_ENDPOINT = config.otelEndpoint;
29+
process.env.OTEL_NODE_RESOURCE_DETECTORS = "env,host,os";
3030
process.env.OTEL_EXPORTER_OTLP_HEADERS = config.apiKey;
3131
process.env.OTEL_SERVICE_NAME = config.serviceName;
32-
process.env.OTEL_RESOURCE_ATTRIBUTES = `service.name=${config.serviceName},service.namespace="website",service.version=${process.env.npm_package_version || "1.0.0"},deployment.environment=${process.env.NODE_ENV || "development"},service.instance.id=${process.env.HOSTNAME || process.env.COMPUTERNAME || "unknown"},host.name=${process.env.HOSTNAME || process.env.COMPUTERNAME || "localhost"}`;
32+
process.env.OTEL_RESOURCE_ATTRIBUTES = `service.name=${config.serviceName},service.namespace=${config.serviceNamespace},service.version=${process.env.npm_package_version || "1.0.0"},deployment.environment=${process.env.NODE_ENV || "development"},service.instance.id=${process.env.HOSTNAME || process.env.COMPUTERNAME || "unknown"},host.name=${process.env.HOSTNAME || process.env.COMPUTERNAME || "localhost"}`;
3333

3434
initializeNativeOtel(config);
3535

0 commit comments

Comments
 (0)