@blaxel/telemetry 0.2.17-dev.122 → 0.2.17-dev.125
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 +10 -0
- package/dist/telemetry.js +54 -0
- package/dist/telemetry_provider.js +7 -0
- package/package.json +2 -2
package/dist/telemetry.d.ts
CHANGED
|
@@ -42,6 +42,14 @@ declare class TelemetryManager {
|
|
|
42
42
|
flush(): Promise<void>;
|
|
43
43
|
getLogger(): Promise<Logger>;
|
|
44
44
|
setupSignalHandler(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Check if telemetry is properly initialized and active
|
|
47
|
+
*/
|
|
48
|
+
get isActive(): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Re-initialize telemetry if it was shut down
|
|
51
|
+
*/
|
|
52
|
+
reinitialize(): Promise<void>;
|
|
45
53
|
/**
|
|
46
54
|
* Get resource attributes for OpenTelemetry.
|
|
47
55
|
*/
|
|
@@ -63,4 +71,6 @@ declare class TelemetryManager {
|
|
|
63
71
|
shutdownApp(): Promise<void>;
|
|
64
72
|
}
|
|
65
73
|
export declare const blaxelTelemetry: TelemetryManager;
|
|
74
|
+
export declare function ensureTelemetryActive(): Promise<void>;
|
|
75
|
+
export declare function isTelemetryActive(): boolean;
|
|
66
76
|
export {};
|
package/dist/telemetry.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.blaxelTelemetry = exports.DefaultAttributesSpanProcessor = exports.BlaxelResource = void 0;
|
|
4
|
+
exports.ensureTelemetryActive = ensureTelemetryActive;
|
|
5
|
+
exports.isTelemetryActive = isTelemetryActive;
|
|
4
6
|
const core_1 = require("@blaxel/core");
|
|
5
7
|
const api_1 = require("@opentelemetry/api");
|
|
6
8
|
const api_logs_1 = require("@opentelemetry/api-logs");
|
|
@@ -142,6 +144,39 @@ class TelemetryManager {
|
|
|
142
144
|
});
|
|
143
145
|
});
|
|
144
146
|
}
|
|
147
|
+
// Handle uncaughtException differently - log but don't shutdown telemetry
|
|
148
|
+
process.on("uncaughtException", (error) => {
|
|
149
|
+
core_1.logger.error("Uncaught exception:", error);
|
|
150
|
+
// Don't shutdown telemetry for uncaught exceptions
|
|
151
|
+
});
|
|
152
|
+
// Don't listen to 'exit' event as it can be triggered by various things
|
|
153
|
+
// and we don't want to shutdown telemetry unless explicitly requested
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Check if telemetry is properly initialized and active
|
|
157
|
+
*/
|
|
158
|
+
get isActive() {
|
|
159
|
+
return (this.initialized &&
|
|
160
|
+
this.configured &&
|
|
161
|
+
this.nodeTracerProvider !== null &&
|
|
162
|
+
this.meterProvider !== null);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Re-initialize telemetry if it was shut down
|
|
166
|
+
*/
|
|
167
|
+
async reinitialize() {
|
|
168
|
+
if (!this.isActive) {
|
|
169
|
+
core_1.logger.info("Reinitializing telemetry...");
|
|
170
|
+
this.initialized = false;
|
|
171
|
+
this.configured = false;
|
|
172
|
+
this.nodeTracerProvider = null;
|
|
173
|
+
this.meterProvider = null;
|
|
174
|
+
this.loggerProvider = null;
|
|
175
|
+
this.otelLogger = null;
|
|
176
|
+
this.initialize();
|
|
177
|
+
await this.setConfiguration();
|
|
178
|
+
core_1.logger.info("Telemetry reinitialized successfully");
|
|
179
|
+
}
|
|
145
180
|
}
|
|
146
181
|
/**
|
|
147
182
|
* Get resource attributes for OpenTelemetry.
|
|
@@ -214,6 +249,14 @@ class TelemetryManager {
|
|
|
214
249
|
core_1.logger.debug("Trace context headers:", JSON.stringify(traceHeaders));
|
|
215
250
|
// Manual trace context extraction for debugging
|
|
216
251
|
if (headers.traceparent) {
|
|
252
|
+
const extractedContext = api_1.propagation.extract(api_1.context.active(), headers);
|
|
253
|
+
const extractedSpan = api_1.trace.getSpan(extractedContext);
|
|
254
|
+
if (extractedSpan) {
|
|
255
|
+
// Force set the extracted span as active
|
|
256
|
+
api_1.context.with(api_1.trace.setSpan(api_1.context.active(), extractedSpan), () => {
|
|
257
|
+
core_1.logger.debug("Forced context activation from traceparent");
|
|
258
|
+
});
|
|
259
|
+
}
|
|
217
260
|
try {
|
|
218
261
|
const traceparentValue = Array.isArray(headers.traceparent)
|
|
219
262
|
? headers.traceparent[0]
|
|
@@ -356,3 +399,14 @@ class TelemetryManager {
|
|
|
356
399
|
}
|
|
357
400
|
}
|
|
358
401
|
exports.blaxelTelemetry = new TelemetryManager();
|
|
402
|
+
// Export a function to manually check and reinitialize telemetry
|
|
403
|
+
async function ensureTelemetryActive() {
|
|
404
|
+
if (!exports.blaxelTelemetry.isActive) {
|
|
405
|
+
core_1.logger.info("Telemetry not active, reinitializing...");
|
|
406
|
+
await exports.blaxelTelemetry.reinitialize();
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
// Export a function to check telemetry status
|
|
410
|
+
function isTelemetryActive() {
|
|
411
|
+
return exports.blaxelTelemetry.isActive;
|
|
412
|
+
}
|
|
@@ -34,6 +34,12 @@ class OtelSpan {
|
|
|
34
34
|
}
|
|
35
35
|
class OtelTelemetryProvider {
|
|
36
36
|
startSpan(name, options) {
|
|
37
|
+
// Check if telemetry is active, reinitialize if needed
|
|
38
|
+
if (!telemetry_1.blaxelTelemetry.isActive) {
|
|
39
|
+
core_1.logger.warn("Telemetry not active, reinitializing...");
|
|
40
|
+
// Synchronous reinitialize - just call initialize, setConfiguration will happen async
|
|
41
|
+
telemetry_1.blaxelTelemetry.initialize();
|
|
42
|
+
}
|
|
37
43
|
// Use the tracer from the registered NodeTracerProvider
|
|
38
44
|
const tracer = api_1.trace.getTracer("blaxel");
|
|
39
45
|
// Prepare OpenTelemetry span options
|
|
@@ -55,6 +61,7 @@ class OtelTelemetryProvider {
|
|
|
55
61
|
otelOptions: JSON.stringify(otelOptions),
|
|
56
62
|
activeTraceId: activeSpan?.spanContext().traceId,
|
|
57
63
|
contextKeys: Object.keys(ctx),
|
|
64
|
+
telemetryActive: telemetry_1.blaxelTelemetry.isActive,
|
|
58
65
|
}));
|
|
59
66
|
if (options?.parentContext) {
|
|
60
67
|
// If explicit parent context is provided, use it
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blaxel/telemetry",
|
|
3
|
-
"version": "0.2.17-dev.
|
|
3
|
+
"version": "0.2.17-dev.125",
|
|
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.17-dev.
|
|
74
|
+
"@blaxel/core": "0.2.17-dev.125"
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
|
77
77
|
"@eslint/js": "^9.26.0",
|