@blaxel/telemetry 0.2.18-dev.139 → 0.2.18-dev.142
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/telemetry.d.ts +1 -1
- package/dist/telemetry.js +41 -63
- package/package.json +2 -2
package/dist/telemetry.d.ts
CHANGED
|
@@ -34,7 +34,6 @@ declare class TelemetryManager {
|
|
|
34
34
|
private configured;
|
|
35
35
|
constructor();
|
|
36
36
|
initialize(): void;
|
|
37
|
-
setupBasicTracerProvider(): void;
|
|
38
37
|
setConfiguration(): Promise<void>;
|
|
39
38
|
get tracer(): import("@opentelemetry/api").Tracer;
|
|
40
39
|
get enabled(): boolean;
|
|
@@ -60,6 +59,7 @@ declare class TelemetryManager {
|
|
|
60
59
|
*/
|
|
61
60
|
getLogExporter(): OTLPLogExporter;
|
|
62
61
|
instrumentApp(): void;
|
|
62
|
+
setupProviders(): void;
|
|
63
63
|
setExporters(): void;
|
|
64
64
|
shutdownApp(): Promise<void>;
|
|
65
65
|
}
|
package/dist/telemetry.js
CHANGED
|
@@ -78,35 +78,13 @@ class TelemetryManager {
|
|
|
78
78
|
if (!this.enabled || this.initialized) {
|
|
79
79
|
return;
|
|
80
80
|
}
|
|
81
|
-
// Setup basic TracerProvider first - this is critical for context propagation
|
|
82
|
-
this.setupBasicTracerProvider();
|
|
83
|
-
// Now setup instrumentation - it can now extract traceparent headers
|
|
84
81
|
this.instrumentApp();
|
|
85
82
|
this.setupSignalHandler();
|
|
86
83
|
this.initialized = true;
|
|
87
|
-
// Add exporters later asynchronously
|
|
88
84
|
this.setConfiguration().catch((error) => {
|
|
89
85
|
core_1.logger.error("Error setting configuration:", error);
|
|
90
86
|
});
|
|
91
87
|
}
|
|
92
|
-
setupBasicTracerProvider() {
|
|
93
|
-
const resource = new BlaxelResource(this.resourceAttributes);
|
|
94
|
-
// Create TracerProvider with minimal setup for context propagation
|
|
95
|
-
this.nodeTracerProvider = new sdk_trace_node_1.NodeTracerProvider({
|
|
96
|
-
resource,
|
|
97
|
-
sampler: new sdk_trace_node_1.AlwaysOnSampler(),
|
|
98
|
-
spanProcessors: [
|
|
99
|
-
new DefaultAttributesSpanProcessor({
|
|
100
|
-
"workload.id": core_1.settings.name || "",
|
|
101
|
-
"workload.type": core_1.settings.type ? core_1.settings.type + "s" : "",
|
|
102
|
-
workspace: core_1.settings.workspace || "",
|
|
103
|
-
}),
|
|
104
|
-
],
|
|
105
|
-
});
|
|
106
|
-
// Register immediately - this enables context propagation
|
|
107
|
-
this.nodeTracerProvider.register();
|
|
108
|
-
console.log("🚀 TracerProvider registered BEFORE instrumentation - context propagation enabled");
|
|
109
|
-
}
|
|
110
88
|
async setConfiguration() {
|
|
111
89
|
if (!this.enabled || this.configured) {
|
|
112
90
|
return;
|
|
@@ -216,39 +194,24 @@ class TelemetryManager {
|
|
|
216
194
|
instrumentApp() {
|
|
217
195
|
// Setup telemetry provider first
|
|
218
196
|
core_1.telemetryRegistry.registerProvider(new telemetry_provider_1.OtelTelemetryProvider());
|
|
197
|
+
// Setup TracerProvider and other providers BEFORE instrumentation
|
|
198
|
+
this.setupProviders();
|
|
219
199
|
const httpInstrumentation = new instrumentation_http_1.HttpInstrumentation({
|
|
220
|
-
requireParentforOutgoingSpans:
|
|
200
|
+
requireParentforOutgoingSpans: false, // Allow spans from incoming headers
|
|
221
201
|
requestHook: (span) => {
|
|
222
202
|
// Debug incoming trace headers
|
|
223
203
|
console.log("=== HTTP INSTRUMENTATION REQUEST HOOK ===");
|
|
224
|
-
// Check if TracerProvider is registered
|
|
225
|
-
const tracer = api_1.trace.getTracer("debug");
|
|
226
|
-
console.log("TracerProvider available:", !!tracer);
|
|
227
|
-
// Check active context
|
|
228
|
-
const activeContext = api_1.context.active();
|
|
229
|
-
const spanContext = api_1.trace.getSpanContext(activeContext);
|
|
230
|
-
console.log("Span context from active context:", spanContext
|
|
231
|
-
? {
|
|
232
|
-
traceId: spanContext.traceId,
|
|
233
|
-
spanId: spanContext.spanId,
|
|
234
|
-
traceFlags: spanContext.traceFlags,
|
|
235
|
-
}
|
|
236
|
-
: "null");
|
|
237
204
|
// Check current span context after HTTP instrumentation processes headers
|
|
238
205
|
const activeSpan = api_1.trace.getActiveSpan();
|
|
239
206
|
if (activeSpan) {
|
|
240
|
-
console.log("
|
|
207
|
+
console.log("Active span in request hook:", {
|
|
241
208
|
traceId: activeSpan.spanContext().traceId,
|
|
242
209
|
spanId: activeSpan.spanContext().spanId,
|
|
243
210
|
traceFlags: activeSpan.spanContext().traceFlags,
|
|
244
211
|
});
|
|
245
212
|
}
|
|
246
213
|
else {
|
|
247
|
-
console.log("
|
|
248
|
-
console.log("Possible causes:");
|
|
249
|
-
console.log("1. TracerProvider not registered before HTTP instrumentation");
|
|
250
|
-
console.log("2. Traceparent header not properly extracted");
|
|
251
|
-
console.log("3. Context lost across async boundaries");
|
|
214
|
+
console.log("No active span found in request hook");
|
|
252
215
|
}
|
|
253
216
|
console.log("Current span from hook parameter:", {
|
|
254
217
|
traceId: span.spanContext().traceId,
|
|
@@ -262,6 +225,24 @@ class TelemetryManager {
|
|
|
262
225
|
instrumentations: [httpInstrumentation],
|
|
263
226
|
});
|
|
264
227
|
}
|
|
228
|
+
setupProviders() {
|
|
229
|
+
const resource = new BlaxelResource(this.resourceAttributes);
|
|
230
|
+
// Setup TracerProvider first - this is critical for context propagation
|
|
231
|
+
this.nodeTracerProvider = new sdk_trace_node_1.NodeTracerProvider({
|
|
232
|
+
resource,
|
|
233
|
+
sampler: new sdk_trace_node_1.AlwaysOnSampler(),
|
|
234
|
+
spanProcessors: [
|
|
235
|
+
new DefaultAttributesSpanProcessor({
|
|
236
|
+
"workload.id": core_1.settings.name || "",
|
|
237
|
+
"workload.type": core_1.settings.type ? core_1.settings.type + "s" : "",
|
|
238
|
+
workspace: core_1.settings.workspace || "",
|
|
239
|
+
}),
|
|
240
|
+
],
|
|
241
|
+
});
|
|
242
|
+
// Register the tracer provider BEFORE any instrumentation
|
|
243
|
+
this.nodeTracerProvider.register();
|
|
244
|
+
console.log("TracerProvider registered - ready for context propagation");
|
|
245
|
+
}
|
|
265
246
|
setExporters() {
|
|
266
247
|
const resource = new BlaxelResource(this.resourceAttributes);
|
|
267
248
|
// Setup logging
|
|
@@ -271,27 +252,24 @@ class TelemetryManager {
|
|
|
271
252
|
});
|
|
272
253
|
this.loggerProvider.addLogRecordProcessor(new sdk_logs_1.BatchLogRecordProcessor(logExporter));
|
|
273
254
|
api_logs_1.logs.setGlobalLoggerProvider(this.loggerProvider);
|
|
274
|
-
//
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
this.nodeTracerProvider.register();
|
|
293
|
-
console.log("📡 Exporters added to TracerProvider - spans will now be sent to backend");
|
|
294
|
-
}
|
|
255
|
+
// Recreate TracerProvider with exporters - this ensures proper initialization
|
|
256
|
+
const traceExporter = this.getTraceExporter();
|
|
257
|
+
this.nodeTracerProvider = new sdk_trace_node_1.NodeTracerProvider({
|
|
258
|
+
resource,
|
|
259
|
+
sampler: new sdk_trace_node_1.AlwaysOnSampler(),
|
|
260
|
+
spanProcessors: [
|
|
261
|
+
new DefaultAttributesSpanProcessor({
|
|
262
|
+
"workload.id": core_1.settings.name || "",
|
|
263
|
+
"workload.type": core_1.settings.type ? core_1.settings.type + "s" : "",
|
|
264
|
+
workspace: core_1.settings.workspace || "",
|
|
265
|
+
}),
|
|
266
|
+
new sdk_trace_node_1.BatchSpanProcessor(traceExporter),
|
|
267
|
+
new HasBeenProcessedSpanProcessor(traceExporter),
|
|
268
|
+
],
|
|
269
|
+
});
|
|
270
|
+
// Re-register the tracer provider with exporters
|
|
271
|
+
this.nodeTracerProvider.register();
|
|
272
|
+
console.log("TracerProvider re-registered with exporters");
|
|
295
273
|
// Setup metrics
|
|
296
274
|
const metricExporter = this.getMetricExporter();
|
|
297
275
|
this.meterProvider = new sdk_metrics_1.MeterProvider({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blaxel/telemetry",
|
|
3
|
-
"version": "0.2.18-dev.
|
|
3
|
+
"version": "0.2.18-dev.142",
|
|
4
4
|
"description": "Blaxel SDK for TypeScript",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Blaxel, INC (https://blaxel.ai)",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"@opentelemetry/sdk-trace-base": "^2.0.0",
|
|
72
72
|
"@opentelemetry/sdk-trace-node": "^2.0.0",
|
|
73
73
|
"ai": "^4.3.13",
|
|
74
|
-
"@blaxel/core": "0.2.18-dev.
|
|
74
|
+
"@blaxel/core": "0.2.18-dev.142"
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
|
77
77
|
"@eslint/js": "^9.26.0",
|