@nifrajs/otel 3.5.0 → 4.0.0
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/README.md +90 -3
- package/dist/cache.d.ts +46 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +78 -0
- package/dist/cache.js.map +1 -0
- package/dist/context-trace.d.ts +8 -0
- package/dist/context-trace.d.ts.map +1 -0
- package/dist/context-trace.js +16 -0
- package/dist/context-trace.js.map +1 -0
- package/dist/effects.d.ts.map +1 -1
- package/dist/effects.js +2 -0
- package/dist/effects.js.map +1 -1
- package/dist/events.d.ts +69 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +106 -0
- package/dist/events.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/jobs.d.ts +56 -0
- package/dist/jobs.d.ts.map +1 -0
- package/dist/jobs.js +98 -0
- package/dist/jobs.js.map +1 -0
- package/dist/lifecycle.d.ts +13 -1
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/lifecycle.js +12 -3
- package/dist/lifecycle.js.map +1 -1
- package/dist/metrics.d.ts.map +1 -1
- package/dist/metrics.js +0 -0
- package/dist/metrics.js.map +1 -1
- package/dist/otlp.d.ts.map +1 -1
- package/dist/otlp.js +17 -1
- package/dist/otlp.js.map +1 -1
- package/dist/route-template.d.ts +14 -0
- package/dist/route-template.d.ts.map +1 -0
- package/dist/route-template.js +38 -0
- package/dist/route-template.js.map +1 -0
- package/dist/sdk-bridge.d.ts +107 -0
- package/dist/sdk-bridge.d.ts.map +1 -0
- package/dist/sdk-bridge.js +243 -0
- package/dist/sdk-bridge.js.map +1 -0
- package/dist/span.d.ts +8 -1
- package/dist/span.d.ts.map +1 -1
- package/dist/span.js +1 -0
- package/dist/span.js.map +1 -1
- package/dist/tracing.d.ts.map +1 -1
- package/dist/tracing.js +11 -2
- package/dist/tracing.js.map +1 -1
- package/package.json +33 -3
- package/src/cache.ts +115 -0
- package/src/context-trace.ts +14 -0
- package/src/effects.ts +2 -0
- package/src/events.ts +170 -0
- package/src/index.ts +2 -0
- package/src/jobs.ts +141 -0
- package/src/lifecycle.ts +26 -3
- package/src/metrics.ts +0 -0
- package/src/otlp.ts +18 -2
- package/src/route-template.ts +43 -0
- package/src/sdk-bridge.ts +375 -0
- package/src/span.ts +9 -1
- package/src/tracing.ts +11 -2
package/dist/jobs.js
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spans for `@nifrajs/jobs`, following the OpenTelemetry messaging conventions. `jobTracing()` is the
|
|
3
|
+
* queue's `instrument`: each enqueue is a `send <job>` producer span and each attempt a `process <job>`
|
|
4
|
+
* consumer span. The send span's context is stored with the job, and the process span is its CHILD
|
|
5
|
+
* (plus a link to it), so one trace runs from the request that enqueued the job through every attempt.
|
|
6
|
+
*
|
|
7
|
+
* import { jobTracing } from "@nifrajs/otel/jobs"
|
|
8
|
+
* const queue = createQueue({ store, instrument: jobTracing({ exporter }) })
|
|
9
|
+
* await sendEmail.for(c).enqueue({ to }) // "send send-email", child of the request span
|
|
10
|
+
*/
|
|
11
|
+
import { createObservationLifecycle, } from "./lifecycle.js";
|
|
12
|
+
import { parseTraceparent } from "./traceparent.js";
|
|
13
|
+
const SYSTEM = "nifra.jobs";
|
|
14
|
+
/**
|
|
15
|
+
* The queue instrument. Span names are `send <job name>` (kind producer) and `process <job name>` (kind
|
|
16
|
+
* consumer), with `messaging.system = "nifra.jobs"`, `messaging.operation.type`/`.name`,
|
|
17
|
+
* `messaging.destination.name` (the job name) and `messaging.message.id`. A process span also carries
|
|
18
|
+
* `nifra.job.attempt` and `nifra.job.outcome`; an attempt that failed is an error span, and one that
|
|
19
|
+
* dead-lettered the job adds `nifra.job.dead_lettered = true`. Error text is never exported.
|
|
20
|
+
*
|
|
21
|
+
* The stored traceparent is untrusted: a malformed one starts the process span as a new trace. The
|
|
22
|
+
* sampled flag travels with it.
|
|
23
|
+
*/
|
|
24
|
+
export function jobTracing(options = {}) {
|
|
25
|
+
const adapters = [
|
|
26
|
+
...(options.exporter === undefined ? [] : [options.exporter]),
|
|
27
|
+
...(options.adapters ?? []),
|
|
28
|
+
];
|
|
29
|
+
const lifecycle = createObservationLifecycle({ adapters });
|
|
30
|
+
const scope = options.scope;
|
|
31
|
+
return {
|
|
32
|
+
async enqueue(info, next) {
|
|
33
|
+
const span = lifecycle.start({
|
|
34
|
+
name: `send ${info.name}`,
|
|
35
|
+
kind: "producer",
|
|
36
|
+
parent: parseTraceparent(info.traceparent),
|
|
37
|
+
attributes: {
|
|
38
|
+
"messaging.system": SYSTEM,
|
|
39
|
+
"messaging.operation.type": "send",
|
|
40
|
+
"messaging.operation.name": "send",
|
|
41
|
+
"messaging.destination.name": info.name,
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
try {
|
|
45
|
+
const id = await next({ traceparent: span.context.traceparent });
|
|
46
|
+
span.end({ status: "ok", attributes: { "messaging.message.id": id } });
|
|
47
|
+
return id;
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
span.recordError(error);
|
|
51
|
+
span.end({ status: "error", attributes: { "error.type": "_OTHER" } });
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
async run(info, next) {
|
|
56
|
+
const creation = parseTraceparent(info.traceparent);
|
|
57
|
+
const start = {
|
|
58
|
+
name: `process ${info.name}`,
|
|
59
|
+
kind: "consumer",
|
|
60
|
+
parent: creation,
|
|
61
|
+
attributes: {
|
|
62
|
+
"messaging.system": SYSTEM,
|
|
63
|
+
"messaging.operation.type": "process",
|
|
64
|
+
"messaging.operation.name": "process",
|
|
65
|
+
"messaging.destination.name": info.name,
|
|
66
|
+
"messaging.message.id": info.id,
|
|
67
|
+
"nifra.job.attempt": info.attempt,
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
if (creation !== null)
|
|
71
|
+
start.links = [{ traceId: creation.traceId, spanId: creation.spanId }];
|
|
72
|
+
const span = lifecycle.start(start);
|
|
73
|
+
const trace = span.context;
|
|
74
|
+
try {
|
|
75
|
+
const outcome = scope === undefined ? await next({ trace }) : await scope(trace, () => next({ trace }));
|
|
76
|
+
if (outcome === "completed") {
|
|
77
|
+
span.end({ status: "ok", attributes: { "nifra.job.outcome": outcome } });
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
const attributes = {
|
|
81
|
+
"nifra.job.outcome": outcome,
|
|
82
|
+
"error.type": "_OTHER",
|
|
83
|
+
};
|
|
84
|
+
if (outcome === "dead-lettered")
|
|
85
|
+
attributes["nifra.job.dead_lettered"] = true;
|
|
86
|
+
span.end({ status: "error", attributes });
|
|
87
|
+
}
|
|
88
|
+
return outcome;
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
span.recordError(error);
|
|
92
|
+
span.end({ status: "error", attributes: { "error.type": "_OTHER" } });
|
|
93
|
+
throw error;
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=jobs.js.map
|
package/dist/jobs.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../src/jobs.ts"],"names":[],"mappings":"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"}
|
package/dist/lifecycle.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* timing, error recording, final status classification, and exactly-once completion. Integrations
|
|
4
4
|
* should adapt completed spans; they should not reimplement this state machine.
|
|
5
5
|
*/
|
|
6
|
-
import type { AttributeValue, NifraSpan, ObservationAdapter, ObservationLink, SpanStatus } from "./span.js";
|
|
6
|
+
import type { AttributeValue, NifraSpan, ObservationAdapter, ObservationLink, SpanKind, SpanStatus } from "./span.js";
|
|
7
7
|
export interface ObservationContext {
|
|
8
8
|
readonly traceId: string;
|
|
9
9
|
readonly spanId: string;
|
|
@@ -12,6 +12,12 @@ export interface ObservationContext {
|
|
|
12
12
|
/** This span's outbound W3C trace context. */
|
|
13
13
|
readonly traceparent: string;
|
|
14
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Runs `run` with a span active in an ambient context (OpenTelemetry's, for one), so code that only
|
|
17
|
+
* sees that context - a pg or undici instrumentation - nests under the span. `otelBridge().scope` from
|
|
18
|
+
* `@nifrajs/otel/sdk-bridge` is one.
|
|
19
|
+
*/
|
|
20
|
+
export type ObservationScope = <T>(trace: ObservationContext, run: () => T) => T;
|
|
15
21
|
export interface ObservationParent {
|
|
16
22
|
readonly traceId: string;
|
|
17
23
|
readonly spanId: string;
|
|
@@ -19,6 +25,8 @@ export interface ObservationParent {
|
|
|
19
25
|
}
|
|
20
26
|
export interface StartObservation {
|
|
21
27
|
readonly name: string;
|
|
28
|
+
/** OTel span kind. Omitted, the span exports as `server`. */
|
|
29
|
+
readonly kind?: SpanKind;
|
|
22
30
|
/** Explicit parent. `null` forces a root span; `undefined` falls back to `traceparent`. */
|
|
23
31
|
readonly parent?: ObservationParent | null;
|
|
24
32
|
/** Inbound W3C header used when `parent` is undefined. */
|
|
@@ -26,12 +34,16 @@ export interface StartObservation {
|
|
|
26
34
|
readonly attributes?: Readonly<Record<string, AttributeValue>>;
|
|
27
35
|
/** Non-parent causal relationships, for example an outbox event that resumed this workflow. */
|
|
28
36
|
readonly links?: readonly ObservationLink[];
|
|
37
|
+
/** Epoch ms the work began, for work recorded after it settled. Default: now. */
|
|
38
|
+
readonly startTime?: number;
|
|
29
39
|
}
|
|
30
40
|
export interface EndObservation {
|
|
31
41
|
readonly statusCode?: number;
|
|
32
42
|
/** Explicit status wins over status-code and recorded-error classification. */
|
|
33
43
|
readonly status?: Exclude<SpanStatus, "unset">;
|
|
34
44
|
readonly attributes?: Readonly<Record<string, AttributeValue>>;
|
|
45
|
+
/** Measured duration in ms, for work recorded after it settled. The end time becomes start + duration. */
|
|
46
|
+
readonly durationMs?: number;
|
|
35
47
|
}
|
|
36
48
|
export interface ActiveObservation {
|
|
37
49
|
readonly span: NifraSpan;
|
package/dist/lifecycle.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,eAAe,EACf,UAAU,EACX,MAAM,WAAW,CAAA;AAQlB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,8CAA8C;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,2FAA2F;IAC3F,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAC1C,0DAA0D;IAC1D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;IAC9D,+FAA+F;IAC/F,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,eAAe,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"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"}
|
package/dist/lifecycle.js
CHANGED
|
@@ -40,7 +40,9 @@ export function createObservationLifecycle(options = {}) {
|
|
|
40
40
|
const traceId = parent?.traceId ?? newTraceId();
|
|
41
41
|
const spanId = newSpanId();
|
|
42
42
|
const sampled = parent?.sampled ?? true;
|
|
43
|
-
const startTime =
|
|
43
|
+
const startTime = input.startTime !== undefined && Number.isFinite(input.startTime)
|
|
44
|
+
? input.startTime
|
|
45
|
+
: clock.wallTime();
|
|
44
46
|
const monotonicStart = clock.monotonicTime();
|
|
45
47
|
const span = {
|
|
46
48
|
traceId,
|
|
@@ -48,6 +50,7 @@ export function createObservationLifecycle(options = {}) {
|
|
|
48
50
|
...(parent === null ? {} : { parentSpanId: parent.spanId }),
|
|
49
51
|
sampled,
|
|
50
52
|
name: input.name,
|
|
53
|
+
...(input.kind === undefined ? {} : { kind: input.kind }),
|
|
51
54
|
startTime,
|
|
52
55
|
status: "unset",
|
|
53
56
|
attributes: { ...input.attributes },
|
|
@@ -111,8 +114,14 @@ export function createObservationLifecycle(options = {}) {
|
|
|
111
114
|
return span;
|
|
112
115
|
ended = true;
|
|
113
116
|
Object.assign(span.attributes, endInput.attributes);
|
|
114
|
-
|
|
115
|
-
|
|
117
|
+
if (endInput.durationMs !== undefined && Number.isFinite(endInput.durationMs)) {
|
|
118
|
+
span.durationMs = Math.max(0, endInput.durationMs);
|
|
119
|
+
span.endTime = span.startTime + span.durationMs;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
span.endTime = clock.wallTime();
|
|
123
|
+
span.durationMs = Math.max(0, clock.monotonicTime() - monotonicStart);
|
|
124
|
+
}
|
|
116
125
|
span.status =
|
|
117
126
|
endInput.status ??
|
|
118
127
|
(endInput.statusCode === undefined
|
package/dist/lifecycle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"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"}
|
package/dist/metrics.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAsB,KAAK,cAAc,EAAqB,MAAM,sBAAsB,CAAA;AAWjG,KAAK,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AA8B9C,6DAA6D;AAC7D,qBAAa,OAAO;IAGhB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM;IAHvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;gBAE/C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM;IAIvB,GAAG,CAAC,MAAM,GAAE,MAAW,EAAE,EAAE,SAAI,GAAG,IAAI;IAMtC,MAAM,IAAI,MAAM;CAMjB;AAED,yEAAyE;AACzE,qBAAa,KAAK;IAGd,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM;IAHvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;gBAE/C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM;IAIvB,OAAO,CAAC,EAAE;IASV,GAAG,CAAC,MAAM,GAAE,MAAW,EAAE,EAAE,SAAI,GAAG,IAAI;IAGtC,GAAG,CAAC,MAAM,GAAE,MAAW,EAAE,EAAE,SAAI,GAAG,IAAI;IAGtC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAGxC,MAAM,IAAI,MAAM;CAMjB;AASD,sGAAsG;AACtG,qBAAa,SAAS;IAIlB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM;IAJvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;gBAEvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACrB,OAAO,EAAE,SAAS,MAAM,EAAE;IAK5B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAW,GAAG,IAAI;IAajD,MAAM,IAAI,MAAM;CAcjB;AAED,+EAA+E;AAC/E,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+B;IAE1D,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAO,GAAG,OAAO;IAQ3C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAO,GAAG,KAAK;IAQvC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,SAAO,GAAG,SAAS;IAQ3E,iEAAiE;IACjE,MAAM,IAAI,MAAM;CAOjB;AAED,2GAA2G;AAC3G,wBAAgB,qBAAqB,IAAI,eAAe,CAEvD;AAKD,MAAM,WAAW,cAAc;IAC7B,wGAAwG;IACxG,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,sGAAsG;IACtG,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAA;IACnC,gGAAgG;IAChG,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACrC;AAOD;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,cAAc,CA6DpE"}
|
package/dist/metrics.js
CHANGED
|
Binary file
|
package/dist/metrics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}
|
package/dist/otlp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otlp.d.ts","sourceRoot":"","sources":["../src/otlp.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAA6B,kBAAkB,
|
|
1
|
+
{"version":3,"file":"otlp.d.ts","sourceRoot":"","sources":["../src/otlp.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAA6B,kBAAkB,EAAwB,MAAM,WAAW,CAAA;AAEpG,MAAM,WAAW,mBAAmB;IAClC,+EAA+E;IAC/E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACzC,4DAA4D;IAC5D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,sBAAsB;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE;QACf,2FAA2F;QAC3F,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;QAC1B,oGAAoG;QACpG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;QAC1B,mFAAmF;QACnF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAClC,CAAA;IACD,qGAAqG;IACrG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAC3C,uEAAuE;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAChG;AAED,MAAM,WAAW,YAAa,SAAQ,kBAAkB;IACtD,sFAAsF;IACtF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,2EAA2E;IAC3E,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B;AAiED,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CA2EvE"}
|
package/dist/otlp.js
CHANGED
|
@@ -8,6 +8,22 @@
|
|
|
8
8
|
* request); delivery failures reach `onError`.
|
|
9
9
|
*/
|
|
10
10
|
const STATUS_CODE = { unset: 0, ok: 1, error: 2 };
|
|
11
|
+
// OTLP `Span.SpanKind`; 0 (UNSPECIFIED) is never sent. A kind is caller data, so anything unknown
|
|
12
|
+
// exports as server, the kind of the spans that predate the field.
|
|
13
|
+
function kindCode(kind) {
|
|
14
|
+
switch (kind) {
|
|
15
|
+
case "internal":
|
|
16
|
+
return 1;
|
|
17
|
+
case "client":
|
|
18
|
+
return 3;
|
|
19
|
+
case "producer":
|
|
20
|
+
return 4;
|
|
21
|
+
case "consumer":
|
|
22
|
+
return 5;
|
|
23
|
+
default:
|
|
24
|
+
return 2;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
11
27
|
function assertPositiveSafeInteger(value, option) {
|
|
12
28
|
if (!Number.isSafeInteger(value) || value <= 0) {
|
|
13
29
|
throw new RangeError(`otlpExporter: ${option} must be a positive safe integer; received ${String(value)}`);
|
|
@@ -32,7 +48,7 @@ function toOtlpSpan(span) {
|
|
|
32
48
|
spanId: span.spanId,
|
|
33
49
|
...(span.parentSpanId !== undefined ? { parentSpanId: span.parentSpanId } : {}),
|
|
34
50
|
name: span.name,
|
|
35
|
-
kind:
|
|
51
|
+
kind: kindCode(span.kind),
|
|
36
52
|
startTimeUnixNano: String(span.startTime * MS_TO_NANOS),
|
|
37
53
|
endTimeUnixNano: String(end * MS_TO_NANOS),
|
|
38
54
|
attributes: keyValues(span.attributes),
|
package/dist/otlp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otlp.js","sourceRoot":"","sources":["../src/otlp.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiCH,MAAM,WAAW,GAAyC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"otlp.js","sourceRoot":"","sources":["../src/otlp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { RouteDescriptor } from "@nifrajs/core/server";
|
|
2
|
+
/** A method as a label or span name may carry it. Any other method a runtime accepts (Deno takes
|
|
3
|
+
* extension tokens) is `_OTHER`, as OpenTelemetry's HTTP conventions name it, so a client cannot
|
|
4
|
+
* mint a new series or span name per request. */
|
|
5
|
+
export declare function methodLabel(method: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* A request's matched route template (`/users/:id`, never `/users/42`), or `undefined` when no route
|
|
8
|
+
* serves it. The matcher is built on first use: by serving time every route is registered, so
|
|
9
|
+
* `app.routes()` is complete, where building it when the plugin is applied would miss later routes.
|
|
10
|
+
*/
|
|
11
|
+
export declare function routeTemplateOf(app: {
|
|
12
|
+
routes(): ReadonlyArray<RouteDescriptor>;
|
|
13
|
+
}): (method: string, path: string) => string | undefined;
|
|
14
|
+
//# sourceMappingURL=route-template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-template.d.ts","sourceRoot":"","sources":["../src/route-template.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAc3D;;iDAEiD;AACjD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE;IACnC,MAAM,IAAI,aAAa,CAAC,eAAe,CAAC,CAAA;CACzC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAavD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Router } from "@nifrajs/core/router";
|
|
2
|
+
const KNOWN_METHODS = new Set([
|
|
3
|
+
"GET",
|
|
4
|
+
"HEAD",
|
|
5
|
+
"POST",
|
|
6
|
+
"PUT",
|
|
7
|
+
"DELETE",
|
|
8
|
+
"PATCH",
|
|
9
|
+
"OPTIONS",
|
|
10
|
+
"CONNECT",
|
|
11
|
+
"TRACE",
|
|
12
|
+
]);
|
|
13
|
+
/** A method as a label or span name may carry it. Any other method a runtime accepts (Deno takes
|
|
14
|
+
* extension tokens) is `_OTHER`, as OpenTelemetry's HTTP conventions name it, so a client cannot
|
|
15
|
+
* mint a new series or span name per request. */
|
|
16
|
+
export function methodLabel(method) {
|
|
17
|
+
return KNOWN_METHODS.has(method) ? method : "_OTHER";
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* A request's matched route template (`/users/:id`, never `/users/42`), or `undefined` when no route
|
|
21
|
+
* serves it. The matcher is built on first use: by serving time every route is registered, so
|
|
22
|
+
* `app.routes()` is complete, where building it when the plugin is applied would miss later routes.
|
|
23
|
+
*/
|
|
24
|
+
export function routeTemplateOf(app) {
|
|
25
|
+
let matcher;
|
|
26
|
+
return (method, path) => {
|
|
27
|
+
if (matcher === undefined) {
|
|
28
|
+
matcher = new Router();
|
|
29
|
+
for (const route of app.routes()) {
|
|
30
|
+
// biome-ignore lint/plugin/requireSafetyCommentForTypeAssertion: every registered route's method is one this router already accepted when the app registered it.
|
|
31
|
+
matcher.add(route.method, route.path, route.path);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const found = matcher.find(method, path);
|
|
35
|
+
return found.found ? found.payload : undefined;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=route-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-template.js","sourceRoot":"","sources":["../src/route-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAG1D,MAAM,aAAa,GAAwB,IAAI,GAAG,CAAC;IACjD,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;IACL,QAAQ;IACR,OAAO;IACP,SAAS;IACT,SAAS;IACT,OAAO;CACR,CAAC,CAAA;AAEF;;iDAEiD;AACjD,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,OAAO,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA;AACtD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,GAE/B;IACC,IAAI,OAAmC,CAAA;IACvC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QACtB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,GAAG,IAAI,MAAM,EAAU,CAAA;YAC9B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;gBACjC,iKAAiK;gBACjK,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAgB,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YAC7D,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACxC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;IAChD,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A bridge between nifra spans and the OpenTelemetry SDK. The app passes its own `@opentelemetry/api`;
|
|
3
|
+
* nifra takes no dependency on it.
|
|
4
|
+
*
|
|
5
|
+
* import * as api from "@opentelemetry/api"
|
|
6
|
+
* import { otelBridge } from "@nifrajs/otel/sdk-bridge"
|
|
7
|
+
*
|
|
8
|
+
* const bridge = otelBridge({ api })
|
|
9
|
+
* app.use(tracing({ adapters: [bridge.adapter] })).use(bridge.plugin)
|
|
10
|
+
* // a pg / undici span started inside a handler is now a child of the request span
|
|
11
|
+
*
|
|
12
|
+
* Context propagation needs an async context manager registered with the SDK (on Node, Bun and Deno the
|
|
13
|
+
* AsyncLocalStorage one from `@opentelemetry/context-async-hooks`; on Workers, `nodejs_compat`).
|
|
14
|
+
*/
|
|
15
|
+
import { type IdentityPlugin } from "@nifrajs/core/server";
|
|
16
|
+
import type { ObservationScope } from "./lifecycle.js";
|
|
17
|
+
import type { AttributeValue, ObservationAdapter } from "./span.js";
|
|
18
|
+
/** The OTel `SpanContext` shape. */
|
|
19
|
+
export interface OtelSpanContext {
|
|
20
|
+
readonly traceId: string;
|
|
21
|
+
readonly spanId: string;
|
|
22
|
+
readonly traceFlags: number;
|
|
23
|
+
readonly isRemote?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/** The part of an OTel `Span` the bridge uses. Every `Span` from `@opentelemetry/api` has it. */
|
|
26
|
+
export interface OtelSpan {
|
|
27
|
+
spanContext(): OtelSpanContext;
|
|
28
|
+
setAttributes(attributes: Record<string, AttributeValue>): unknown;
|
|
29
|
+
setStatus(status: {
|
|
30
|
+
code: number;
|
|
31
|
+
}): unknown;
|
|
32
|
+
end(endTime?: number): void;
|
|
33
|
+
isRecording(): boolean;
|
|
34
|
+
}
|
|
35
|
+
/** The part of an OTel `Tracer` the bridge uses. */
|
|
36
|
+
export interface OtelTracer {
|
|
37
|
+
startSpan(name: string, options?: {
|
|
38
|
+
kind?: number;
|
|
39
|
+
startTime?: number;
|
|
40
|
+
attributes?: Record<string, AttributeValue>;
|
|
41
|
+
links?: Array<{
|
|
42
|
+
context: OtelSpanContext;
|
|
43
|
+
attributes?: Record<string, AttributeValue>;
|
|
44
|
+
}>;
|
|
45
|
+
}, context?: unknown): OtelSpan;
|
|
46
|
+
}
|
|
47
|
+
/** The part of `@opentelemetry/api` the bridge uses: pass `import * as api from "@opentelemetry/api"`. */
|
|
48
|
+
export interface OtelApi {
|
|
49
|
+
readonly ROOT_CONTEXT: unknown;
|
|
50
|
+
readonly context: {
|
|
51
|
+
active(): unknown;
|
|
52
|
+
with<A extends unknown[], F extends (...args: A) => ReturnType<F>>(context: unknown, fn: F, thisArg?: ThisParameterType<F>, ...args: A): ReturnType<F>;
|
|
53
|
+
};
|
|
54
|
+
readonly trace: {
|
|
55
|
+
setSpan(context: unknown, span: unknown): unknown;
|
|
56
|
+
getSpan(context: unknown): {
|
|
57
|
+
spanContext(): OtelSpanContext;
|
|
58
|
+
} | undefined;
|
|
59
|
+
getTracer(name: string, version?: string): OtelTracer;
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/** The SDK's `IdGenerator`. */
|
|
63
|
+
export interface OtelIdGenerator {
|
|
64
|
+
generateTraceId(): string;
|
|
65
|
+
generateSpanId(): string;
|
|
66
|
+
}
|
|
67
|
+
export interface OtelBridgeOptions {
|
|
68
|
+
/** The app's own `@opentelemetry/api` module. */
|
|
69
|
+
readonly api: OtelApi;
|
|
70
|
+
/** Tracer that mirrored spans start on. Default `api.trace.getTracer("@nifrajs/otel")`, at first use. */
|
|
71
|
+
readonly tracer?: OtelTracer;
|
|
72
|
+
/** Maximum mirrored spans in flight at once; the oldest is ended past it. Default 10,000. */
|
|
73
|
+
readonly maxActive?: number;
|
|
74
|
+
/** Opportunistically end mirrored spans in flight longer than this many ms. Default 5 min. */
|
|
75
|
+
readonly maxActiveAgeMs?: number;
|
|
76
|
+
/** Injectable wall clock for deterministic retention tests. */
|
|
77
|
+
readonly now?: () => number;
|
|
78
|
+
/**
|
|
79
|
+
* Called once when the SDK gave a mirrored span different ids from the nifra span, which means
|
|
80
|
+
* `idGenerator` is not wired. Default: one `console.warn`.
|
|
81
|
+
*/
|
|
82
|
+
readonly onIdMismatch?: () => void;
|
|
83
|
+
}
|
|
84
|
+
export interface OtelBridge {
|
|
85
|
+
/**
|
|
86
|
+
* Mirrors nifra spans into SDK spans: name, kind, parent, links, attributes, status and timing. Add it
|
|
87
|
+
* to `tracing({ adapters })` and to `cacheTracing` / `jobTracing` / `traceEventConsumer`.
|
|
88
|
+
*/
|
|
89
|
+
readonly adapter: ObservationAdapter;
|
|
90
|
+
/**
|
|
91
|
+
* `app.use(bridge.plugin)`: each subsequent route runs with its request span active in the OTel
|
|
92
|
+
* context, so the SDK's own instrumentations (pg, mysql2, ioredis, undici, prisma) nest under it.
|
|
93
|
+
* Costs one `around()` frame per request, and only when installed.
|
|
94
|
+
*/
|
|
95
|
+
readonly plugin: IdentityPlugin;
|
|
96
|
+
/** Runs code with a nifra span active in the OTel context: `jobTracing({ scope: bridge.scope })`. */
|
|
97
|
+
readonly scope: ObservationScope;
|
|
98
|
+
/**
|
|
99
|
+
* Pass as the SDK provider's `idGenerator` so mirrored spans keep nifra's exact trace and span ids:
|
|
100
|
+
* the `traceparent` nifra forwards downstream and the trace context a job stores then name real
|
|
101
|
+
* spans. Outside a mirrored start it generates random ids.
|
|
102
|
+
*/
|
|
103
|
+
readonly idGenerator: OtelIdGenerator;
|
|
104
|
+
}
|
|
105
|
+
/** Build the bridge. See {@link OtelBridge} for what each part does. */
|
|
106
|
+
export declare function otelBridge(options: OtelBridgeOptions): OtelBridge;
|
|
107
|
+
//# sourceMappingURL=sdk-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk-bridge.d.ts","sourceRoot":"","sources":["../src/sdk-bridge.ts"],"names":[],"mappings":"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"}
|