@tramvai/module-opentelemetry 5.50.0 → 6.59.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/lib/browser.js +40 -3
- package/lib/instrumentation/childApp/configResolution.d.ts +9 -0
- package/lib/instrumentation/childApp/configResolution.es.js +31 -0
- package/lib/instrumentation/childApp/configResolution.js +35 -0
- package/lib/instrumentation/childApp/loader.d.ts +9 -0
- package/lib/instrumentation/childApp/loader.es.js +39 -0
- package/lib/instrumentation/childApp/loader.js +43 -0
- package/lib/instrumentation/childApp/preload.d.ts +9 -0
- package/lib/instrumentation/childApp/preload.es.js +44 -0
- package/lib/instrumentation/childApp/preload.js +48 -0
- package/lib/instrumentation/commandLineRunner.es.js +1 -0
- package/lib/instrumentation/commandLineRunner.js +1 -0
- package/lib/instrumentation/httpClient.es.js +6 -9
- package/lib/instrumentation/httpClient.js +5 -8
- package/lib/instrumentation/router.es.js +2 -0
- package/lib/instrumentation/router.js +2 -0
- package/lib/server.es.js +34 -7
- package/lib/server.js +28 -0
- package/lib/tokens.browser.js +2 -1
- package/lib/tokens.d.ts +18 -0
- package/lib/tokens.es.js +2 -1
- package/lib/tokens.js +2 -0
- package/lib/tracer/get-traceparent-header.d.ts +3 -0
- package/lib/tracer/get-traceparent-header.es.js +3 -0
- package/lib/tracer/get-traceparent-header.js +7 -0
- package/lib/tracer/tracer.d.ts +9 -2
- package/lib/tracer/tracer.es.js +13 -1
- package/lib/tracer/tracer.js +12 -0
- package/package.json +14 -12
package/lib/browser.js
CHANGED
|
@@ -1,13 +1,50 @@
|
|
|
1
1
|
import { __decorate } from 'tslib';
|
|
2
|
-
import { Module } from '@tramvai/core';
|
|
3
|
-
|
|
2
|
+
import { Module, provide } from '@tramvai/core';
|
|
3
|
+
import once from '@tinkoff/utils/function/once';
|
|
4
|
+
import { DEFAULT_HTTP_CLIENT_INTERCEPTORS } from '@tramvai/tokens-http-client';
|
|
5
|
+
import { OPENTELEMETRY_HTTP_CLIENT_BROWSER_HEADERS_INCLUDE_TOKEN } from './tokens.browser.js';
|
|
6
|
+
export { OPENTELEMETRY_HTTP_CLIENT_BROWSER_HEADERS_INCLUDE_TOKEN, OPENTELEMETRY_PROVIDER_CONFIG_TOKEN, OPENTELEMETRY_PROVIDER_RESOURCE_ATTRIBUTES_TOKEN, OPENTELEMETRY_PROVIDER_RESOURCE_TOKEN, OPENTELEMETRY_PROVIDER_SPAN_PROCESSOR_TOKEN, OPENTELEMETRY_PROVIDER_TOKEN, OPENTELEMETRY_TRACER_TOKEN } from './tokens.browser.js';
|
|
4
7
|
|
|
8
|
+
const extractTraceparentHeader = once(() => {
|
|
9
|
+
if (typeof window !== 'undefined') {
|
|
10
|
+
const traceparentMeta = Array.from(document.getElementsByTagName('meta')).filter((element) => element.name === 'traceparent');
|
|
11
|
+
if (traceparentMeta.length !== 1) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
return traceparentMeta[0].content;
|
|
15
|
+
}
|
|
16
|
+
return undefined;
|
|
17
|
+
});
|
|
5
18
|
let OpenTelemetryModule = class OpenTelemetryModule {
|
|
6
19
|
};
|
|
7
20
|
OpenTelemetryModule = __decorate([
|
|
8
21
|
Module({
|
|
9
22
|
imports: [],
|
|
10
|
-
providers: [
|
|
23
|
+
providers: [
|
|
24
|
+
provide({
|
|
25
|
+
provide: DEFAULT_HTTP_CLIENT_INTERCEPTORS,
|
|
26
|
+
useFactory: ({ headerInclude }) => (req, next) => {
|
|
27
|
+
const url = req.url ?? (req.baseUrl ? `${req.baseUrl}${req.path}` : (req.path ?? ''));
|
|
28
|
+
if (!headerInclude(url)) {
|
|
29
|
+
return next(req);
|
|
30
|
+
}
|
|
31
|
+
return next({
|
|
32
|
+
...req,
|
|
33
|
+
headers: {
|
|
34
|
+
traceparent: extractTraceparentHeader(),
|
|
35
|
+
...req.headers,
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
},
|
|
39
|
+
deps: {
|
|
40
|
+
headerInclude: OPENTELEMETRY_HTTP_CLIENT_BROWSER_HEADERS_INCLUDE_TOKEN,
|
|
41
|
+
},
|
|
42
|
+
}),
|
|
43
|
+
provide({
|
|
44
|
+
provide: OPENTELEMETRY_HTTP_CLIENT_BROWSER_HEADERS_INCLUDE_TOKEN,
|
|
45
|
+
useValue: () => true,
|
|
46
|
+
}),
|
|
47
|
+
],
|
|
11
48
|
})
|
|
12
49
|
], OpenTelemetryModule);
|
|
13
50
|
// todo declareModule!
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type ChildAppConfigResolutionPlugin } from '@tramvai/tokens-child-app';
|
|
2
|
+
export declare const providers: import("@tinkoff/dippy").Provider<{
|
|
3
|
+
tracer: import("../../tokens").TramvaiTracer & {
|
|
4
|
+
__type?: "base token" | undefined;
|
|
5
|
+
};
|
|
6
|
+
}, ChildAppConfigResolutionPlugin & {
|
|
7
|
+
__type?: "multi token" | undefined;
|
|
8
|
+
}>[];
|
|
9
|
+
//# sourceMappingURL=configResolution.d.ts.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { provide } from '@tinkoff/dippy';
|
|
2
|
+
import { SpanKind } from '@opentelemetry/api';
|
|
3
|
+
import { CHILD_APP_CONFIG_RESOLUTION_PLUGIN } from '@tramvai/tokens-child-app';
|
|
4
|
+
import { OPENTELEMETRY_TRACER_TOKEN } from '../../tokens.es.js';
|
|
5
|
+
|
|
6
|
+
class ChildAppConfigResolutionOpenTelemetryPlugin {
|
|
7
|
+
tracer;
|
|
8
|
+
constructor({ tracer }) {
|
|
9
|
+
this.tracer = tracer;
|
|
10
|
+
}
|
|
11
|
+
apply(hooks) {
|
|
12
|
+
hooks.fetchConfig.wrap(async (_, payload, next) => {
|
|
13
|
+
return this.tracer.trace('child app fetch config', { kind: SpanKind.SERVER }, async (span) => {
|
|
14
|
+
span.setAttribute('tramvai.scope', 'child_app.fetch_config');
|
|
15
|
+
const configs = await next(payload);
|
|
16
|
+
return configs;
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const providers = [
|
|
22
|
+
provide({
|
|
23
|
+
provide: CHILD_APP_CONFIG_RESOLUTION_PLUGIN,
|
|
24
|
+
useClass: ChildAppConfigResolutionOpenTelemetryPlugin,
|
|
25
|
+
deps: {
|
|
26
|
+
tracer: OPENTELEMETRY_TRACER_TOKEN,
|
|
27
|
+
},
|
|
28
|
+
}),
|
|
29
|
+
];
|
|
30
|
+
|
|
31
|
+
export { providers };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var dippy = require('@tinkoff/dippy');
|
|
6
|
+
var api = require('@opentelemetry/api');
|
|
7
|
+
var tokensChildApp = require('@tramvai/tokens-child-app');
|
|
8
|
+
var tokens = require('../../tokens.js');
|
|
9
|
+
|
|
10
|
+
class ChildAppConfigResolutionOpenTelemetryPlugin {
|
|
11
|
+
tracer;
|
|
12
|
+
constructor({ tracer }) {
|
|
13
|
+
this.tracer = tracer;
|
|
14
|
+
}
|
|
15
|
+
apply(hooks) {
|
|
16
|
+
hooks.fetchConfig.wrap(async (_, payload, next) => {
|
|
17
|
+
return this.tracer.trace('child app fetch config', { kind: api.SpanKind.SERVER }, async (span) => {
|
|
18
|
+
span.setAttribute('tramvai.scope', 'child_app.fetch_config');
|
|
19
|
+
const configs = await next(payload);
|
|
20
|
+
return configs;
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const providers = [
|
|
26
|
+
dippy.provide({
|
|
27
|
+
provide: tokensChildApp.CHILD_APP_CONFIG_RESOLUTION_PLUGIN,
|
|
28
|
+
useClass: ChildAppConfigResolutionOpenTelemetryPlugin,
|
|
29
|
+
deps: {
|
|
30
|
+
tracer: tokens.OPENTELEMETRY_TRACER_TOKEN,
|
|
31
|
+
},
|
|
32
|
+
}),
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
exports.providers = providers;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type ChildAppLoaderPlugin } from '@tramvai/tokens-child-app';
|
|
2
|
+
export declare const providers: import("@tinkoff/dippy").Provider<{
|
|
3
|
+
tracer: import("../../tokens").TramvaiTracer & {
|
|
4
|
+
__type?: "base token" | undefined;
|
|
5
|
+
};
|
|
6
|
+
}, ChildAppLoaderPlugin & {
|
|
7
|
+
__type?: "multi token" | undefined;
|
|
8
|
+
}>[];
|
|
9
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { provide, Scope } from '@tinkoff/dippy';
|
|
2
|
+
import { SpanKind } from '@opentelemetry/api';
|
|
3
|
+
import { CHILD_APP_LOADER_PLUGIN } from '@tramvai/tokens-child-app';
|
|
4
|
+
import { OPENTELEMETRY_TRACER_TOKEN } from '../../tokens.es.js';
|
|
5
|
+
|
|
6
|
+
class ChildAppLoaderOpenTelemetryPlugin {
|
|
7
|
+
tracer;
|
|
8
|
+
constructor({ tracer }) {
|
|
9
|
+
this.tracer = tracer;
|
|
10
|
+
}
|
|
11
|
+
apply(hooks) {
|
|
12
|
+
hooks.loadModule.wrap(async (_, payload, next) => {
|
|
13
|
+
return this.tracer.trace('child app load', { kind: SpanKind.SERVER }, async (span) => {
|
|
14
|
+
span.setAttribute('tramvai.scope', 'child_app');
|
|
15
|
+
span.setAttribute('tramvai.child_app.name', payload.config.name);
|
|
16
|
+
span.setAttribute('tramvai.child_app.version', payload.config.version);
|
|
17
|
+
span.setAttribute('tramvai.child_app.tag', payload.config.tag);
|
|
18
|
+
span.setAttribute('tramvai.child_app.client.baseUrl', payload.config.client.baseUrl);
|
|
19
|
+
span.setAttribute('tramvai.child_app.client.entry', payload.config.client.entry);
|
|
20
|
+
span.setAttribute('tramvai.child_app.client.stats', payload.config.client.stats);
|
|
21
|
+
span.setAttribute('tramvai.child_app.client.statsLoadable', payload.config.client.statsLoadable);
|
|
22
|
+
const childApp = await next(payload);
|
|
23
|
+
return childApp;
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const providers = [
|
|
29
|
+
provide({
|
|
30
|
+
scope: Scope.SINGLETON,
|
|
31
|
+
provide: CHILD_APP_LOADER_PLUGIN,
|
|
32
|
+
useClass: ChildAppLoaderOpenTelemetryPlugin,
|
|
33
|
+
deps: {
|
|
34
|
+
tracer: OPENTELEMETRY_TRACER_TOKEN,
|
|
35
|
+
},
|
|
36
|
+
}),
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
export { providers };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var dippy = require('@tinkoff/dippy');
|
|
6
|
+
var api = require('@opentelemetry/api');
|
|
7
|
+
var tokensChildApp = require('@tramvai/tokens-child-app');
|
|
8
|
+
var tokens = require('../../tokens.js');
|
|
9
|
+
|
|
10
|
+
class ChildAppLoaderOpenTelemetryPlugin {
|
|
11
|
+
tracer;
|
|
12
|
+
constructor({ tracer }) {
|
|
13
|
+
this.tracer = tracer;
|
|
14
|
+
}
|
|
15
|
+
apply(hooks) {
|
|
16
|
+
hooks.loadModule.wrap(async (_, payload, next) => {
|
|
17
|
+
return this.tracer.trace('child app load', { kind: api.SpanKind.SERVER }, async (span) => {
|
|
18
|
+
span.setAttribute('tramvai.scope', 'child_app');
|
|
19
|
+
span.setAttribute('tramvai.child_app.name', payload.config.name);
|
|
20
|
+
span.setAttribute('tramvai.child_app.version', payload.config.version);
|
|
21
|
+
span.setAttribute('tramvai.child_app.tag', payload.config.tag);
|
|
22
|
+
span.setAttribute('tramvai.child_app.client.baseUrl', payload.config.client.baseUrl);
|
|
23
|
+
span.setAttribute('tramvai.child_app.client.entry', payload.config.client.entry);
|
|
24
|
+
span.setAttribute('tramvai.child_app.client.stats', payload.config.client.stats);
|
|
25
|
+
span.setAttribute('tramvai.child_app.client.statsLoadable', payload.config.client.statsLoadable);
|
|
26
|
+
const childApp = await next(payload);
|
|
27
|
+
return childApp;
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const providers = [
|
|
33
|
+
dippy.provide({
|
|
34
|
+
scope: dippy.Scope.SINGLETON,
|
|
35
|
+
provide: tokensChildApp.CHILD_APP_LOADER_PLUGIN,
|
|
36
|
+
useClass: ChildAppLoaderOpenTelemetryPlugin,
|
|
37
|
+
deps: {
|
|
38
|
+
tracer: tokens.OPENTELEMETRY_TRACER_TOKEN,
|
|
39
|
+
},
|
|
40
|
+
}),
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
exports.providers = providers;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type ChildAppPreloadManagerPlugin } from '@tramvai/tokens-child-app';
|
|
2
|
+
export declare const providers: import("@tinkoff/dippy").Provider<{
|
|
3
|
+
tracer: import("../../tokens").TramvaiTracer & {
|
|
4
|
+
__type?: "base token" | undefined;
|
|
5
|
+
};
|
|
6
|
+
}, ChildAppPreloadManagerPlugin & {
|
|
7
|
+
__type?: "multi token" | undefined;
|
|
8
|
+
}>[];
|
|
9
|
+
//# sourceMappingURL=preload.d.ts.map
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { provide } from '@tinkoff/dippy';
|
|
2
|
+
import { SpanKind } from '@opentelemetry/api';
|
|
3
|
+
import { CHILD_APP_PRELOAD_MANAGER_PLUGIN } from '@tramvai/tokens-child-app';
|
|
4
|
+
import { OPENTELEMETRY_TRACER_TOKEN } from '../../tokens.es.js';
|
|
5
|
+
|
|
6
|
+
class ChildAppPreloadManagerOpenTelemetryPlugin {
|
|
7
|
+
tracer;
|
|
8
|
+
constructor({ tracer }) {
|
|
9
|
+
this.tracer = tracer;
|
|
10
|
+
}
|
|
11
|
+
apply(hooks) {
|
|
12
|
+
hooks.preloadChildApp.wrap(async (_, payload, next) => {
|
|
13
|
+
return this.tracer.trace('child app preload', { kind: SpanKind.SERVER }, async (span) => {
|
|
14
|
+
span.setAttribute('tramvai.scope', 'child_app');
|
|
15
|
+
span.setAttribute('tramvai.child_app.name', payload.config.name);
|
|
16
|
+
span.setAttribute('tramvai.child_app.version', payload.config.version);
|
|
17
|
+
span.setAttribute('tramvai.child_app.tag', payload.config.tag);
|
|
18
|
+
await next(payload);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
hooks.runChildAppCommandLine.wrap(async (_, payload, next) => {
|
|
22
|
+
return this.tracer.trace('child app run command line', { kind: SpanKind.SERVER }, async (span) => {
|
|
23
|
+
span.setAttribute('tramvai.scope', 'child_app');
|
|
24
|
+
span.setAttribute('tramvai.child_app.name', payload.config.name);
|
|
25
|
+
span.setAttribute('tramvai.child_app.version', payload.config.version);
|
|
26
|
+
span.setAttribute('tramvai.child_app.tag', payload.config.tag);
|
|
27
|
+
span.setAttribute('tramvai.child_app.line', payload.line);
|
|
28
|
+
span.setAttribute('tramvai.child_app.status', payload.status);
|
|
29
|
+
await next(payload);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const providers = [
|
|
35
|
+
provide({
|
|
36
|
+
provide: CHILD_APP_PRELOAD_MANAGER_PLUGIN,
|
|
37
|
+
useClass: ChildAppPreloadManagerOpenTelemetryPlugin,
|
|
38
|
+
deps: {
|
|
39
|
+
tracer: OPENTELEMETRY_TRACER_TOKEN,
|
|
40
|
+
},
|
|
41
|
+
}),
|
|
42
|
+
];
|
|
43
|
+
|
|
44
|
+
export { providers };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var dippy = require('@tinkoff/dippy');
|
|
6
|
+
var api = require('@opentelemetry/api');
|
|
7
|
+
var tokensChildApp = require('@tramvai/tokens-child-app');
|
|
8
|
+
var tokens = require('../../tokens.js');
|
|
9
|
+
|
|
10
|
+
class ChildAppPreloadManagerOpenTelemetryPlugin {
|
|
11
|
+
tracer;
|
|
12
|
+
constructor({ tracer }) {
|
|
13
|
+
this.tracer = tracer;
|
|
14
|
+
}
|
|
15
|
+
apply(hooks) {
|
|
16
|
+
hooks.preloadChildApp.wrap(async (_, payload, next) => {
|
|
17
|
+
return this.tracer.trace('child app preload', { kind: api.SpanKind.SERVER }, async (span) => {
|
|
18
|
+
span.setAttribute('tramvai.scope', 'child_app');
|
|
19
|
+
span.setAttribute('tramvai.child_app.name', payload.config.name);
|
|
20
|
+
span.setAttribute('tramvai.child_app.version', payload.config.version);
|
|
21
|
+
span.setAttribute('tramvai.child_app.tag', payload.config.tag);
|
|
22
|
+
await next(payload);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
hooks.runChildAppCommandLine.wrap(async (_, payload, next) => {
|
|
26
|
+
return this.tracer.trace('child app run command line', { kind: api.SpanKind.SERVER }, async (span) => {
|
|
27
|
+
span.setAttribute('tramvai.scope', 'child_app');
|
|
28
|
+
span.setAttribute('tramvai.child_app.name', payload.config.name);
|
|
29
|
+
span.setAttribute('tramvai.child_app.version', payload.config.version);
|
|
30
|
+
span.setAttribute('tramvai.child_app.tag', payload.config.tag);
|
|
31
|
+
span.setAttribute('tramvai.child_app.line', payload.line);
|
|
32
|
+
span.setAttribute('tramvai.child_app.status', payload.status);
|
|
33
|
+
await next(payload);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const providers = [
|
|
39
|
+
dippy.provide({
|
|
40
|
+
provide: tokensChildApp.CHILD_APP_PRELOAD_MANAGER_PLUGIN,
|
|
41
|
+
useClass: ChildAppPreloadManagerOpenTelemetryPlugin,
|
|
42
|
+
deps: {
|
|
43
|
+
tracer: tokens.OPENTELEMETRY_TRACER_TOKEN,
|
|
44
|
+
},
|
|
45
|
+
}),
|
|
46
|
+
];
|
|
47
|
+
|
|
48
|
+
exports.providers = providers;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { provide } from '@tramvai/core';
|
|
2
2
|
import { DEFAULT_HTTP_CLIENT_INTERCEPTORS } from '@tramvai/tokens-http-client';
|
|
3
3
|
import { METRICS_SERVICES_REGISTRY_TOKEN } from '@tramvai/tokens-metrics';
|
|
4
|
-
import {
|
|
4
|
+
import { SpanKind } from '@opentelemetry/api';
|
|
5
5
|
import { ATTR_HTTP_REQUEST_METHOD, ATTR_SERVER_ADDRESS, ATTR_URL_PATH, ATTR_URL_QUERY, ATTR_URL_SCHEME, ATTR_URL_FULL, ATTR_HTTP_RESPONSE_STATUS_CODE } from '@opentelemetry/semantic-conventions';
|
|
6
6
|
import { OPENTELEMETRY_TRACER_TOKEN } from '../tokens.es.js';
|
|
7
7
|
|
|
@@ -16,21 +16,18 @@ const providers = [
|
|
|
16
16
|
const parsedUrl = new URL(request.query ? `${url}?${new URLSearchParams(request.query).toString()}` : url);
|
|
17
17
|
const serviceName = metricsServicesRegistry.getServiceName(url, request) ?? 'unknown';
|
|
18
18
|
const method = request.method ?? 'GET';
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const output = {};
|
|
22
|
-
propagation.inject(context.active(), output);
|
|
23
|
-
if (output.traceparent) {
|
|
19
|
+
const { traceparent, tracestate } = tracer.propagateContext();
|
|
20
|
+
if (traceparent !== undefined) {
|
|
24
21
|
if (!request.headers) {
|
|
25
22
|
request.headers = {};
|
|
26
23
|
}
|
|
27
|
-
request.headers.traceparent =
|
|
24
|
+
request.headers.traceparent = traceparent;
|
|
28
25
|
}
|
|
29
|
-
if (
|
|
26
|
+
if (tracestate !== undefined) {
|
|
30
27
|
if (!request.headers) {
|
|
31
28
|
request.headers = {};
|
|
32
29
|
}
|
|
33
|
-
request.headers.tracestate =
|
|
30
|
+
request.headers.tracestate = tracestate;
|
|
34
31
|
}
|
|
35
32
|
// https://github.com/open-telemetry/semantic-conventions/blob/main/docs/http/http-spans.md#http-client
|
|
36
33
|
return tracer.trace(`${method} ${serviceName}`, { kind: SpanKind.CLIENT }, (span) => {
|
|
@@ -20,21 +20,18 @@ const providers = [
|
|
|
20
20
|
const parsedUrl = new URL(request.query ? `${url}?${new URLSearchParams(request.query).toString()}` : url);
|
|
21
21
|
const serviceName = metricsServicesRegistry.getServiceName(url, request) ?? 'unknown';
|
|
22
22
|
const method = request.method ?? 'GET';
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const output = {};
|
|
26
|
-
api.propagation.inject(api.context.active(), output);
|
|
27
|
-
if (output.traceparent) {
|
|
23
|
+
const { traceparent, tracestate } = tracer.propagateContext();
|
|
24
|
+
if (traceparent !== undefined) {
|
|
28
25
|
if (!request.headers) {
|
|
29
26
|
request.headers = {};
|
|
30
27
|
}
|
|
31
|
-
request.headers.traceparent =
|
|
28
|
+
request.headers.traceparent = traceparent;
|
|
32
29
|
}
|
|
33
|
-
if (
|
|
30
|
+
if (tracestate !== undefined) {
|
|
34
31
|
if (!request.headers) {
|
|
35
32
|
request.headers = {};
|
|
36
33
|
}
|
|
37
|
-
request.headers.tracestate =
|
|
34
|
+
request.headers.tracestate = tracestate;
|
|
38
35
|
}
|
|
39
36
|
// https://github.com/open-telemetry/semantic-conventions/blob/main/docs/http/http-spans.md#http-client
|
|
40
37
|
return tracer.trace(`${method} ${serviceName}`, { kind: api.SpanKind.CLIENT }, (span) => {
|
|
@@ -15,6 +15,8 @@ function skipError(error) {
|
|
|
15
15
|
return errors.isRedirectFoundError(error) || errors.isNotFoundError(error);
|
|
16
16
|
}
|
|
17
17
|
class OpentelemetryRouterPlugin {
|
|
18
|
+
tracer;
|
|
19
|
+
request;
|
|
18
20
|
constructor({ tracer, request }) {
|
|
19
21
|
this.tracer = tracer;
|
|
20
22
|
this.request = request;
|
package/lib/server.es.js
CHANGED
|
@@ -4,14 +4,19 @@ import { NodeTracerProvider, SimpleSpanProcessor, ConsoleSpanExporter } from '@o
|
|
|
4
4
|
import { Resource } from '@opentelemetry/resources';
|
|
5
5
|
import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';
|
|
6
6
|
import { LOGGER_TOKEN, ENV_MANAGER_TOKEN } from '@tramvai/tokens-common';
|
|
7
|
-
import {
|
|
8
|
-
|
|
7
|
+
import { ResourceSlot, ResourceType, RESOURCES_REGISTRY } from '@tramvai/tokens-render';
|
|
8
|
+
import { OPENTELEMETRY_PROVIDER_TOKEN, OPENTELEMETRY_TRACER_TOKEN, OPENTELEMETRY_PROVIDER_CONFIG_TOKEN, OPENTELEMETRY_PROVIDER_RESOURCE_TOKEN, OPENTELEMETRY_PROVIDER_SPAN_PROCESSOR_TOKEN, OPENTELEMETRY_PROVIDER_RESOURCE_ATTRIBUTES_TOKEN } from './tokens.es.js';
|
|
9
|
+
export { OPENTELEMETRY_HTTP_CLIENT_BROWSER_HEADERS_INCLUDE_TOKEN, OPENTELEMETRY_PROVIDER_CONFIG_TOKEN, OPENTELEMETRY_PROVIDER_RESOURCE_ATTRIBUTES_TOKEN, OPENTELEMETRY_PROVIDER_RESOURCE_TOKEN, OPENTELEMETRY_PROVIDER_SPAN_PROCESSOR_TOKEN, OPENTELEMETRY_PROVIDER_TOKEN, OPENTELEMETRY_TRACER_TOKEN } from './tokens.es.js';
|
|
9
10
|
import { TramvaiTracerImpl } from './tracer/tracer.es.js';
|
|
10
|
-
import { providers } from './instrumentation/server.es.js';
|
|
11
|
-
import { providers as providers$
|
|
12
|
-
import { providers as providers$
|
|
13
|
-
import { providers as providers$
|
|
14
|
-
import { providers as providers$
|
|
11
|
+
import { providers as providers$3 } from './instrumentation/server.es.js';
|
|
12
|
+
import { providers as providers$4 } from './instrumentation/httpClient.es.js';
|
|
13
|
+
import { providers as providers$5 } from './instrumentation/logs.es.js';
|
|
14
|
+
import { providers as providers$6 } from './instrumentation/commandLineRunner.es.js';
|
|
15
|
+
import { providers as providers$7 } from './instrumentation/router.es.js';
|
|
16
|
+
import { providers } from './instrumentation/childApp/configResolution.es.js';
|
|
17
|
+
import { providers as providers$1 } from './instrumentation/childApp/loader.es.js';
|
|
18
|
+
import { providers as providers$2 } from './instrumentation/childApp/preload.es.js';
|
|
19
|
+
import { getTraceparentHeader } from './tracer/get-traceparent-header.es.js';
|
|
15
20
|
|
|
16
21
|
let OpenTelemetryModule = class OpenTelemetryModule {
|
|
17
22
|
};
|
|
@@ -24,6 +29,9 @@ OpenTelemetryModule = __decorate([
|
|
|
24
29
|
...providers$2,
|
|
25
30
|
...providers$3,
|
|
26
31
|
...providers$4,
|
|
32
|
+
...providers$5,
|
|
33
|
+
...providers$6,
|
|
34
|
+
...providers$7,
|
|
27
35
|
provide({
|
|
28
36
|
provide: commandLineListTokens.init,
|
|
29
37
|
useFactory: ({ provider }) => {
|
|
@@ -53,6 +61,25 @@ OpenTelemetryModule = __decorate([
|
|
|
53
61
|
logger: LOGGER_TOKEN,
|
|
54
62
|
},
|
|
55
63
|
}),
|
|
64
|
+
provide({
|
|
65
|
+
provide: commandLineListTokens.customerStart,
|
|
66
|
+
useFactory: ({ tracer, resourcesRegistry }) => {
|
|
67
|
+
return function insertTraceIdToResourcesRegistry() {
|
|
68
|
+
const traceparent = getTraceparentHeader(tracer);
|
|
69
|
+
if (traceparent !== undefined) {
|
|
70
|
+
resourcesRegistry.register({
|
|
71
|
+
slot: ResourceSlot.HEAD_META,
|
|
72
|
+
type: ResourceType.meta,
|
|
73
|
+
payload: `<meta name="traceparent" content="${traceparent}">`,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
},
|
|
78
|
+
deps: {
|
|
79
|
+
tracer: OPENTELEMETRY_TRACER_TOKEN,
|
|
80
|
+
resourcesRegistry: RESOURCES_REGISTRY,
|
|
81
|
+
},
|
|
82
|
+
}),
|
|
56
83
|
provide({
|
|
57
84
|
provide: OPENTELEMETRY_PROVIDER_TOKEN,
|
|
58
85
|
useFactory: ({ config }) => {
|
package/lib/server.js
CHANGED
|
@@ -8,6 +8,7 @@ var sdkTraceNode = require('@opentelemetry/sdk-trace-node');
|
|
|
8
8
|
var resources = require('@opentelemetry/resources');
|
|
9
9
|
var semanticConventions = require('@opentelemetry/semantic-conventions');
|
|
10
10
|
var tokensCommon = require('@tramvai/tokens-common');
|
|
11
|
+
var tokensRender = require('@tramvai/tokens-render');
|
|
11
12
|
var tokens = require('./tokens.js');
|
|
12
13
|
var tracer = require('./tracer/tracer.js');
|
|
13
14
|
var server = require('./instrumentation/server.js');
|
|
@@ -15,6 +16,10 @@ var httpClient = require('./instrumentation/httpClient.js');
|
|
|
15
16
|
var logs = require('./instrumentation/logs.js');
|
|
16
17
|
var commandLineRunner = require('./instrumentation/commandLineRunner.js');
|
|
17
18
|
var router = require('./instrumentation/router.js');
|
|
19
|
+
var configResolution = require('./instrumentation/childApp/configResolution.js');
|
|
20
|
+
var loader = require('./instrumentation/childApp/loader.js');
|
|
21
|
+
var preload = require('./instrumentation/childApp/preload.js');
|
|
22
|
+
var getTraceparentHeader = require('./tracer/get-traceparent-header.js');
|
|
18
23
|
|
|
19
24
|
exports.OpenTelemetryModule = class OpenTelemetryModule {
|
|
20
25
|
};
|
|
@@ -22,6 +27,9 @@ exports.OpenTelemetryModule = tslib.__decorate([
|
|
|
22
27
|
core.Module({
|
|
23
28
|
imports: [],
|
|
24
29
|
providers: [
|
|
30
|
+
...configResolution.providers,
|
|
31
|
+
...loader.providers,
|
|
32
|
+
...preload.providers,
|
|
25
33
|
...server.providers,
|
|
26
34
|
...httpClient.providers,
|
|
27
35
|
...logs.providers,
|
|
@@ -56,6 +64,25 @@ exports.OpenTelemetryModule = tslib.__decorate([
|
|
|
56
64
|
logger: tokensCommon.LOGGER_TOKEN,
|
|
57
65
|
},
|
|
58
66
|
}),
|
|
67
|
+
core.provide({
|
|
68
|
+
provide: core.commandLineListTokens.customerStart,
|
|
69
|
+
useFactory: ({ tracer, resourcesRegistry }) => {
|
|
70
|
+
return function insertTraceIdToResourcesRegistry() {
|
|
71
|
+
const traceparent = getTraceparentHeader.getTraceparentHeader(tracer);
|
|
72
|
+
if (traceparent !== undefined) {
|
|
73
|
+
resourcesRegistry.register({
|
|
74
|
+
slot: tokensRender.ResourceSlot.HEAD_META,
|
|
75
|
+
type: tokensRender.ResourceType.meta,
|
|
76
|
+
payload: `<meta name="traceparent" content="${traceparent}">`,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
},
|
|
81
|
+
deps: {
|
|
82
|
+
tracer: tokens.OPENTELEMETRY_TRACER_TOKEN,
|
|
83
|
+
resourcesRegistry: tokensRender.RESOURCES_REGISTRY,
|
|
84
|
+
},
|
|
85
|
+
}),
|
|
59
86
|
core.provide({
|
|
60
87
|
provide: tokens.OPENTELEMETRY_PROVIDER_TOKEN,
|
|
61
88
|
useFactory: ({ config }) => {
|
|
@@ -131,6 +158,7 @@ exports.OpenTelemetryModule = tslib.__decorate([
|
|
|
131
158
|
], exports.OpenTelemetryModule);
|
|
132
159
|
// todo declareModule!
|
|
133
160
|
|
|
161
|
+
exports.OPENTELEMETRY_HTTP_CLIENT_BROWSER_HEADERS_INCLUDE_TOKEN = tokens.OPENTELEMETRY_HTTP_CLIENT_BROWSER_HEADERS_INCLUDE_TOKEN;
|
|
134
162
|
exports.OPENTELEMETRY_PROVIDER_CONFIG_TOKEN = tokens.OPENTELEMETRY_PROVIDER_CONFIG_TOKEN;
|
|
135
163
|
exports.OPENTELEMETRY_PROVIDER_RESOURCE_ATTRIBUTES_TOKEN = tokens.OPENTELEMETRY_PROVIDER_RESOURCE_ATTRIBUTES_TOKEN;
|
|
136
164
|
exports.OPENTELEMETRY_PROVIDER_RESOURCE_TOKEN = tokens.OPENTELEMETRY_PROVIDER_RESOURCE_TOKEN;
|
package/lib/tokens.browser.js
CHANGED
|
@@ -6,5 +6,6 @@ const OPENTELEMETRY_PROVIDER_SPAN_PROCESSOR_TOKEN = createToken('tramvai opentel
|
|
|
6
6
|
const OPENTELEMETRY_PROVIDER_RESOURCE_TOKEN = createToken('tramvai opentelemetry provider resource', { scope: Scope.SINGLETON });
|
|
7
7
|
const OPENTELEMETRY_PROVIDER_RESOURCE_ATTRIBUTES_TOKEN = createToken('tramvai opentelemetry provider resource attributes', { multi: true, scope: Scope.SINGLETON });
|
|
8
8
|
const OPENTELEMETRY_TRACER_TOKEN = createToken('tramvai opentelemetry tracer', { scope: Scope.SINGLETON });
|
|
9
|
+
const OPENTELEMETRY_HTTP_CLIENT_BROWSER_HEADERS_INCLUDE_TOKEN = createToken('tramvai opentelemetry http client browser traceparent header filter');
|
|
9
10
|
|
|
10
|
-
export { OPENTELEMETRY_PROVIDER_CONFIG_TOKEN, OPENTELEMETRY_PROVIDER_RESOURCE_ATTRIBUTES_TOKEN, OPENTELEMETRY_PROVIDER_RESOURCE_TOKEN, OPENTELEMETRY_PROVIDER_SPAN_PROCESSOR_TOKEN, OPENTELEMETRY_PROVIDER_TOKEN, OPENTELEMETRY_TRACER_TOKEN };
|
|
11
|
+
export { OPENTELEMETRY_HTTP_CLIENT_BROWSER_HEADERS_INCLUDE_TOKEN, OPENTELEMETRY_PROVIDER_CONFIG_TOKEN, OPENTELEMETRY_PROVIDER_RESOURCE_ATTRIBUTES_TOKEN, OPENTELEMETRY_PROVIDER_RESOURCE_TOKEN, OPENTELEMETRY_PROVIDER_SPAN_PROCESSOR_TOKEN, OPENTELEMETRY_PROVIDER_TOKEN, OPENTELEMETRY_TRACER_TOKEN };
|
package/lib/tokens.d.ts
CHANGED
|
@@ -4,6 +4,20 @@ import type { Resource } from '@opentelemetry/resources';
|
|
|
4
4
|
export type TraceParams = {
|
|
5
5
|
skipError?: (error: Error) => boolean;
|
|
6
6
|
};
|
|
7
|
+
export type PropagationCarrier = {
|
|
8
|
+
/**
|
|
9
|
+
* Traceparent context appropriate W3C format:
|
|
10
|
+
* `version-traceId-spanId-sampled`.
|
|
11
|
+
*
|
|
12
|
+
* version – There is only `00` version at the moment.
|
|
13
|
+
* sampled – Was trace sampled. We are sampling all the traces currently.
|
|
14
|
+
*
|
|
15
|
+
* @see https://www.w3.org/TR/trace-context/#version
|
|
16
|
+
* @see https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/web/opentelemetry-instrumentation-document-load#optional-send-a-trace-parent-from-your-server
|
|
17
|
+
*/
|
|
18
|
+
traceparent?: string;
|
|
19
|
+
tracestate?: string;
|
|
20
|
+
};
|
|
7
21
|
/**
|
|
8
22
|
* API inspired by:
|
|
9
23
|
* - https://github.com/DataDog/dd-trace-js/blob/59e9a2a75f4256755b4e6c9951a0bdf8d39b4015/index.d.ts#L9
|
|
@@ -19,6 +33,7 @@ export interface TramvaiTracer {
|
|
|
19
33
|
trace<T>(name: string, fn: (span: Span) => T, params?: TraceParams): T;
|
|
20
34
|
trace<T>(name: string, options: SpanOptions, fn: (span: Span) => Promise<T>, params?: TraceParams): Promise<T>;
|
|
21
35
|
trace<T>(name: string, options: SpanOptions, fn: (span: Span) => T, params?: TraceParams): T;
|
|
36
|
+
propagateContext(carrier?: PropagationCarrier): PropagationCarrier;
|
|
22
37
|
}
|
|
23
38
|
export declare const OPENTELEMETRY_PROVIDER_TOKEN: BasicTracerProvider & {
|
|
24
39
|
__type?: "base token" | undefined;
|
|
@@ -38,4 +53,7 @@ export declare const OPENTELEMETRY_PROVIDER_RESOURCE_ATTRIBUTES_TOKEN: import("@
|
|
|
38
53
|
export declare const OPENTELEMETRY_TRACER_TOKEN: TramvaiTracer & {
|
|
39
54
|
__type?: "base token" | undefined;
|
|
40
55
|
};
|
|
56
|
+
export declare const OPENTELEMETRY_HTTP_CLIENT_BROWSER_HEADERS_INCLUDE_TOKEN: ((url: string) => boolean) & {
|
|
57
|
+
__type?: "base token" | undefined;
|
|
58
|
+
};
|
|
41
59
|
//# sourceMappingURL=tokens.d.ts.map
|
package/lib/tokens.es.js
CHANGED
|
@@ -6,5 +6,6 @@ const OPENTELEMETRY_PROVIDER_SPAN_PROCESSOR_TOKEN = createToken('tramvai opentel
|
|
|
6
6
|
const OPENTELEMETRY_PROVIDER_RESOURCE_TOKEN = createToken('tramvai opentelemetry provider resource', { scope: Scope.SINGLETON });
|
|
7
7
|
const OPENTELEMETRY_PROVIDER_RESOURCE_ATTRIBUTES_TOKEN = createToken('tramvai opentelemetry provider resource attributes', { multi: true, scope: Scope.SINGLETON });
|
|
8
8
|
const OPENTELEMETRY_TRACER_TOKEN = createToken('tramvai opentelemetry tracer', { scope: Scope.SINGLETON });
|
|
9
|
+
const OPENTELEMETRY_HTTP_CLIENT_BROWSER_HEADERS_INCLUDE_TOKEN = createToken('tramvai opentelemetry http client browser traceparent header filter');
|
|
9
10
|
|
|
10
|
-
export { OPENTELEMETRY_PROVIDER_CONFIG_TOKEN, OPENTELEMETRY_PROVIDER_RESOURCE_ATTRIBUTES_TOKEN, OPENTELEMETRY_PROVIDER_RESOURCE_TOKEN, OPENTELEMETRY_PROVIDER_SPAN_PROCESSOR_TOKEN, OPENTELEMETRY_PROVIDER_TOKEN, OPENTELEMETRY_TRACER_TOKEN };
|
|
11
|
+
export { OPENTELEMETRY_HTTP_CLIENT_BROWSER_HEADERS_INCLUDE_TOKEN, OPENTELEMETRY_PROVIDER_CONFIG_TOKEN, OPENTELEMETRY_PROVIDER_RESOURCE_ATTRIBUTES_TOKEN, OPENTELEMETRY_PROVIDER_RESOURCE_TOKEN, OPENTELEMETRY_PROVIDER_SPAN_PROCESSOR_TOKEN, OPENTELEMETRY_PROVIDER_TOKEN, OPENTELEMETRY_TRACER_TOKEN };
|
package/lib/tokens.js
CHANGED
|
@@ -10,7 +10,9 @@ const OPENTELEMETRY_PROVIDER_SPAN_PROCESSOR_TOKEN = dippy.createToken('tramvai o
|
|
|
10
10
|
const OPENTELEMETRY_PROVIDER_RESOURCE_TOKEN = dippy.createToken('tramvai opentelemetry provider resource', { scope: dippy.Scope.SINGLETON });
|
|
11
11
|
const OPENTELEMETRY_PROVIDER_RESOURCE_ATTRIBUTES_TOKEN = dippy.createToken('tramvai opentelemetry provider resource attributes', { multi: true, scope: dippy.Scope.SINGLETON });
|
|
12
12
|
const OPENTELEMETRY_TRACER_TOKEN = dippy.createToken('tramvai opentelemetry tracer', { scope: dippy.Scope.SINGLETON });
|
|
13
|
+
const OPENTELEMETRY_HTTP_CLIENT_BROWSER_HEADERS_INCLUDE_TOKEN = dippy.createToken('tramvai opentelemetry http client browser traceparent header filter');
|
|
13
14
|
|
|
15
|
+
exports.OPENTELEMETRY_HTTP_CLIENT_BROWSER_HEADERS_INCLUDE_TOKEN = OPENTELEMETRY_HTTP_CLIENT_BROWSER_HEADERS_INCLUDE_TOKEN;
|
|
14
16
|
exports.OPENTELEMETRY_PROVIDER_CONFIG_TOKEN = OPENTELEMETRY_PROVIDER_CONFIG_TOKEN;
|
|
15
17
|
exports.OPENTELEMETRY_PROVIDER_RESOURCE_ATTRIBUTES_TOKEN = OPENTELEMETRY_PROVIDER_RESOURCE_ATTRIBUTES_TOKEN;
|
|
16
18
|
exports.OPENTELEMETRY_PROVIDER_RESOURCE_TOKEN = OPENTELEMETRY_PROVIDER_RESOURCE_TOKEN;
|
package/lib/tracer/tracer.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { Context, Span, SpanOptions, Tracer } from '@opentelemetry/api';
|
|
2
|
+
import { PropagationCarrier, TraceParams, TramvaiTracer } from '../tokens';
|
|
3
3
|
export declare class TramvaiTracerImpl implements TramvaiTracer {
|
|
4
4
|
private tracer;
|
|
5
5
|
constructor({ tracer }: {
|
|
@@ -14,5 +14,12 @@ export declare class TramvaiTracerImpl implements TramvaiTracer {
|
|
|
14
14
|
trace<T>(name: string, fn: (span: Span) => T, params?: TraceParams): T;
|
|
15
15
|
trace<T>(name: string, options: SpanOptions, fn: (span: Span) => Promise<T>, params?: TraceParams): Promise<T>;
|
|
16
16
|
trace<T>(name: string, options: SpanOptions, fn: (span: Span, params?: TraceParams) => T): T;
|
|
17
|
+
/**
|
|
18
|
+
* Propagate context from outgoing request
|
|
19
|
+
* @param carrier
|
|
20
|
+
*
|
|
21
|
+
* @see https://opentelemetry.io/docs/languages/js/propagation/#manual-context-propagation
|
|
22
|
+
*/
|
|
23
|
+
propagateContext(carrier?: PropagationCarrier): PropagationCarrier;
|
|
17
24
|
}
|
|
18
25
|
//# sourceMappingURL=tracer.d.ts.map
|
package/lib/tracer/tracer.es.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import isPromise from '@tinkoff/utils/is/promise';
|
|
2
|
-
import { trace, context, ROOT_CONTEXT, SpanStatusCode } from '@opentelemetry/api';
|
|
2
|
+
import { trace, context, ROOT_CONTEXT, propagation, SpanStatusCode } from '@opentelemetry/api';
|
|
3
3
|
import { isSilentError } from '@tinkoff/errors';
|
|
4
4
|
|
|
5
5
|
/* eslint-disable prefer-destructuring */
|
|
@@ -15,6 +15,7 @@ function recordAndThrowError(span, error, { skipError = () => false }) {
|
|
|
15
15
|
throw error;
|
|
16
16
|
}
|
|
17
17
|
class TramvaiTracerImpl {
|
|
18
|
+
tracer;
|
|
18
19
|
constructor({ tracer }) {
|
|
19
20
|
this.tracer = tracer;
|
|
20
21
|
}
|
|
@@ -70,6 +71,17 @@ class TramvaiTracerImpl {
|
|
|
70
71
|
}
|
|
71
72
|
});
|
|
72
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Propagate context from outgoing request
|
|
76
|
+
* @param carrier
|
|
77
|
+
*
|
|
78
|
+
* @see https://opentelemetry.io/docs/languages/js/propagation/#manual-context-propagation
|
|
79
|
+
*/
|
|
80
|
+
propagateContext(carrier) {
|
|
81
|
+
const payload = carrier ?? {};
|
|
82
|
+
propagation.inject(context.active(), payload);
|
|
83
|
+
return payload;
|
|
84
|
+
}
|
|
73
85
|
}
|
|
74
86
|
/* eslint-enable prefer-destructuring */
|
|
75
87
|
|
package/lib/tracer/tracer.js
CHANGED
|
@@ -23,6 +23,7 @@ function recordAndThrowError(span, error, { skipError = () => false }) {
|
|
|
23
23
|
throw error;
|
|
24
24
|
}
|
|
25
25
|
class TramvaiTracerImpl {
|
|
26
|
+
tracer;
|
|
26
27
|
constructor({ tracer }) {
|
|
27
28
|
this.tracer = tracer;
|
|
28
29
|
}
|
|
@@ -78,6 +79,17 @@ class TramvaiTracerImpl {
|
|
|
78
79
|
}
|
|
79
80
|
});
|
|
80
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Propagate context from outgoing request
|
|
84
|
+
* @param carrier
|
|
85
|
+
*
|
|
86
|
+
* @see https://opentelemetry.io/docs/languages/js/propagation/#manual-context-propagation
|
|
87
|
+
*/
|
|
88
|
+
propagateContext(carrier) {
|
|
89
|
+
const payload = carrier ?? {};
|
|
90
|
+
api.propagation.inject(api.context.active(), payload);
|
|
91
|
+
return payload;
|
|
92
|
+
}
|
|
81
93
|
}
|
|
82
94
|
/* eslint-enable prefer-destructuring */
|
|
83
95
|
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tramvai/module-opentelemetry",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.59.0",
|
|
4
4
|
"description": "Интеграция OpenTelemetry",
|
|
5
5
|
"browser": "lib/browser.js",
|
|
6
6
|
"main": "lib/server.js",
|
|
7
7
|
"module": "lib/server.es.js",
|
|
8
|
-
"typings": "lib/server.d.
|
|
8
|
+
"typings": "lib/server.d.ts",
|
|
9
9
|
"files": [
|
|
10
10
|
"lib"
|
|
11
11
|
],
|
|
@@ -27,19 +27,21 @@
|
|
|
27
27
|
"@opentelemetry/resources": "^1.28.0",
|
|
28
28
|
"@opentelemetry/sdk-trace-node": "^1.28.0",
|
|
29
29
|
"@opentelemetry/semantic-conventions": "^1.28.0",
|
|
30
|
-
"@tinkoff/errors": "0.
|
|
30
|
+
"@tinkoff/errors": "0.7.1",
|
|
31
31
|
"@tinkoff/utils": "^2.1.2",
|
|
32
|
-
"@tramvai/tokens-
|
|
33
|
-
"@tramvai/tokens-
|
|
34
|
-
"@tramvai/tokens-
|
|
35
|
-
"@tramvai/tokens-
|
|
36
|
-
"@tramvai/tokens-
|
|
37
|
-
"@tramvai/tokens-
|
|
38
|
-
"
|
|
32
|
+
"@tramvai/tokens-child-app": "6.59.0",
|
|
33
|
+
"@tramvai/tokens-common": "6.59.0",
|
|
34
|
+
"@tramvai/tokens-http-client": "6.59.0",
|
|
35
|
+
"@tramvai/tokens-metrics": "6.59.0",
|
|
36
|
+
"@tramvai/tokens-render": "6.59.0",
|
|
37
|
+
"@tramvai/tokens-router": "6.59.0",
|
|
38
|
+
"@tramvai/tokens-server": "6.59.0",
|
|
39
|
+
"@tramvai/tokens-server-private": "6.59.0",
|
|
40
|
+
"path-to-regexp": "^0.1.12"
|
|
39
41
|
},
|
|
40
42
|
"peerDependencies": {
|
|
41
|
-
"@tinkoff/dippy": "0.
|
|
42
|
-
"@tramvai/core": "
|
|
43
|
+
"@tinkoff/dippy": "0.12.3",
|
|
44
|
+
"@tramvai/core": "6.59.0",
|
|
43
45
|
"tslib": "^2.4.0"
|
|
44
46
|
}
|
|
45
47
|
}
|