@nifrajs/otel 4.0.0 → 5.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 +3 -1
- package/dist/metrics.d.ts +6 -0
- 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 +11 -2
- package/dist/otlp.d.ts.map +1 -1
- package/dist/otlp.js +67 -11
- package/dist/otlp.js.map +1 -1
- package/dist/tracing.d.ts +5 -0
- package/dist/tracing.d.ts.map +1 -1
- package/dist/tracing.js +2 -1
- package/dist/tracing.js.map +1 -1
- package/package.json +2 -2
- package/src/metrics.ts +0 -0
- package/src/otlp.ts +78 -13
- package/src/tracing.ts +7 -1
package/README.md
CHANGED
|
@@ -24,7 +24,9 @@ const app = server()
|
|
|
24
24
|
the inbound span as the parent. No inbound header → starts a fresh trace.
|
|
25
25
|
- **Opens a span** with HTTP semantic-convention attributes (`http.request.method`, `url.path`,
|
|
26
26
|
`http.response.status_code`, optional `service.name`), ended on response with duration + status
|
|
27
|
-
(`error` for 5xx, `ok` otherwise).
|
|
27
|
+
(`error` for 5xx, `ok` otherwise). A request that matched a route reports the route template as
|
|
28
|
+
`url.path`, so an id or a token in the path stays out of the trace backend; `rawUrlPath: true`
|
|
29
|
+
reports the raw path instead.
|
|
28
30
|
- **Exposes `c.trace`** (`{ traceId, spanId, parentSpanId?, sampled, traceparent }`) - spread
|
|
29
31
|
`traceHeaders(c.trace)` into any downstream `fetch`/`ctx.api` call to continue the trace.
|
|
30
32
|
- **Exposes `c.causality`** - a bounded, payload-free request node that survives durable command,
|
package/dist/metrics.d.ts
CHANGED
|
@@ -60,6 +60,12 @@ export declare function createMetricsRegistry(): MetricsRegistry;
|
|
|
60
60
|
export interface MetricsOptions {
|
|
61
61
|
/** Where to expose the Prometheus text. Default `/metrics`. This route is excluded from the metrics. */
|
|
62
62
|
readonly path?: string;
|
|
63
|
+
/**
|
|
64
|
+
* Decide whether a scrape may read the metrics; a refusal answers 401. Without it the endpoint is
|
|
65
|
+
* public, and route templates, status mix and traffic volume are readable by anyone who can reach
|
|
66
|
+
* it. Check a scrape token here, or guard `path` in an `onRequest` hook.
|
|
67
|
+
*/
|
|
68
|
+
readonly authorize?: (req: Request) => boolean | Promise<boolean>;
|
|
63
69
|
/** Reuse a registry (so custom app metrics render alongside the RED series). Default: a fresh one. */
|
|
64
70
|
readonly registry?: MetricsRegistry;
|
|
65
71
|
/** Histogram buckets in SECONDS for request duration. Default OpenTelemetry latency buckets. */
|
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;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,
|
|
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;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACjE,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,CA8DpE"}
|
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":"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
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}
|
package/dist/otlp.d.ts
CHANGED
|
@@ -24,6 +24,12 @@ export interface OtlpExporterOptions {
|
|
|
24
24
|
/** Periodic flush interval (ms). Must be a positive safe integer. Default 5000. */
|
|
25
25
|
readonly flushIntervalMs?: number;
|
|
26
26
|
};
|
|
27
|
+
/**
|
|
28
|
+
* Deadline for one export POST (ms); a send past it is aborted and reported. Exports go one at a
|
|
29
|
+
* time, so this also bounds how long `flush()` and `shutdown()` wait per batch. Positive safe
|
|
30
|
+
* integer; default 30000.
|
|
31
|
+
*/
|
|
32
|
+
readonly timeoutMs?: number;
|
|
27
33
|
/** Called when an export POST fails or spans are dropped. Fail-open: never throws into a request. */
|
|
28
34
|
readonly onError?: (error: unknown) => void;
|
|
29
35
|
/** Override `fetch` (tests, a proxy agent). Defaults to the global. */
|
|
@@ -33,9 +39,12 @@ export interface OtlpExporterOptions {
|
|
|
33
39
|
}>;
|
|
34
40
|
}
|
|
35
41
|
export interface OtlpExporter extends ObservationAdapter {
|
|
36
|
-
/**
|
|
42
|
+
/**
|
|
43
|
+
* Send everything queued now. Resolves once each span queued before the call was sent, failed or
|
|
44
|
+
* dropped; await it in a graceful shutdown so no span is lost.
|
|
45
|
+
*/
|
|
37
46
|
flush(): Promise<void>;
|
|
38
|
-
/** Stop the periodic timer and flush a final time. Call on server stop. */
|
|
47
|
+
/** Stop the periodic timer and flush a final time, awaiting the export in flight. Call on server stop. */
|
|
39
48
|
shutdown(): Promise<void>;
|
|
40
49
|
}
|
|
41
50
|
export declare function otlpExporter(options: OtlpExporterOptions): OtlpExporter;
|
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,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
|
|
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;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,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;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,0GAA0G;IAC1G,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B;AAiED,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAmIvE"}
|
package/dist/otlp.js
CHANGED
|
@@ -68,13 +68,21 @@ export function otlpExporter(options) {
|
|
|
68
68
|
const maxBatch = options.batch?.maxBatch ?? 512;
|
|
69
69
|
const maxQueue = options.batch?.maxQueue ?? 2048;
|
|
70
70
|
const flushIntervalMs = options.batch?.flushIntervalMs ?? 5000;
|
|
71
|
+
const timeoutMs = options.timeoutMs ?? 30_000;
|
|
71
72
|
assertPositiveSafeInteger(maxBatch, "batch.maxBatch");
|
|
72
73
|
assertPositiveSafeInteger(maxQueue, "batch.maxQueue");
|
|
73
74
|
assertPositiveSafeInteger(flushIntervalMs, "batch.flushIntervalMs");
|
|
75
|
+
assertPositiveSafeInteger(timeoutMs, "timeoutMs");
|
|
74
76
|
const doFetch = options.fetch ?? globalThis.fetch;
|
|
75
77
|
const resourceAttributes = keyValues({ "service.name": options.serviceName ?? "nifra" });
|
|
76
78
|
const queue = [];
|
|
77
79
|
let timer;
|
|
80
|
+
// Spans ever queued, and spans since sent, failed or dropped. The queue is FIFO and drops its
|
|
81
|
+
// oldest, so every span queued before a flush is settled once `settled` reaches that flush's mark.
|
|
82
|
+
let queued = 0;
|
|
83
|
+
let settled = 0;
|
|
84
|
+
const waiters = [];
|
|
85
|
+
let pumping = false;
|
|
78
86
|
const report = (error) => {
|
|
79
87
|
try {
|
|
80
88
|
options.onError?.(error);
|
|
@@ -94,41 +102,89 @@ export function otlpExporter(options) {
|
|
|
94
102
|
},
|
|
95
103
|
],
|
|
96
104
|
});
|
|
105
|
+
const controller = new AbortController();
|
|
106
|
+
let deadline;
|
|
107
|
+
// Raced as well as signalled: a custom fetch that ignores the signal must not hold the loop.
|
|
108
|
+
const expired = new Promise((_, reject) => {
|
|
109
|
+
deadline = setTimeout(() => {
|
|
110
|
+
const error = new Error(`otlp_export_timeout_${timeoutMs}ms`);
|
|
111
|
+
controller.abort(error);
|
|
112
|
+
reject(error);
|
|
113
|
+
}, timeoutMs);
|
|
114
|
+
deadline.unref?.();
|
|
115
|
+
});
|
|
97
116
|
try {
|
|
98
|
-
const res = await
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
117
|
+
const res = await Promise.race([
|
|
118
|
+
doFetch(options.url, {
|
|
119
|
+
method: "POST",
|
|
120
|
+
headers: { "content-type": "application/json", ...options.headers },
|
|
121
|
+
body,
|
|
122
|
+
signal: controller.signal,
|
|
123
|
+
}),
|
|
124
|
+
expired,
|
|
125
|
+
]);
|
|
103
126
|
if (!res.ok)
|
|
104
127
|
report(new Error(`otlp_export_failed_${res.status}`));
|
|
105
128
|
}
|
|
106
129
|
catch (error) {
|
|
107
130
|
report(error);
|
|
108
131
|
}
|
|
132
|
+
finally {
|
|
133
|
+
clearTimeout(deadline);
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
const settle = (count) => {
|
|
137
|
+
settled += count;
|
|
138
|
+
for (let i = waiters.length - 1; i >= 0; i--) {
|
|
139
|
+
const waiter = waiters[i];
|
|
140
|
+
if (waiter === undefined || waiter.mark > settled)
|
|
141
|
+
continue;
|
|
142
|
+
waiters.splice(i, 1);
|
|
143
|
+
waiter.resolve();
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
// One export in flight at a time; spans arriving meanwhile wait in the bounded queue.
|
|
147
|
+
const pump = async () => {
|
|
148
|
+
while (queue.length > 0) {
|
|
149
|
+
const batch = queue.splice(0, maxBatch);
|
|
150
|
+
await send(batch);
|
|
151
|
+
settle(batch.length);
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
const kick = () => {
|
|
155
|
+
if (pumping)
|
|
156
|
+
return;
|
|
157
|
+
pumping = true;
|
|
158
|
+
void pump().finally(() => {
|
|
159
|
+
pumping = false;
|
|
160
|
+
if (queue.length > 0)
|
|
161
|
+
kick();
|
|
162
|
+
});
|
|
109
163
|
};
|
|
110
164
|
const flush = () => {
|
|
111
|
-
if (
|
|
165
|
+
if (settled === queued)
|
|
112
166
|
return Promise.resolve();
|
|
113
|
-
|
|
167
|
+
const done = new Promise((resolve) => waiters.push({ mark: queued, resolve }));
|
|
168
|
+
kick();
|
|
169
|
+
return done;
|
|
114
170
|
};
|
|
115
171
|
const ensureTimer = () => {
|
|
116
172
|
if (timer !== undefined)
|
|
117
173
|
return;
|
|
118
|
-
timer = setInterval(
|
|
119
|
-
void flush();
|
|
120
|
-
}, flushIntervalMs);
|
|
174
|
+
timer = setInterval(kick, flushIntervalMs);
|
|
121
175
|
timer.unref?.(); // never keep the process alive for the exporter
|
|
122
176
|
};
|
|
123
177
|
return {
|
|
124
178
|
onEnd(span) {
|
|
125
179
|
queue.push(span);
|
|
180
|
+
queued++;
|
|
126
181
|
if (queue.length > maxQueue) {
|
|
127
182
|
queue.shift(); // drop the oldest under sustained backpressure rather than grow unbounded
|
|
183
|
+
settle(1);
|
|
128
184
|
report(new Error("otlp_queue_overflow_span_dropped"));
|
|
129
185
|
}
|
|
130
186
|
if (queue.length >= maxBatch)
|
|
131
|
-
|
|
187
|
+
kick();
|
|
132
188
|
else
|
|
133
189
|
ensureTimer();
|
|
134
190
|
},
|
package/dist/otlp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otlp.js","sourceRoot":"","sources":["../src/otlp.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"otlp.js","sourceRoot":"","sources":["../src/otlp.ts"],"names":[],"mappings":"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"}
|
package/dist/tracing.d.ts
CHANGED
|
@@ -23,6 +23,11 @@ export interface TracingOptions {
|
|
|
23
23
|
readonly adapters?: readonly ObservationAdapter[];
|
|
24
24
|
/** Sets the `service.name` attribute on every span. */
|
|
25
25
|
readonly serviceName?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Report the request's raw path as `url.path`. Default false: a request that matched a route
|
|
28
|
+
* reports the route template there, since a path segment can hold an email, an id or a token.
|
|
29
|
+
*/
|
|
30
|
+
readonly rawUrlPath?: boolean;
|
|
26
31
|
/**
|
|
27
32
|
* Set the outbound `traceparent` on the RESPONSE too (handy for browser/client correlation).
|
|
28
33
|
* Default false - most setups only propagate downstream, not back to the caller.
|
package/dist/tracing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../src/tracing.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EAKvB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,KAAK,aAAa,EAAuB,MAAM,sBAAsB,CAAA;AAC9E,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAuB,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAExE,yFAAyF;AACzF,MAAM,MAAM,YAAY,GAAG,kBAAkB,CAAA;AAE7C,sFAAsF;AACtF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAA;IACvC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAA;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IACtC,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAA;IACjD,uDAAuD;IACvD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE;QACnB,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAA;QACrC,sDAAsD;QACtD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;QAC3B;;;WAGG;QACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CACvB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,gBAAgB,KACtB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;KAChC,CAAA;CACF;AAMD;uDACuD;AACvD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,YAAY,EACnB,SAAS,CAAC,EAAE,gBAAgB,GAC3B;IAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAKrE;AAUD;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,aAAa,CAAC,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../src/tracing.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EAKvB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,KAAK,aAAa,EAAuB,MAAM,sBAAsB,CAAA;AAC9E,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAuB,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAExE,yFAAyF;AACzF,MAAM,MAAM,YAAY,GAAG,kBAAkB,CAAA;AAE7C,sFAAsF;AACtF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAA;IACvC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAA;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IACtC,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAA;IACjD,uDAAuD;IACvD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE;QACnB,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAA;QACrC,sDAAsD;QACtD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;QAC3B;;;WAGG;QACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CACvB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,gBAAgB,KACtB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;KAChC,CAAA;CACF;AAMD;uDACuD;AACvD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,YAAY,EACnB,SAAS,CAAC,EAAE,gBAAgB,GAC3B;IAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAKrE;AAUD;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,aAAa,CAAC,cAAc,CAAC,CAmHnF"}
|
package/dist/tracing.js
CHANGED
|
@@ -49,6 +49,7 @@ export function tracing(options = {}) {
|
|
|
49
49
|
return typeof shutdown === "function" ? [() => Promise.resolve(shutdown.call(adapter))] : [];
|
|
50
50
|
});
|
|
51
51
|
const serviceName = options.serviceName;
|
|
52
|
+
const rawUrlPath = options.rawUrlPath === true;
|
|
52
53
|
// A WeakMap so an abandoned request cannot leak its active observation.
|
|
53
54
|
const inFlight = new WeakMap();
|
|
54
55
|
return defineContextPlugin("tracing", (app) => {
|
|
@@ -70,7 +71,7 @@ export function tracing(options = {}) {
|
|
|
70
71
|
"http.request.method": method,
|
|
71
72
|
...(method === "_OTHER" ? { "http.request.method_original": c.req.method } : {}),
|
|
72
73
|
...(route === undefined ? {} : { "http.route": route }),
|
|
73
|
-
"url.path": path,
|
|
74
|
+
"url.path": rawUrlPath || route === undefined ? path : route,
|
|
74
75
|
...(serviceName === undefined ? {} : { "service.name": serviceName }),
|
|
75
76
|
},
|
|
76
77
|
});
|
package/dist/tracing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../src/tracing.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAGL,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,GACf,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAsB,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC9E,OAAO,EAEL,0BAA0B,GAE3B,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,EAAE,mBAAmB,EAA2B,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../src/tracing.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nifrajs/otel",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Distributed tracing for nifra - W3C traceparent/tracestate propagation + OpenTelemetry-semantic-convention spans via a pluggable exporter. Bridge to the OpenTelemetry SDK or log spans directly; no SDK bundled. Edge-safe.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bun",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"access": "public"
|
|
73
73
|
},
|
|
74
74
|
"peerDependencies": {
|
|
75
|
-
"@nifrajs/core": "^
|
|
75
|
+
"@nifrajs/core": "^5.0.0"
|
|
76
76
|
},
|
|
77
77
|
"devDependencies": {
|
|
78
78
|
"@nifrajs/cache": "workspace:*",
|
package/src/metrics.ts
CHANGED
|
Binary file
|
package/src/otlp.ts
CHANGED
|
@@ -26,6 +26,12 @@ export interface OtlpExporterOptions {
|
|
|
26
26
|
/** Periodic flush interval (ms). Must be a positive safe integer. Default 5000. */
|
|
27
27
|
readonly flushIntervalMs?: number
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Deadline for one export POST (ms); a send past it is aborted and reported. Exports go one at a
|
|
31
|
+
* time, so this also bounds how long `flush()` and `shutdown()` wait per batch. Positive safe
|
|
32
|
+
* integer; default 30000.
|
|
33
|
+
*/
|
|
34
|
+
readonly timeoutMs?: number
|
|
29
35
|
/** Called when an export POST fails or spans are dropped. Fail-open: never throws into a request. */
|
|
30
36
|
readonly onError?: (error: unknown) => void
|
|
31
37
|
/** Override `fetch` (tests, a proxy agent). Defaults to the global. */
|
|
@@ -33,9 +39,12 @@ export interface OtlpExporterOptions {
|
|
|
33
39
|
}
|
|
34
40
|
|
|
35
41
|
export interface OtlpExporter extends ObservationAdapter {
|
|
36
|
-
/**
|
|
42
|
+
/**
|
|
43
|
+
* Send everything queued now. Resolves once each span queued before the call was sent, failed or
|
|
44
|
+
* dropped; await it in a graceful shutdown so no span is lost.
|
|
45
|
+
*/
|
|
37
46
|
flush(): Promise<void>
|
|
38
|
-
/** Stop the periodic timer and flush a final time. Call on server stop. */
|
|
47
|
+
/** Stop the periodic timer and flush a final time, awaiting the export in flight. Call on server stop. */
|
|
39
48
|
shutdown(): Promise<void>
|
|
40
49
|
}
|
|
41
50
|
|
|
@@ -106,14 +115,22 @@ export function otlpExporter(options: OtlpExporterOptions): OtlpExporter {
|
|
|
106
115
|
const maxBatch = options.batch?.maxBatch ?? 512
|
|
107
116
|
const maxQueue = options.batch?.maxQueue ?? 2048
|
|
108
117
|
const flushIntervalMs = options.batch?.flushIntervalMs ?? 5000
|
|
118
|
+
const timeoutMs = options.timeoutMs ?? 30_000
|
|
109
119
|
assertPositiveSafeInteger(maxBatch, "batch.maxBatch")
|
|
110
120
|
assertPositiveSafeInteger(maxQueue, "batch.maxQueue")
|
|
111
121
|
assertPositiveSafeInteger(flushIntervalMs, "batch.flushIntervalMs")
|
|
122
|
+
assertPositiveSafeInteger(timeoutMs, "timeoutMs")
|
|
112
123
|
const doFetch = options.fetch ?? (globalThis.fetch as OtlpExporterOptions["fetch"])
|
|
113
124
|
const resourceAttributes = keyValues({ "service.name": options.serviceName ?? "nifra" })
|
|
114
125
|
|
|
115
126
|
const queue: NifraSpan[] = []
|
|
116
127
|
let timer: ReturnType<typeof setInterval> | undefined
|
|
128
|
+
// Spans ever queued, and spans since sent, failed or dropped. The queue is FIFO and drops its
|
|
129
|
+
// oldest, so every span queued before a flush is settled once `settled` reaches that flush's mark.
|
|
130
|
+
let queued = 0
|
|
131
|
+
let settled = 0
|
|
132
|
+
const waiters: Array<{ readonly mark: number; readonly resolve: () => void }> = []
|
|
133
|
+
let pumping = false
|
|
117
134
|
|
|
118
135
|
const report = (error: unknown): void => {
|
|
119
136
|
try {
|
|
@@ -133,39 +150,87 @@ export function otlpExporter(options: OtlpExporterOptions): OtlpExporter {
|
|
|
133
150
|
},
|
|
134
151
|
],
|
|
135
152
|
})
|
|
153
|
+
const controller = new AbortController()
|
|
154
|
+
let deadline: ReturnType<typeof setTimeout> | undefined
|
|
155
|
+
// Raced as well as signalled: a custom fetch that ignores the signal must not hold the loop.
|
|
156
|
+
const expired = new Promise<never>((_, reject) => {
|
|
157
|
+
deadline = setTimeout(() => {
|
|
158
|
+
const error = new Error(`otlp_export_timeout_${timeoutMs}ms`)
|
|
159
|
+
controller.abort(error)
|
|
160
|
+
reject(error)
|
|
161
|
+
}, timeoutMs)
|
|
162
|
+
// biome-ignore lint/plugin/requireSafetyCommentForTypeAssertion: Node and Bun timers carry unref; elsewhere the optional call is a no-op
|
|
163
|
+
;(deadline as { unref?: () => void }).unref?.()
|
|
164
|
+
})
|
|
136
165
|
try {
|
|
137
|
-
const res = await
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
166
|
+
const res = await Promise.race([
|
|
167
|
+
doFetch(options.url, {
|
|
168
|
+
method: "POST",
|
|
169
|
+
headers: { "content-type": "application/json", ...options.headers },
|
|
170
|
+
body,
|
|
171
|
+
signal: controller.signal,
|
|
172
|
+
}),
|
|
173
|
+
expired,
|
|
174
|
+
])
|
|
142
175
|
if (!res.ok) report(new Error(`otlp_export_failed_${res.status}`))
|
|
143
176
|
} catch (error) {
|
|
144
177
|
report(error)
|
|
178
|
+
} finally {
|
|
179
|
+
clearTimeout(deadline)
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
const settle = (count: number): void => {
|
|
184
|
+
settled += count
|
|
185
|
+
for (let i = waiters.length - 1; i >= 0; i--) {
|
|
186
|
+
const waiter = waiters[i]
|
|
187
|
+
if (waiter === undefined || waiter.mark > settled) continue
|
|
188
|
+
waiters.splice(i, 1)
|
|
189
|
+
waiter.resolve()
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// One export in flight at a time; spans arriving meanwhile wait in the bounded queue.
|
|
194
|
+
const pump = async (): Promise<void> => {
|
|
195
|
+
while (queue.length > 0) {
|
|
196
|
+
const batch = queue.splice(0, maxBatch)
|
|
197
|
+
await send(batch)
|
|
198
|
+
settle(batch.length)
|
|
145
199
|
}
|
|
146
200
|
}
|
|
147
201
|
|
|
202
|
+
const kick = (): void => {
|
|
203
|
+
if (pumping) return
|
|
204
|
+
pumping = true
|
|
205
|
+
void pump().finally(() => {
|
|
206
|
+
pumping = false
|
|
207
|
+
if (queue.length > 0) kick()
|
|
208
|
+
})
|
|
209
|
+
}
|
|
210
|
+
|
|
148
211
|
const flush = (): Promise<void> => {
|
|
149
|
-
if (
|
|
150
|
-
|
|
212
|
+
if (settled === queued) return Promise.resolve()
|
|
213
|
+
const done = new Promise<void>((resolve) => waiters.push({ mark: queued, resolve }))
|
|
214
|
+
kick()
|
|
215
|
+
return done
|
|
151
216
|
}
|
|
152
217
|
|
|
153
218
|
const ensureTimer = (): void => {
|
|
154
219
|
if (timer !== undefined) return
|
|
155
|
-
timer = setInterval(
|
|
156
|
-
void flush()
|
|
157
|
-
}, flushIntervalMs)
|
|
220
|
+
timer = setInterval(kick, flushIntervalMs)
|
|
158
221
|
;(timer as { unref?: () => void }).unref?.() // never keep the process alive for the exporter
|
|
159
222
|
}
|
|
160
223
|
|
|
161
224
|
return {
|
|
162
225
|
onEnd(span) {
|
|
163
226
|
queue.push(span)
|
|
227
|
+
queued++
|
|
164
228
|
if (queue.length > maxQueue) {
|
|
165
229
|
queue.shift() // drop the oldest under sustained backpressure rather than grow unbounded
|
|
230
|
+
settle(1)
|
|
166
231
|
report(new Error("otlp_queue_overflow_span_dropped"))
|
|
167
232
|
}
|
|
168
|
-
if (queue.length >= maxBatch)
|
|
233
|
+
if (queue.length >= maxBatch) kick()
|
|
169
234
|
else ensureTimer()
|
|
170
235
|
},
|
|
171
236
|
flush,
|
package/src/tracing.ts
CHANGED
|
@@ -39,6 +39,11 @@ export interface TracingOptions {
|
|
|
39
39
|
readonly adapters?: readonly ObservationAdapter[]
|
|
40
40
|
/** Sets the `service.name` attribute on every span. */
|
|
41
41
|
readonly serviceName?: string
|
|
42
|
+
/**
|
|
43
|
+
* Report the request's raw path as `url.path`. Default false: a request that matched a route
|
|
44
|
+
* reports the route template there, since a path segment can hold an email, an id or a token.
|
|
45
|
+
*/
|
|
46
|
+
readonly rawUrlPath?: boolean
|
|
42
47
|
/**
|
|
43
48
|
* Set the outbound `traceparent` on the RESPONSE too (handy for browser/client correlation).
|
|
44
49
|
* Default false - most setups only propagate downstream, not back to the caller.
|
|
@@ -111,6 +116,7 @@ export function tracing(options: TracingOptions = {}): ContextPlugin<TracingCont
|
|
|
111
116
|
return typeof shutdown === "function" ? [() => Promise.resolve(shutdown.call(adapter))] : []
|
|
112
117
|
})
|
|
113
118
|
const serviceName = options.serviceName
|
|
119
|
+
const rawUrlPath = options.rawUrlPath === true
|
|
114
120
|
// A WeakMap so an abandoned request cannot leak its active observation.
|
|
115
121
|
const inFlight = new WeakMap<Request, ActiveObservation>()
|
|
116
122
|
|
|
@@ -132,7 +138,7 @@ export function tracing(options: TracingOptions = {}): ContextPlugin<TracingCont
|
|
|
132
138
|
"http.request.method": method,
|
|
133
139
|
...(method === "_OTHER" ? { "http.request.method_original": c.req.method } : {}),
|
|
134
140
|
...(route === undefined ? {} : { "http.route": route }),
|
|
135
|
-
"url.path": path,
|
|
141
|
+
"url.path": rawUrlPath || route === undefined ? path : route,
|
|
136
142
|
...(serviceName === undefined ? {} : { "service.name": serviceName }),
|
|
137
143
|
},
|
|
138
144
|
})
|