@uoa/lambda-tracing 2.0.0-beta.6 → 2.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/UoaB3Propagator.ts +17 -1
- package/dist/UoaB3Propagator.d.ts +4 -1
- package/dist/UoaB3Propagator.js +14 -2
- package/dist/tracing.js +1 -1
- package/dist/zipkin/transform.d.ts +1 -1
- package/dist/zipkin/transform.js +3 -3
- package/package.json +1 -1
- package/tracing.ts +1 -1
- package/zipkin/transform.ts +4 -4
package/UoaB3Propagator.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Class extended from OpenTelemetry B3MultiPropagator so that we can
|
|
2
|
+
* Class extended from OpenTelemetry B3MultiPropagator so that we can:
|
|
3
|
+
* 1. Propagate & log the X-B3-Info header
|
|
4
|
+
* 2. Propagate the correct X-B3-ParentSpanId
|
|
3
5
|
*
|
|
4
6
|
* See {@link https://github.com/open-telemetry/opentelemetry-js/blob/main/packages/opentelemetry-propagator-b3/src/B3MultiPropagator.ts}
|
|
5
7
|
*/
|
|
@@ -33,6 +35,9 @@ export const B3_INFO_KEY = createContextKey(
|
|
|
33
35
|
export const B3_TRACE_ID_LENGTH_KEY = createContextKey(
|
|
34
36
|
'B3 TraceId Header Length'
|
|
35
37
|
);
|
|
38
|
+
export const B3_PARENT_SPAN_ID_KEY = createContextKey(
|
|
39
|
+
'B3 Parent Span Id'
|
|
40
|
+
);
|
|
36
41
|
|
|
37
42
|
const VALID_SAMPLED_VALUES = new Set([true, 'true', 'True', '1', 1]);
|
|
38
43
|
const VALID_UNSAMPLED_VALUES = new Set([false, 'false', 'False', '0', 0]);
|
|
@@ -74,6 +79,14 @@ function getSpanId(carrier: unknown, getter: TextMapGetter): string {
|
|
|
74
79
|
return '';
|
|
75
80
|
}
|
|
76
81
|
|
|
82
|
+
function getParentSpanId(carrier: unknown, getter: TextMapGetter): string {
|
|
83
|
+
const parentSpanId = getHeaderValue(carrier, getter, X_B3_PARENT_SPAN_ID);
|
|
84
|
+
if (typeof parentSpanId === 'string') {
|
|
85
|
+
return parentSpanId;
|
|
86
|
+
}
|
|
87
|
+
return '';
|
|
88
|
+
}
|
|
89
|
+
|
|
77
90
|
function getDebug(carrier: unknown, getter: TextMapGetter): string | undefined {
|
|
78
91
|
const debug = getHeaderValue(carrier, getter, X_B3_FLAGS);
|
|
79
92
|
return debug === '1' ? '1' : undefined;
|
|
@@ -147,6 +160,9 @@ export class UoaB3Propagator implements TextMapPropagator {
|
|
|
147
160
|
|
|
148
161
|
const traceId = getTraceId(carrier, getter);
|
|
149
162
|
const spanId = getSpanId(carrier, getter);
|
|
163
|
+
const parentSpanId = getParentSpanId(carrier, getter);
|
|
164
|
+
context = context.setValue(B3_PARENT_SPAN_ID_KEY, parentSpanId);
|
|
165
|
+
|
|
150
166
|
const traceFlags = getTraceFlags(carrier, getter) as TraceFlags;
|
|
151
167
|
const debug = getDebug(carrier, getter);
|
|
152
168
|
const info = getInfo(carrier, getter);
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Class extended from OpenTelemetry B3MultiPropagator so that we can
|
|
2
|
+
* Class extended from OpenTelemetry B3MultiPropagator so that we can:
|
|
3
|
+
* 1. Propagate & log the X-B3-Info header
|
|
4
|
+
* 2. Propagate the correct X-B3-ParentSpanId
|
|
3
5
|
*
|
|
4
6
|
* See {@link https://github.com/open-telemetry/opentelemetry-js/blob/main/packages/opentelemetry-propagator-b3/src/B3MultiPropagator.ts}
|
|
5
7
|
*/
|
|
@@ -13,6 +15,7 @@ export declare const X_B3_INFO = "x-b3-info";
|
|
|
13
15
|
export declare const B3_DEBUG_FLAG_KEY: symbol;
|
|
14
16
|
export declare const B3_INFO_KEY: symbol;
|
|
15
17
|
export declare const B3_TRACE_ID_LENGTH_KEY: symbol;
|
|
18
|
+
export declare const B3_PARENT_SPAN_ID_KEY: symbol;
|
|
16
19
|
export declare class UoaB3Propagator implements TextMapPropagator {
|
|
17
20
|
inject(context: Context, carrier: any, setter: TextMapSetter<any>): void;
|
|
18
21
|
extract(context: Context, carrier: any, getter: TextMapGetter<any>): Context;
|
package/dist/UoaB3Propagator.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UoaB3Propagator = exports.B3_TRACE_ID_LENGTH_KEY = exports.B3_INFO_KEY = exports.B3_DEBUG_FLAG_KEY = exports.X_B3_INFO = exports.X_B3_FLAGS = exports.X_B3_PARENT_SPAN_ID = exports.X_B3_SAMPLED = exports.X_B3_SPAN_ID = exports.X_B3_TRACE_ID = void 0;
|
|
3
|
+
exports.UoaB3Propagator = exports.B3_PARENT_SPAN_ID_KEY = exports.B3_TRACE_ID_LENGTH_KEY = exports.B3_INFO_KEY = exports.B3_DEBUG_FLAG_KEY = exports.X_B3_INFO = exports.X_B3_FLAGS = exports.X_B3_PARENT_SPAN_ID = exports.X_B3_SAMPLED = exports.X_B3_SPAN_ID = exports.X_B3_TRACE_ID = void 0;
|
|
4
4
|
/**
|
|
5
|
-
* Class extended from OpenTelemetry B3MultiPropagator so that we can
|
|
5
|
+
* Class extended from OpenTelemetry B3MultiPropagator so that we can:
|
|
6
|
+
* 1. Propagate & log the X-B3-Info header
|
|
7
|
+
* 2. Propagate the correct X-B3-ParentSpanId
|
|
6
8
|
*
|
|
7
9
|
* See {@link https://github.com/open-telemetry/opentelemetry-js/blob/main/packages/opentelemetry-propagator-b3/src/B3MultiPropagator.ts}
|
|
8
10
|
*/
|
|
@@ -19,6 +21,7 @@ exports.X_B3_INFO = 'x-b3-info';
|
|
|
19
21
|
exports.B3_DEBUG_FLAG_KEY = (0, api_1.createContextKey)('B3 Debug Flag');
|
|
20
22
|
exports.B3_INFO_KEY = (0, api_1.createContextKey)('B3 Info Header');
|
|
21
23
|
exports.B3_TRACE_ID_LENGTH_KEY = (0, api_1.createContextKey)('B3 TraceId Header Length');
|
|
24
|
+
exports.B3_PARENT_SPAN_ID_KEY = (0, api_1.createContextKey)('B3 Parent Span Id');
|
|
22
25
|
const VALID_SAMPLED_VALUES = new Set([true, 'true', 'True', '1', 1]);
|
|
23
26
|
const VALID_UNSAMPLED_VALUES = new Set([false, 'false', 'False', '0', 0]);
|
|
24
27
|
function parseHeader(header) {
|
|
@@ -54,6 +57,13 @@ function getSpanId(carrier, getter) {
|
|
|
54
57
|
}
|
|
55
58
|
return '';
|
|
56
59
|
}
|
|
60
|
+
function getParentSpanId(carrier, getter) {
|
|
61
|
+
const parentSpanId = getHeaderValue(carrier, getter, exports.X_B3_PARENT_SPAN_ID);
|
|
62
|
+
if (typeof parentSpanId === 'string') {
|
|
63
|
+
return parentSpanId;
|
|
64
|
+
}
|
|
65
|
+
return '';
|
|
66
|
+
}
|
|
57
67
|
function getDebug(carrier, getter) {
|
|
58
68
|
const debug = getHeaderValue(carrier, getter, exports.X_B3_FLAGS);
|
|
59
69
|
return debug === '1' ? '1' : undefined;
|
|
@@ -114,6 +124,8 @@ class UoaB3Propagator {
|
|
|
114
124
|
context = context.setValue(exports.B3_TRACE_ID_LENGTH_KEY, traceIdLength);
|
|
115
125
|
const traceId = getTraceId(carrier, getter);
|
|
116
126
|
const spanId = getSpanId(carrier, getter);
|
|
127
|
+
const parentSpanId = getParentSpanId(carrier, getter);
|
|
128
|
+
context = context.setValue(exports.B3_PARENT_SPAN_ID_KEY, parentSpanId);
|
|
117
129
|
const traceFlags = getTraceFlags(carrier, getter);
|
|
118
130
|
const debug = getDebug(carrier, getter);
|
|
119
131
|
const info = getInfo(carrier, getter);
|
package/dist/tracing.js
CHANGED
|
@@ -12,7 +12,7 @@ const provider = new sdk_trace_node_1.NodeTracerProvider({ sampler: new sdk_trac
|
|
|
12
12
|
let infoHeader;
|
|
13
13
|
function initializeTracing(serviceName) {
|
|
14
14
|
const options = {
|
|
15
|
-
url: process.env.zipkinUrl ? process.env.zipkinUrl : 'http://zipkin-uoa-its-nonprod-
|
|
15
|
+
url: process.env.zipkinUrl ? process.env.zipkinUrl : 'http://internal-zipkin-uoa-its-nonprod-internal-1407434909.ap-southeast-2.elb.amazonaws.com:443/api/v2/spans',
|
|
16
16
|
serviceName: serviceName
|
|
17
17
|
};
|
|
18
18
|
provider.addSpanProcessor(new sdk_trace_node_1.BatchSpanProcessor(new zipkin_1.ZipkinExporter(options)));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copied from https://github.com/open-telemetry/opentelemetry-js/blob/main/packages/opentelemetry-exporter-zipkin/src/transform.ts
|
|
3
3
|
*
|
|
4
|
-
* Modified to handle our traceId length being either 16 or 32 characters
|
|
4
|
+
* Modified to handle our traceId length being either 16 or 32 characters, and to send the correct Parent Span ID
|
|
5
5
|
*/
|
|
6
6
|
import * as api from '@opentelemetry/api';
|
|
7
7
|
import { ReadableSpan, TimedEvent } from '@opentelemetry/sdk-trace-base';
|
package/dist/zipkin/transform.js
CHANGED
|
@@ -42,7 +42,7 @@ exports._toZipkinAnnotations = exports._toZipkinTags = exports.toZipkinSpan = ex
|
|
|
42
42
|
/**
|
|
43
43
|
* Copied from https://github.com/open-telemetry/opentelemetry-js/blob/main/packages/opentelemetry-exporter-zipkin/src/transform.ts
|
|
44
44
|
*
|
|
45
|
-
* Modified to handle our traceId length being either 16 or 32 characters
|
|
45
|
+
* Modified to handle our traceId length being either 16 or 32 characters, and to send the correct Parent Span ID
|
|
46
46
|
*/
|
|
47
47
|
const api = __importStar(require("@opentelemetry/api"));
|
|
48
48
|
const core_1 = require("@opentelemetry/core");
|
|
@@ -55,7 +55,6 @@ const ZIPKIN_SPAN_KIND_MAPPING = {
|
|
|
55
55
|
[api.SpanKind.CONSUMER]: zipkinTypes.SpanKind.CONSUMER,
|
|
56
56
|
[api.SpanKind.PRODUCER]: zipkinTypes.SpanKind.PRODUCER,
|
|
57
57
|
// When absent, the span is local.
|
|
58
|
-
//@ts-ignore
|
|
59
58
|
[api.SpanKind.INTERNAL]: undefined,
|
|
60
59
|
};
|
|
61
60
|
exports.defaultStatusCodeTagName = 'otel.status_code';
|
|
@@ -67,9 +66,10 @@ exports.defaultStatusErrorTagName = 'error';
|
|
|
67
66
|
function toZipkinSpan(span, serviceName, statusCodeTagName, statusErrorTagName) {
|
|
68
67
|
const traceIdLength = api_1.context.active().getValue(UoaB3Propagator_1.B3_TRACE_ID_LENGTH_KEY);
|
|
69
68
|
let traceId = span.spanContext().traceId.slice(span.spanContext().traceId.length - traceIdLength);
|
|
69
|
+
const parentSpanId = api_1.context.active().getValue(UoaB3Propagator_1.B3_PARENT_SPAN_ID_KEY);
|
|
70
70
|
const zipkinSpan = {
|
|
71
71
|
traceId: traceId,
|
|
72
|
-
parentId: span.parentSpanId,
|
|
72
|
+
parentId: parentSpanId || span.parentSpanId,
|
|
73
73
|
name: span.name,
|
|
74
74
|
id: span.spanContext().spanId,
|
|
75
75
|
kind: ZIPKIN_SPAN_KIND_MAPPING[span.kind],
|
package/package.json
CHANGED
package/tracing.ts
CHANGED
|
@@ -11,7 +11,7 @@ let infoHeader: string | undefined;
|
|
|
11
11
|
|
|
12
12
|
export function initializeTracing(serviceName: string) {
|
|
13
13
|
const options = {
|
|
14
|
-
url: process.env.zipkinUrl ? process.env.zipkinUrl : 'http://zipkin-uoa-its-nonprod-
|
|
14
|
+
url: process.env.zipkinUrl ? process.env.zipkinUrl : 'http://internal-zipkin-uoa-its-nonprod-internal-1407434909.ap-southeast-2.elb.amazonaws.com:443/api/v2/spans',
|
|
15
15
|
serviceName: serviceName
|
|
16
16
|
}
|
|
17
17
|
provider.addSpanProcessor(new BatchSpanProcessor(new ZipkinExporter(options)));
|
package/zipkin/transform.ts
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
/**
|
|
18
18
|
* Copied from https://github.com/open-telemetry/opentelemetry-js/blob/main/packages/opentelemetry-exporter-zipkin/src/transform.ts
|
|
19
19
|
*
|
|
20
|
-
* Modified to handle our traceId length being either 16 or 32 characters
|
|
20
|
+
* Modified to handle our traceId length being either 16 or 32 characters, and to send the correct Parent Span ID
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
23
|
import * as api from '@opentelemetry/api';
|
|
@@ -26,7 +26,7 @@ import { hrTimeToMicroseconds } from '@opentelemetry/core';
|
|
|
26
26
|
import * as zipkinTypes from './types';
|
|
27
27
|
import { Resource } from '@opentelemetry/resources';
|
|
28
28
|
import {context} from "@opentelemetry/api";
|
|
29
|
-
import {B3_TRACE_ID_LENGTH_KEY} from "../UoaB3Propagator";
|
|
29
|
+
import {B3_PARENT_SPAN_ID_KEY, B3_TRACE_ID_LENGTH_KEY} from "../UoaB3Propagator";
|
|
30
30
|
|
|
31
31
|
const ZIPKIN_SPAN_KIND_MAPPING = {
|
|
32
32
|
[api.SpanKind.CLIENT]: zipkinTypes.SpanKind.CLIENT,
|
|
@@ -34,7 +34,6 @@ const ZIPKIN_SPAN_KIND_MAPPING = {
|
|
|
34
34
|
[api.SpanKind.CONSUMER]: zipkinTypes.SpanKind.CONSUMER,
|
|
35
35
|
[api.SpanKind.PRODUCER]: zipkinTypes.SpanKind.PRODUCER,
|
|
36
36
|
// When absent, the span is local.
|
|
37
|
-
//@ts-ignore
|
|
38
37
|
[api.SpanKind.INTERNAL]: undefined,
|
|
39
38
|
};
|
|
40
39
|
|
|
@@ -53,9 +52,10 @@ export function toZipkinSpan(
|
|
|
53
52
|
): zipkinTypes.Span {
|
|
54
53
|
const traceIdLength: number = <number>context.active().getValue(B3_TRACE_ID_LENGTH_KEY);
|
|
55
54
|
let traceId = span.spanContext().traceId.slice(span.spanContext().traceId.length - traceIdLength);
|
|
55
|
+
const parentSpanId = <string>context.active().getValue(B3_PARENT_SPAN_ID_KEY);
|
|
56
56
|
const zipkinSpan: zipkinTypes.Span = {
|
|
57
57
|
traceId: traceId,
|
|
58
|
-
parentId: span.parentSpanId,
|
|
58
|
+
parentId: parentSpanId || span.parentSpanId,
|
|
59
59
|
name: span.name,
|
|
60
60
|
id: span.spanContext().spanId,
|
|
61
61
|
kind: ZIPKIN_SPAN_KIND_MAPPING[span.kind],
|