@blaxel/telemetry 0.2.18-dev.138 → 0.2.18-dev.139
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 -0
- package/dist/telemetry.js +62 -20
- package/package.json +2 -2
package/dist/telemetry.d.ts
CHANGED
package/dist/telemetry.js
CHANGED
|
@@ -78,13 +78,35 @@ 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
|
|
81
84
|
this.instrumentApp();
|
|
82
85
|
this.setupSignalHandler();
|
|
83
86
|
this.initialized = true;
|
|
87
|
+
// Add exporters later asynchronously
|
|
84
88
|
this.setConfiguration().catch((error) => {
|
|
85
89
|
core_1.logger.error("Error setting configuration:", error);
|
|
86
90
|
});
|
|
87
91
|
}
|
|
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
|
+
}
|
|
88
110
|
async setConfiguration() {
|
|
89
111
|
if (!this.enabled || this.configured) {
|
|
90
112
|
return;
|
|
@@ -199,17 +221,34 @@ class TelemetryManager {
|
|
|
199
221
|
requestHook: (span) => {
|
|
200
222
|
// Debug incoming trace headers
|
|
201
223
|
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");
|
|
202
237
|
// Check current span context after HTTP instrumentation processes headers
|
|
203
238
|
const activeSpan = api_1.trace.getActiveSpan();
|
|
204
239
|
if (activeSpan) {
|
|
205
|
-
console.log("Active span in request hook:", {
|
|
240
|
+
console.log("✅ Active span found in request hook:", {
|
|
206
241
|
traceId: activeSpan.spanContext().traceId,
|
|
207
242
|
spanId: activeSpan.spanContext().spanId,
|
|
208
243
|
traceFlags: activeSpan.spanContext().traceFlags,
|
|
209
244
|
});
|
|
210
245
|
}
|
|
211
246
|
else {
|
|
212
|
-
console.log("No active span found in request hook");
|
|
247
|
+
console.log("❌ No active span found in request hook");
|
|
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");
|
|
213
252
|
}
|
|
214
253
|
console.log("Current span from hook parameter:", {
|
|
215
254
|
traceId: span.spanContext().traceId,
|
|
@@ -232,24 +271,27 @@ class TelemetryManager {
|
|
|
232
271
|
});
|
|
233
272
|
this.loggerProvider.addLogRecordProcessor(new sdk_logs_1.BatchLogRecordProcessor(logExporter));
|
|
234
273
|
api_logs_1.logs.setGlobalLoggerProvider(this.loggerProvider);
|
|
235
|
-
//
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
new
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
274
|
+
// Add exporters to existing TracerProvider (don't recreate!)
|
|
275
|
+
if (this.nodeTracerProvider) {
|
|
276
|
+
const traceExporter = this.getTraceExporter();
|
|
277
|
+
// Create new TracerProvider with exporters but keep context continuity
|
|
278
|
+
const newTracerProvider = new sdk_trace_node_1.NodeTracerProvider({
|
|
279
|
+
resource,
|
|
280
|
+
sampler: new sdk_trace_node_1.AlwaysOnSampler(),
|
|
281
|
+
spanProcessors: [
|
|
282
|
+
new DefaultAttributesSpanProcessor({
|
|
283
|
+
"workload.id": core_1.settings.name || "",
|
|
284
|
+
"workload.type": core_1.settings.type ? core_1.settings.type + "s" : "",
|
|
285
|
+
workspace: core_1.settings.workspace || "",
|
|
286
|
+
}),
|
|
287
|
+
new sdk_trace_node_1.BatchSpanProcessor(traceExporter),
|
|
288
|
+
new HasBeenProcessedSpanProcessor(traceExporter),
|
|
289
|
+
],
|
|
290
|
+
});
|
|
291
|
+
this.nodeTracerProvider = newTracerProvider;
|
|
292
|
+
this.nodeTracerProvider.register();
|
|
293
|
+
console.log("📡 Exporters added to TracerProvider - spans will now be sent to backend");
|
|
294
|
+
}
|
|
253
295
|
// Setup metrics
|
|
254
296
|
const metricExporter = this.getMetricExporter();
|
|
255
297
|
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.139",
|
|
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.139"
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
|
77
77
|
"@eslint/js": "^9.26.0",
|