@kronos-ts/opentelemetry 0.2.2 → 0.3.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opentelemetry-span-factory.d.ts","sourceRoot":"","sources":["../src/opentelemetry-span-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,MAAM,EAIZ,MAAM,oBAAoB,CAAA;AAG3B,OAAO,KAAK,EAAQ,WAAW,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"opentelemetry-span-factory.d.ts","sourceRoot":"","sources":["../src/opentelemetry-span-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,MAAM,EAIZ,MAAM,oBAAoB,CAAA;AAG3B,OAAO,KAAK,EAAQ,WAAW,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAuDrF,MAAM,WAAW,+BAA+B;IAC9C,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,uCAAuC;IACvC,sBAAsB,CAAC,EAAE,sBAAsB,EAAE,CAAA;CAClD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,GAAE,+BAAoC,GAC5C,WAAW,CAyGb"}
|
|
@@ -19,7 +19,7 @@ const metadataSetter = {
|
|
|
19
19
|
// ---------------------------------------------------------------------------
|
|
20
20
|
// OpenTelemetry Span wrapper
|
|
21
21
|
// ---------------------------------------------------------------------------
|
|
22
|
-
function wrapOtelSpan(otelSpan,
|
|
22
|
+
function wrapOtelSpan(otelSpan, _parentContext) {
|
|
23
23
|
return {
|
|
24
24
|
start() {
|
|
25
25
|
// OTel spans are started at creation — nothing to do
|
|
@@ -34,6 +34,13 @@ function wrapOtelSpan(otelSpan, parentContext) {
|
|
|
34
34
|
otelSpan.setStatus({ code: SpanStatusCode.ERROR, message: error.message });
|
|
35
35
|
otelSpan.end();
|
|
36
36
|
},
|
|
37
|
+
runActive(fn) {
|
|
38
|
+
// Make this span the active context for the duration of `fn`. With the
|
|
39
|
+
// AsyncLocalStorage context manager the span stays active across awaits in
|
|
40
|
+
// an async `fn`, so propagateContext / currentTraceContext and any child
|
|
41
|
+
// spans created during handling parent to it.
|
|
42
|
+
return context.with(trace.setSpan(context.active(), otelSpan), fn);
|
|
43
|
+
},
|
|
37
44
|
};
|
|
38
45
|
}
|
|
39
46
|
/**
|
|
@@ -78,6 +85,20 @@ export function createOpenTelemetrySpanFactory(options = {}) {
|
|
|
78
85
|
addMessageAttributes(otelSpan, parentMessage);
|
|
79
86
|
return wrapOtelSpan(otelSpan, parentContext);
|
|
80
87
|
},
|
|
88
|
+
createLinkedHandlerSpan(operationName, parentMessage) {
|
|
89
|
+
// New trace (root), linked to the parent message's span rather than
|
|
90
|
+
// parented to it — the originating trace may be long finished by the time
|
|
91
|
+
// an asynchronous processor handles the event.
|
|
92
|
+
const parentContext = extractContext(parentMessage);
|
|
93
|
+
const parentSpanContext = trace.getSpanContext(parentContext);
|
|
94
|
+
const otelSpan = tracer.startSpan(operationName, {
|
|
95
|
+
kind: SpanKind.CONSUMER,
|
|
96
|
+
root: true,
|
|
97
|
+
links: parentSpanContext ? [{ context: parentSpanContext }] : [],
|
|
98
|
+
});
|
|
99
|
+
addMessageAttributes(otelSpan, parentMessage);
|
|
100
|
+
return wrapOtelSpan(otelSpan, parentContext);
|
|
101
|
+
},
|
|
81
102
|
createDispatchSpan(operationName, parentMessage) {
|
|
82
103
|
const parentContext = extractContext(parentMessage);
|
|
83
104
|
const otelSpan = tracer.startSpan(operationName, { kind: SpanKind.PRODUCER }, parentContext);
|
|
@@ -101,6 +122,11 @@ export function createOpenTelemetrySpanFactory(options = {}) {
|
|
|
101
122
|
metadata: { ...message.metadata, ...additionalMetadata },
|
|
102
123
|
};
|
|
103
124
|
},
|
|
125
|
+
currentTraceContext() {
|
|
126
|
+
const carrier = {};
|
|
127
|
+
propagation.inject(context.active(), carrier, metadataSetter);
|
|
128
|
+
return carrier;
|
|
129
|
+
},
|
|
104
130
|
registerSpanAttributeProvider(provider) {
|
|
105
131
|
attributeProviders.push(provider);
|
|
106
132
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opentelemetry-span-factory.js","sourceRoot":"","sources":["../src/opentelemetry-span-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,OAAO,EACP,WAAW,EACX,QAAQ,EACR,cAAc,GAKf,MAAM,oBAAoB,CAAA;AAK3B,8EAA8E;AAC9E,kFAAkF;AAClF,8EAA8E;AAE9E,MAAM,cAAc,GAA2B;IAC7C,IAAI,CAAC,OAAO;QACV,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IACD,GAAG,CAAC,OAAO,EAAE,GAAG;QACd,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QACnC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAClD,CAAC;CACF,CAAA;AAED,MAAM,cAAc,GAA2C;IAC7D,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK;QACrB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IACtB,CAAC;CACF,CAAA;AAED,8EAA8E;AAC9E,6BAA6B;AAC7B,8EAA8E;AAE9E,SAAS,YAAY,CAAC,QAA2C,EAAE,
|
|
1
|
+
{"version":3,"file":"opentelemetry-span-factory.js","sourceRoot":"","sources":["../src/opentelemetry-span-factory.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kronos-ts/opentelemetry",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "OpenTelemetry extension for Kronos — tracing for commands and events.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -50,13 +50,13 @@
|
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"@kronos-ts/common": "0.1.1",
|
|
53
|
-
"@kronos-ts/app": "0.
|
|
54
|
-
"@kronos-ts/messaging": "0.
|
|
53
|
+
"@kronos-ts/app": "0.4.0",
|
|
54
|
+
"@kronos-ts/messaging": "0.6.0",
|
|
55
55
|
"@opentelemetry/api": "^1.9"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@kronos-ts/eventsourcing": "0.2.
|
|
59
|
-
"@kronos-ts/modelling": "0.2.
|
|
58
|
+
"@kronos-ts/eventsourcing": "0.2.2",
|
|
59
|
+
"@kronos-ts/modelling": "0.2.5",
|
|
60
60
|
"@opentelemetry/sdk-trace-base": "^1.30.0",
|
|
61
61
|
"@opentelemetry/sdk-trace-node": "^1.30.0",
|
|
62
62
|
"zod": "^4.3.6"
|
|
@@ -37,7 +37,7 @@ const metadataSetter: TextMapSetter<Record<string, unknown>> = {
|
|
|
37
37
|
// OpenTelemetry Span wrapper
|
|
38
38
|
// ---------------------------------------------------------------------------
|
|
39
39
|
|
|
40
|
-
function wrapOtelSpan(otelSpan: import("@opentelemetry/api").Span,
|
|
40
|
+
function wrapOtelSpan(otelSpan: import("@opentelemetry/api").Span, _parentContext: OtelContext): Span {
|
|
41
41
|
return {
|
|
42
42
|
start() {
|
|
43
43
|
// OTel spans are started at creation — nothing to do
|
|
@@ -52,6 +52,13 @@ function wrapOtelSpan(otelSpan: import("@opentelemetry/api").Span, parentContext
|
|
|
52
52
|
otelSpan.setStatus({ code: SpanStatusCode.ERROR, message: error.message })
|
|
53
53
|
otelSpan.end()
|
|
54
54
|
},
|
|
55
|
+
runActive<T>(fn: () => T): T {
|
|
56
|
+
// Make this span the active context for the duration of `fn`. With the
|
|
57
|
+
// AsyncLocalStorage context manager the span stays active across awaits in
|
|
58
|
+
// an async `fn`, so propagateContext / currentTraceContext and any child
|
|
59
|
+
// spans created during handling parent to it.
|
|
60
|
+
return context.with(trace.setSpan(context.active(), otelSpan), fn)
|
|
61
|
+
},
|
|
55
62
|
}
|
|
56
63
|
}
|
|
57
64
|
|
|
@@ -123,6 +130,21 @@ export function createOpenTelemetrySpanFactory(
|
|
|
123
130
|
return wrapOtelSpan(otelSpan, parentContext)
|
|
124
131
|
},
|
|
125
132
|
|
|
133
|
+
createLinkedHandlerSpan(operationName: string, parentMessage: Message): Span {
|
|
134
|
+
// New trace (root), linked to the parent message's span rather than
|
|
135
|
+
// parented to it — the originating trace may be long finished by the time
|
|
136
|
+
// an asynchronous processor handles the event.
|
|
137
|
+
const parentContext = extractContext(parentMessage)
|
|
138
|
+
const parentSpanContext = trace.getSpanContext(parentContext)
|
|
139
|
+
const otelSpan = tracer.startSpan(operationName, {
|
|
140
|
+
kind: SpanKind.CONSUMER,
|
|
141
|
+
root: true,
|
|
142
|
+
links: parentSpanContext ? [{ context: parentSpanContext }] : [],
|
|
143
|
+
})
|
|
144
|
+
addMessageAttributes(otelSpan, parentMessage)
|
|
145
|
+
return wrapOtelSpan(otelSpan, parentContext)
|
|
146
|
+
},
|
|
147
|
+
|
|
126
148
|
createDispatchSpan(operationName: string, parentMessage: Message): Span {
|
|
127
149
|
const parentContext = extractContext(parentMessage)
|
|
128
150
|
const otelSpan = tracer.startSpan(
|
|
@@ -155,6 +177,16 @@ export function createOpenTelemetrySpanFactory(
|
|
|
155
177
|
}
|
|
156
178
|
},
|
|
157
179
|
|
|
180
|
+
currentTraceContext(): Record<string, string> {
|
|
181
|
+
const carrier: Record<string, string> = {}
|
|
182
|
+
propagation.inject(
|
|
183
|
+
context.active(),
|
|
184
|
+
carrier,
|
|
185
|
+
metadataSetter as TextMapSetter<Record<string, string>>,
|
|
186
|
+
)
|
|
187
|
+
return carrier
|
|
188
|
+
},
|
|
189
|
+
|
|
158
190
|
registerSpanAttributeProvider(provider: SpanAttributesProvider) {
|
|
159
191
|
attributeProviders.push(provider)
|
|
160
192
|
},
|