@pingops/otel 0.1.2 → 0.1.3
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/index.cjs +38 -56
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -19
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -19
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +38 -56
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/config.ts","../src/span-processor.ts","../src/tracer-provider.ts","../src/instrumentations/index.ts","../src/instrumentations/http/pingops-http.ts","../src/instrumentations/http/http.ts","../src/instrumentations/undici/types.ts","../src/instrumentations/undici/pingops-undici.ts","../src/instrumentations/undici/undici.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;AAgBA;AAKA;;;;;AAgFgC,KArFpB,iBAAA,GAqFoB,WAAA,GAAA,SAAA;;;;ACsBnB,UDtGI,sBAAA,CCsGiB;EAkBZ;;;EAkGR,MAAA,CAAA,EAAA,MAAA;EAiGe;;;EArN6B,OAAA,EAAA,MAAA;;;;ACxB1D;EA6BgB,KAAA,CAAA,EAAA,OAAA;EA2EM;;;;ECtLN;;;;
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/config.ts","../src/span-processor.ts","../src/tracer-provider.ts","../src/instrumentations/index.ts","../src/instrumentations/http/pingops-http.ts","../src/instrumentations/http/http.ts","../src/instrumentations/undici/types.ts","../src/instrumentations/undici/pingops-undici.ts","../src/instrumentations/undici/undici.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.d.mts
CHANGED
|
@@ -181,19 +181,6 @@ declare function getInstrumentations(isGlobalInstrumentationEnabled: () => boole
|
|
|
181
181
|
declare const PingopsSemanticAttributes: {
|
|
182
182
|
HTTP_REQUEST_BODY: string;
|
|
183
183
|
HTTP_RESPONSE_BODY: string;
|
|
184
|
-
NETWORK_DNS_LOOKUP_DURATION: string;
|
|
185
|
-
NETWORK_TCP_CONNECT_DURATION: string;
|
|
186
|
-
NETWORK_TLS_HANDSHAKE_DURATION: string;
|
|
187
|
-
NETWORK_TTFB_DURATION: string;
|
|
188
|
-
NETWORK_CONTENT_TRANSFER_DURATION: string;
|
|
189
|
-
};
|
|
190
|
-
type NetworkTimings = {
|
|
191
|
-
startAt?: number;
|
|
192
|
-
dnsLookupAt?: number;
|
|
193
|
-
tcpConnectionAt?: number;
|
|
194
|
-
tlsHandshakeAt?: number;
|
|
195
|
-
firstByteAt?: number;
|
|
196
|
-
endAt?: number;
|
|
197
184
|
};
|
|
198
185
|
interface PingopsInstrumentationConfig {
|
|
199
186
|
/**
|
|
@@ -210,11 +197,6 @@ interface PingopsInstrumentationConfig {
|
|
|
210
197
|
declare const PingopsHttpSemanticAttributes: {
|
|
211
198
|
HTTP_REQUEST_BODY: string;
|
|
212
199
|
HTTP_RESPONSE_BODY: string;
|
|
213
|
-
NETWORK_DNS_LOOKUP_DURATION: string;
|
|
214
|
-
NETWORK_TCP_CONNECT_DURATION: string;
|
|
215
|
-
NETWORK_TLS_HANDSHAKE_DURATION: string;
|
|
216
|
-
NETWORK_TTFB_DURATION: string;
|
|
217
|
-
NETWORK_CONTENT_TRANSFER_DURATION: string;
|
|
218
200
|
};
|
|
219
201
|
interface PingopsHttpInstrumentationConfig extends HttpInstrumentationConfig, PingopsInstrumentationConfig {}
|
|
220
202
|
declare class PingopsHttpInstrumentation extends HttpInstrumentation {
|
|
@@ -338,5 +320,5 @@ declare class UndiciInstrumentation extends InstrumentationBase<UndiciInstrument
|
|
|
338
320
|
*/
|
|
339
321
|
declare function createUndiciInstrumentation(isGlobalInstrumentationEnabled: () => boolean): UndiciInstrumentation;
|
|
340
322
|
//#endregion
|
|
341
|
-
export {
|
|
323
|
+
export { PingopsHttpInstrumentation, type PingopsHttpInstrumentationConfig, PingopsHttpSemanticAttributes, type PingopsInstrumentationConfig, type PingopsProcessorConfig, PingopsSemanticAttributes, PingopsSpanProcessor, createHttpInstrumentation, createUndiciInstrumentation, getInstrumentations, getPingopsTracerProvider, setPingopsTracerProvider, shutdownTracerProvider };
|
|
342
324
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/config.ts","../src/span-processor.ts","../src/tracer-provider.ts","../src/instrumentations/index.ts","../src/instrumentations/http/pingops-http.ts","../src/instrumentations/http/http.ts","../src/instrumentations/undici/types.ts","../src/instrumentations/undici/pingops-undici.ts","../src/instrumentations/undici/undici.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;AAgBA;AAKA;;;;;AAgFgC,KArFpB,iBAAA,GAqFoB,WAAA,GAAA,SAAA;;;;ACsBnB,UDtGI,sBAAA,CCsGiB;EAkBZ;;;EAkGR,MAAA,CAAA,EAAA,MAAA;EAiGe;;;EArN6B,OAAA,EAAA,MAAA;;;;ACxB1D;EA6BgB,KAAA,CAAA,EAAA,OAAA;EA2EM;;;;ECtLN;;;;
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/config.ts","../src/span-processor.ts","../src/tracer-provider.ts","../src/instrumentations/index.ts","../src/instrumentations/http/pingops-http.ts","../src/instrumentations/http/http.ts","../src/instrumentations/undici/types.ts","../src/instrumentations/undici/pingops-undici.ts","../src/instrumentations/undici/undici.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -332,19 +332,13 @@ async function shutdownTracerProvider() {
|
|
|
332
332
|
//#region src/instrumentations/http/pingops-http.ts
|
|
333
333
|
/**
|
|
334
334
|
* Pingops HTTP instrumentation that extends HttpInstrumentation
|
|
335
|
-
* with request/response body capture
|
|
335
|
+
* with request/response body capture
|
|
336
336
|
*/
|
|
337
337
|
const DEFAULT_MAX_REQUEST_BODY_SIZE$1 = 4 * 1024;
|
|
338
338
|
const DEFAULT_MAX_RESPONSE_BODY_SIZE$1 = 4 * 1024;
|
|
339
|
-
const NETWORK_TIMINGS_PROP_NAME = "__networkTimings";
|
|
340
339
|
const PingopsSemanticAttributes = {
|
|
341
340
|
HTTP_REQUEST_BODY: "http.request.body",
|
|
342
|
-
HTTP_RESPONSE_BODY: "http.response.body"
|
|
343
|
-
NETWORK_DNS_LOOKUP_DURATION: "net.dns.lookup.duration",
|
|
344
|
-
NETWORK_TCP_CONNECT_DURATION: "net.tcp.connect.duration",
|
|
345
|
-
NETWORK_TLS_HANDSHAKE_DURATION: "net.tls.handshake.duration",
|
|
346
|
-
NETWORK_TTFB_DURATION: "net.ttfb.duration",
|
|
347
|
-
NETWORK_CONTENT_TRANSFER_DURATION: "net.content.transfer.duration"
|
|
341
|
+
HTTP_RESPONSE_BODY: "http.response.body"
|
|
348
342
|
};
|
|
349
343
|
/**
|
|
350
344
|
* Manually flattens a nested object into dot-notation keys
|
|
@@ -372,30 +366,6 @@ function setAttributeValue(span, attrName, attrValue) {
|
|
|
372
366
|
} else span.setAttribute(attrName, attrValue);
|
|
373
367
|
}
|
|
374
368
|
/**
|
|
375
|
-
* Processes network timings and sets them as span attributes (no spans created)
|
|
376
|
-
*/
|
|
377
|
-
function processNetworkTimings(span, networkTimings) {
|
|
378
|
-
if (networkTimings.startAt && networkTimings.dnsLookupAt) span.setAttribute(PingopsSemanticAttributes.NETWORK_DNS_LOOKUP_DURATION, networkTimings.dnsLookupAt - networkTimings.startAt);
|
|
379
|
-
if (networkTimings.dnsLookupAt && networkTimings.tcpConnectionAt) span.setAttribute(PingopsSemanticAttributes.NETWORK_TCP_CONNECT_DURATION, networkTimings.tcpConnectionAt - networkTimings.dnsLookupAt);
|
|
380
|
-
if (networkTimings.tcpConnectionAt && networkTimings.tlsHandshakeAt) span.setAttribute(PingopsSemanticAttributes.NETWORK_TLS_HANDSHAKE_DURATION, networkTimings.tlsHandshakeAt - networkTimings.tcpConnectionAt);
|
|
381
|
-
const startTTFB = networkTimings.tlsHandshakeAt || networkTimings.tcpConnectionAt;
|
|
382
|
-
if (networkTimings.firstByteAt && startTTFB) span.setAttribute(PingopsSemanticAttributes.NETWORK_TTFB_DURATION, networkTimings.firstByteAt - startTTFB);
|
|
383
|
-
if (networkTimings.firstByteAt && networkTimings.endAt) span.setAttribute(PingopsSemanticAttributes.NETWORK_CONTENT_TRANSFER_DURATION, networkTimings.endAt - networkTimings.firstByteAt);
|
|
384
|
-
}
|
|
385
|
-
/**
|
|
386
|
-
* Initializes network timings on a span
|
|
387
|
-
*/
|
|
388
|
-
function initializeNetworkTimings(span) {
|
|
389
|
-
const networkTimings = { startAt: Date.now() };
|
|
390
|
-
Object.defineProperty(span, NETWORK_TIMINGS_PROP_NAME, {
|
|
391
|
-
enumerable: false,
|
|
392
|
-
configurable: true,
|
|
393
|
-
writable: false,
|
|
394
|
-
value: networkTimings
|
|
395
|
-
});
|
|
396
|
-
return networkTimings;
|
|
397
|
-
}
|
|
398
|
-
/**
|
|
399
369
|
* Extracts domain from URL
|
|
400
370
|
*/
|
|
401
371
|
function extractDomainFromUrl$1(url) {
|
|
@@ -469,16 +439,48 @@ function captureResponseBody(span, chunks, semanticAttr, url) {
|
|
|
469
439
|
}
|
|
470
440
|
}
|
|
471
441
|
/**
|
|
442
|
+
* Extracts headers from a request object (ClientRequest or IncomingMessage)
|
|
443
|
+
* Handles both types efficiently by checking for available methods/properties
|
|
444
|
+
*/
|
|
445
|
+
function extractRequestHeaders(request) {
|
|
446
|
+
if ("headers" in request && request.headers) return request.headers;
|
|
447
|
+
if (typeof request.getHeaders === "function") try {
|
|
448
|
+
const headers = request.getHeaders();
|
|
449
|
+
const result = {};
|
|
450
|
+
for (const [key, value] of Object.entries(headers)) if (value !== void 0) result[key] = typeof value === "number" ? String(value) : Array.isArray(value) ? value.map(String) : String(value);
|
|
451
|
+
return result;
|
|
452
|
+
} catch {
|
|
453
|
+
return null;
|
|
454
|
+
}
|
|
455
|
+
return null;
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* Extracts headers from a response object (ServerResponse or IncomingMessage)
|
|
459
|
+
* Handles both types efficiently by checking for available methods/properties
|
|
460
|
+
*/
|
|
461
|
+
function extractResponseHeaders(response) {
|
|
462
|
+
if ("headers" in response && response.headers) return response.headers;
|
|
463
|
+
if (typeof response.getHeaders === "function") try {
|
|
464
|
+
const headers = response.getHeaders();
|
|
465
|
+
const result = {};
|
|
466
|
+
for (const [key, value] of Object.entries(headers)) if (value !== void 0) result[key] = typeof value === "number" ? String(value) : Array.isArray(value) ? value.map(String) : String(value);
|
|
467
|
+
return result;
|
|
468
|
+
} catch {
|
|
469
|
+
return null;
|
|
470
|
+
}
|
|
471
|
+
return null;
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
472
474
|
* Captures HTTP request headers as span attributes
|
|
473
475
|
*/
|
|
474
476
|
function captureRequestHeaders(span, headers) {
|
|
475
|
-
for (const [key, value] of Object.entries(headers)) if (value !== void 0) span.setAttribute(`
|
|
477
|
+
for (const [key, value] of Object.entries(headers)) if (value !== void 0) span.setAttribute(`http.request.header.${key.toLowerCase()}`, Array.isArray(value) ? value.join(",") : String(value));
|
|
476
478
|
}
|
|
477
479
|
/**
|
|
478
480
|
* Captures HTTP response headers as span attributes
|
|
479
481
|
*/
|
|
480
482
|
function captureResponseHeaders(span, headers) {
|
|
481
|
-
for (const [key, value] of Object.entries(headers)) if (value !== void 0) span.setAttribute(`
|
|
483
|
+
for (const [key, value] of Object.entries(headers)) if (value !== void 0) span.setAttribute(`http.response.header.${key.toLowerCase()}`, Array.isArray(value) ? value.join(",") : String(value));
|
|
482
484
|
}
|
|
483
485
|
const PingopsHttpSemanticAttributes = PingopsSemanticAttributes;
|
|
484
486
|
var PingopsHttpInstrumentation = class extends HttpInstrumentation {
|
|
@@ -495,10 +497,9 @@ var PingopsHttpInstrumentation = class extends HttpInstrumentation {
|
|
|
495
497
|
}
|
|
496
498
|
_createRequestHook(originalRequestHook, config) {
|
|
497
499
|
return (span, request) => {
|
|
498
|
-
const headers = request
|
|
500
|
+
const headers = extractRequestHeaders(request);
|
|
499
501
|
if (headers) captureRequestHeaders(span, headers);
|
|
500
502
|
if (request instanceof ClientRequest) {
|
|
501
|
-
const networkTimings = initializeNetworkTimings(span);
|
|
502
503
|
const maxRequestBodySize = config?.maxRequestBodySize || DEFAULT_MAX_REQUEST_BODY_SIZE$1;
|
|
503
504
|
const url = request.path && request.getHeader("host") ? `${request.protocol || "http:"}//${request.getHeader("host")}${request.path}` : void 0;
|
|
504
505
|
const originalWrite = request.write.bind(request);
|
|
@@ -511,27 +512,15 @@ var PingopsHttpInstrumentation = class extends HttpInstrumentation {
|
|
|
511
512
|
if (typeof data === "string" || data instanceof Buffer) captureRequestBody(span, data, maxRequestBodySize, PingopsSemanticAttributes.HTTP_REQUEST_BODY, url);
|
|
512
513
|
return originalEnd(data);
|
|
513
514
|
};
|
|
514
|
-
request.on("socket", (socket) => {
|
|
515
|
-
socket.on("lookup", () => {
|
|
516
|
-
networkTimings.dnsLookupAt = Date.now();
|
|
517
|
-
});
|
|
518
|
-
socket.on("connect", () => {
|
|
519
|
-
networkTimings.tcpConnectionAt = Date.now();
|
|
520
|
-
});
|
|
521
|
-
socket.on("secureConnect", () => {
|
|
522
|
-
networkTimings.tlsHandshakeAt = Date.now();
|
|
523
|
-
});
|
|
524
|
-
});
|
|
525
515
|
}
|
|
526
516
|
if (originalRequestHook) originalRequestHook(span, request);
|
|
527
517
|
};
|
|
528
518
|
}
|
|
529
519
|
_createResponseHook(originalResponseHook, config) {
|
|
530
520
|
return (span, response) => {
|
|
531
|
-
const headers = response
|
|
521
|
+
const headers = extractResponseHeaders(response);
|
|
532
522
|
if (headers) captureResponseHeaders(span, headers);
|
|
533
523
|
if (response instanceof IncomingMessage) {
|
|
534
|
-
const networkTimings = span[NETWORK_TIMINGS_PROP_NAME];
|
|
535
524
|
const maxResponseBodySize = config?.maxResponseBodySize || DEFAULT_MAX_RESPONSE_BODY_SIZE$1;
|
|
536
525
|
const url = response.url || void 0;
|
|
537
526
|
let chunks = [];
|
|
@@ -546,15 +535,8 @@ var PingopsHttpInstrumentation = class extends HttpInstrumentation {
|
|
|
546
535
|
}
|
|
547
536
|
});
|
|
548
537
|
response.prependOnceListener("end", () => {
|
|
549
|
-
if (networkTimings) {
|
|
550
|
-
networkTimings.endAt = Date.now();
|
|
551
|
-
processNetworkTimings(span, networkTimings);
|
|
552
|
-
}
|
|
553
538
|
captureResponseBody(span, chunks, PingopsSemanticAttributes.HTTP_RESPONSE_BODY, url);
|
|
554
539
|
});
|
|
555
|
-
if (networkTimings) response.once("readable", () => {
|
|
556
|
-
networkTimings.firstByteAt = Date.now();
|
|
557
|
-
});
|
|
558
540
|
}
|
|
559
541
|
if (originalResponseHook) originalResponseHook(span, response);
|
|
560
542
|
};
|