@cat-factory/observability-otel 0.21.11 → 0.22.1
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.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/otlp.js +67 -2
- package/dist/otlp.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,14 @@ import type { LlmGenerationEvent, LlmRunSpan, LlmStepSpan, LlmToolSpan, LlmToolS
|
|
|
2
2
|
export interface OtelSinkConfig {
|
|
3
3
|
/** OTLP/HTTP base URL, e.g. `http://collector:4318` (the `/v1/*` paths are appended). */
|
|
4
4
|
endpoint: string;
|
|
5
|
+
/**
|
|
6
|
+
* Whether the destination takes `/v1/metrics` as well as `/v1/traces`. Default true.
|
|
7
|
+
*
|
|
8
|
+
* Not every OTLP endpoint is a general collector: a trace BACKEND may implement the traces
|
|
9
|
+
* signal alone (Langfuse does), and posting metrics there earns a 404 per generation. Off means
|
|
10
|
+
* the metrics payload is never built, rather than built and dropped.
|
|
11
|
+
*/
|
|
12
|
+
exportMetrics?: boolean;
|
|
5
13
|
/** Extra headers merged onto every request (auth tokens, tenant ids, …). */
|
|
6
14
|
headers?: Record<string, string>;
|
|
7
15
|
/** OTLP resource `service.name`; defaults to `cat-factory`. */
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,MAAM,EACP,MAAM,qBAAqB,CAAA;AA0C5B,MAAM,WAAW,cAAc;IAC7B,yFAAyF;IACzF,QAAQ,EAAE,MAAM,CAAA;IAChB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gEAAgE;IAChE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAyBD,qBAAa,aAAc,YAAW,YAAY;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,MAAM,EACP,MAAM,qBAAqB,CAAA;AA0C5B,MAAM,WAAW,cAAc;IAC7B,yFAAyF;IACzF,QAAQ,EAAE,MAAM,CAAA;IAChB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gEAAgE;IAChE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAyBD,qBAAa,aAAc,YAAW,YAAY;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAe;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IAExC,YAAY,MAAM,EAAE,cAAc,EAQjC;IAED,OAAO,CAAC,kBAAkB;IAIpB,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAO/D;IAEK,eAAe,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAItF;IAED;;;;OAIG;IACG,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzE;YAEa,SAAS;YAiBT,WAAW;YAwDX,IAAI;CASnB;AAED,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,aAAa,CAEpE;AAKD,OAAO,EACL,2BAA2B,EAC3B,KAAK,iCAAiC,EACtC,iCAAiC,GAClC,MAAM,eAAe,CAAA;AAKtB,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,KAAK,qBAAqB,EAC1B,cAAc,EACd,qBAAqB,GACtB,MAAM,WAAW,CAAA;AAElB;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAY5F;AAID,uFAAuF;AACvF,eAAO,MAAM,oCAAoC,QAAS,CAAA;AAE1D,0EAA0E;AAC1E,eAAO,MAAM,wBAAwB,YAAI,IAAI,EAAE,KAAK,EAAE,IAAI,CAAU,CAAA;AACpE,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE7E;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAG9E;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,qBAAqB,CAGzF;AAID;;;;;GAKG;AACH,eAAO,MAAM,oCAAoC,OAAQ,CAAA;AAEzD;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAG7E;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGvE"}
|
package/dist/index.js
CHANGED
|
@@ -53,7 +53,7 @@ export class OtelTraceSink {
|
|
|
53
53
|
constructor(config) {
|
|
54
54
|
const base = config.endpoint.replace(/\/+$/, '');
|
|
55
55
|
this.tracesEndpoint = `${base}/v1/traces`;
|
|
56
|
-
this.metricsEndpoint = `${base}/v1/metrics`;
|
|
56
|
+
this.metricsEndpoint = config.exportMetrics === false ? null : `${base}/v1/metrics`;
|
|
57
57
|
this.headers = { 'content-type': 'application/json', ...config.headers };
|
|
58
58
|
this.serviceName = config.serviceName || DEFAULT_SERVICE_NAME;
|
|
59
59
|
this.logger = config.logger;
|
|
@@ -64,9 +64,11 @@ export class OtelTraceSink {
|
|
|
64
64
|
}
|
|
65
65
|
async recordGeneration(event) {
|
|
66
66
|
const span = mapGeneration(event);
|
|
67
|
-
const metrics = mapGenerationMetrics(event);
|
|
68
67
|
// Traces and metrics go to distinct OTLP endpoints (two POSTs), each best-effort.
|
|
69
|
-
await Promise.all([
|
|
68
|
+
await Promise.all([
|
|
69
|
+
this.sendSpans([span]),
|
|
70
|
+
this.metricsEndpoint ? this.sendMetrics(mapGenerationMetrics(event)) : Promise.resolve(),
|
|
71
|
+
]);
|
|
70
72
|
}
|
|
71
73
|
async recordToolSpans(context, spans) {
|
|
72
74
|
// Tool spans are only meaningful as children of a run's trace.
|
|
@@ -99,6 +101,8 @@ export class OtelTraceSink {
|
|
|
99
101
|
await this.send(this.tracesEndpoint, payload);
|
|
100
102
|
}
|
|
101
103
|
async sendMetrics(metrics) {
|
|
104
|
+
if (!this.metricsEndpoint)
|
|
105
|
+
return;
|
|
102
106
|
const startNano = toUnixNano(metrics.startTimeMs);
|
|
103
107
|
const timeNano = toUnixNano(metrics.endTimeMs);
|
|
104
108
|
const payload = {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,IAAI,EACJ,oBAAoB,EACpB,aAAa,EACb,MAAM,EACN,UAAU,EACV,UAAU,EACV,aAAa,EACb,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,WAAW,EACX,UAAU,GACX,MAAM,cAAc,CAAA;AACrB,OAAO,EAAiB,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAElD,wFAAwF;AACxF,0FAA0F;AAC1F,2FAA2F;AAC3F,uFAAuF;AACvF,0FAA0F;AAC1F,0FAA0F;AAC1F,mFAAmF;AACnF,EAAE;AACF,yFAAyF;AACzF,uFAAuF;AACvF,uFAAuF;AACvF,0FAA0F;AAC1F,uFAAuF;AACvF,yFAAyF;AAEzF,8DAA8D;AAC9D,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAC3B,wFAAwF;AACxF,MAAM,SAAS,GAAuC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAA;AAChF,wCAAwC;AACxC,MAAM,YAAY,GAAG,CAAC,CAAA;AACtB,MAAM,YAAY,GAAG,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/otlp.js
CHANGED
|
@@ -36,11 +36,11 @@ export async function postOtlp(opts) {
|
|
|
36
36
|
body: JSON.stringify(opts.payload),
|
|
37
37
|
signal: AbortSignal.timeout(opts.timeoutMs ?? SEND_TIMEOUT_MS),
|
|
38
38
|
});
|
|
39
|
-
// OTLP/HTTP returns 200 on full success and may return 200 with a partial-success body;
|
|
40
|
-
// any non-2xx is a failure we only log — observability never breaks the caller.
|
|
41
39
|
if (!res.ok) {
|
|
42
40
|
opts.logger?.warn('otel: OTLP endpoint rejected batch', { scope: 'otel', status: res.status });
|
|
41
|
+
return;
|
|
43
42
|
}
|
|
43
|
+
await reportPartialSuccess(res, opts.logger);
|
|
44
44
|
}
|
|
45
45
|
catch (err) {
|
|
46
46
|
opts.logger?.warn('otel: failed to POST OTLP batch', {
|
|
@@ -49,4 +49,69 @@ export async function postOtlp(opts) {
|
|
|
49
49
|
});
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* A 2xx does NOT mean the collector took everything.
|
|
54
|
+
*
|
|
55
|
+
* OTLP's `partial_success` is load-bearing: a server that dropped some of the batch answers 200
|
|
56
|
+
* with a rejected count and a message, and it MAY warn about a batch it took whole (a zero
|
|
57
|
+
* rejected count beside a non-empty `error_message`). Treating any 200 as full acceptance made
|
|
58
|
+
* silently dropped spans look identical to a clean flush, which is the degrade-loudly rule with
|
|
59
|
+
* the vendor's own field sitting unread. Nothing here retries: the spec forbids retrying a partial
|
|
60
|
+
* success, and this exporter never retried anything.
|
|
61
|
+
*/
|
|
62
|
+
async function reportPartialSuccess(res, logger) {
|
|
63
|
+
if (!logger)
|
|
64
|
+
return;
|
|
65
|
+
const partial = await readPartialSuccess(res);
|
|
66
|
+
if (!partial)
|
|
67
|
+
return;
|
|
68
|
+
const rejected = partial.rejectedSpans ?? partial.rejectedDataPoints ?? partial.rejectedLogRecords ?? 0;
|
|
69
|
+
if (!rejected && !partial.errorMessage)
|
|
70
|
+
return;
|
|
71
|
+
logger.warn('otel: OTLP endpoint accepted the batch only in part', {
|
|
72
|
+
scope: 'otel',
|
|
73
|
+
rejected,
|
|
74
|
+
...(partial.errorMessage ? { detail: partial.errorMessage } : {}),
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
/** The `partialSuccess` block of an OTLP/JSON response, or undefined when there is none. */
|
|
78
|
+
async function readPartialSuccess(res) {
|
|
79
|
+
// A collector answering 200 with an empty body is the ordinary full-acceptance case, and an
|
|
80
|
+
// unreadable body says nothing about what was accepted, so both read as "nothing to report".
|
|
81
|
+
const body = await res.text().catch(() => '');
|
|
82
|
+
if (!body.trim())
|
|
83
|
+
return undefined;
|
|
84
|
+
let parsed;
|
|
85
|
+
try {
|
|
86
|
+
parsed = JSON.parse(body);
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
if (typeof parsed !== 'object' || parsed === null)
|
|
92
|
+
return undefined;
|
|
93
|
+
const partial = parsed.partialSuccess;
|
|
94
|
+
if (typeof partial !== 'object' || partial === null)
|
|
95
|
+
return undefined;
|
|
96
|
+
const read = partial;
|
|
97
|
+
// 64-bit counts arrive as decimal STRINGS in the JSON encoding, and either form is legal.
|
|
98
|
+
const count = (value) => {
|
|
99
|
+
const n = typeof value === 'string' ? Number(value) : value;
|
|
100
|
+
return typeof n === 'number' && Number.isFinite(n) ? n : undefined;
|
|
101
|
+
};
|
|
102
|
+
return {
|
|
103
|
+
...(count(read.rejectedSpans) !== undefined
|
|
104
|
+
? { rejectedSpans: count(read.rejectedSpans) }
|
|
105
|
+
: {}),
|
|
106
|
+
...(count(read.rejectedDataPoints) !== undefined
|
|
107
|
+
? { rejectedDataPoints: count(read.rejectedDataPoints) }
|
|
108
|
+
: {}),
|
|
109
|
+
...(count(read.rejectedLogRecords) !== undefined
|
|
110
|
+
? { rejectedLogRecords: count(read.rejectedLogRecords) }
|
|
111
|
+
: {}),
|
|
112
|
+
...(typeof read.errorMessage === 'string' && read.errorMessage
|
|
113
|
+
? { errorMessage: read.errorMessage }
|
|
114
|
+
: {}),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
52
117
|
//# sourceMappingURL=otlp.js.map
|
package/dist/otlp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otlp.js","sourceRoot":"","sources":["../src/otlp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAGrD,wFAAwF;AACxF,wFAAwF;AACxF,uFAAuF;AACvF,+EAA+E;AAC/E,mFAAmF;AAEnF,uFAAuF;AACvF,MAAM,eAAe,GAAG,MAAM,CAAA;AAgB9B,gEAAgE;AAChE,SAAS,QAAQ,CAAC,KAAqB;IACrC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAA;IACnF,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;IACvF,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;IAC3D,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;AAC/B,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,SAAS,CAAC,KAAmB;IAC3C,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;AACvF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAO9B;IACC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC9C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;YAClC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,eAAe,CAAC;SAC/D,CAAC,CAAA;QACF,
|
|
1
|
+
{"version":3,"file":"otlp.js","sourceRoot":"","sources":["../src/otlp.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/observability-otel",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.1",
|
|
4
4
|
"description": "Opt-in OpenTelemetry (OTLP) trace + metrics publisher for the Agent Architecture Board. Streams LLM generations and container tool spans to any OTLP/HTTP backend — the workerd-safe fetch exporter on the Cloudflare Worker facade, the official @opentelemetry/* SDK on Node — kept conformant by a shared mapping layer + tests. Also publishes deployment-level (platform-operator) run-health aggregates as OTLP gauge metrics.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
"@opentelemetry/sdk-metrics": "^2.10.0",
|
|
36
36
|
"@opentelemetry/sdk-trace-base": "^2.10.0",
|
|
37
37
|
"@opentelemetry/sdk-trace-node": "^2.10.0",
|
|
38
|
-
"@cat-factory/contracts": "0.
|
|
39
|
-
"@cat-factory/kernel": "0.
|
|
38
|
+
"@cat-factory/contracts": "0.323.0",
|
|
39
|
+
"@cat-factory/kernel": "0.314.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"typescript": "7.0.2",
|