@opentelemetry/otlp-exporter-base 0.220.0 → 0.221.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/build/esm/ExporterMetrics.d.ts +24 -0
- package/build/esm/ExporterMetrics.js +104 -0
- package/build/esm/ExporterMetrics.js.map +1 -0
- package/build/esm/OTLPExporterBase.d.ts +2 -0
- package/build/esm/OTLPExporterBase.js +3 -0
- package/build/esm/OTLPExporterBase.js.map +1 -1
- package/build/esm/configuration/create-legacy-browser-delegate.d.ts +8 -2
- package/build/esm/configuration/create-legacy-browser-delegate.js +36 -2
- package/build/esm/configuration/create-legacy-browser-delegate.js.map +1 -1
- package/build/esm/configuration/legacy-base-configuration.d.ts +6 -0
- package/build/esm/configuration/legacy-base-configuration.js.map +1 -1
- package/build/esm/index-browser-http.d.ts +1 -1
- package/build/esm/index-browser-http.js +1 -1
- package/build/esm/index-browser-http.js.map +1 -1
- package/build/esm/index-node-http.d.ts +1 -1
- package/build/esm/index-node-http.js +1 -1
- package/build/esm/index-node-http.js.map +1 -1
- package/build/esm/index.d.ts +1 -0
- package/build/esm/index.js +1 -0
- package/build/esm/index.js.map +1 -1
- package/build/esm/otlp-browser-http-export-delegate.d.ts +3 -2
- package/build/esm/otlp-browser-http-export-delegate.js +8 -4
- package/build/esm/otlp-browser-http-export-delegate.js.map +1 -1
- package/build/esm/otlp-export-delegate.d.ts +3 -0
- package/build/esm/otlp-export-delegate.js +19 -6
- package/build/esm/otlp-export-delegate.js.map +1 -1
- package/build/esm/otlp-http-export-delegate.d.ts +5 -2
- package/build/esm/otlp-http-export-delegate.js +30 -1
- package/build/esm/otlp-http-export-delegate.js.map +1 -1
- package/build/esm/otlp-network-export-delegate.d.ts +2 -1
- package/build/esm/otlp-network-export-delegate.js +2 -1
- package/build/esm/otlp-network-export-delegate.js.map +1 -1
- package/build/esm/semconv.d.ts +91 -0
- package/build/esm/semconv.js +100 -0
- package/build/esm/semconv.js.map +1 -0
- package/build/esm/version.d.ts +1 -1
- package/build/esm/version.js +1 -1
- package/build/esm/version.js.map +1 -1
- package/build/esnext/ExporterMetrics.d.ts +24 -0
- package/build/esnext/ExporterMetrics.js +104 -0
- package/build/esnext/ExporterMetrics.js.map +1 -0
- package/build/esnext/OTLPExporterBase.d.ts +2 -0
- package/build/esnext/OTLPExporterBase.js +3 -0
- package/build/esnext/OTLPExporterBase.js.map +1 -1
- package/build/esnext/configuration/create-legacy-browser-delegate.d.ts +8 -2
- package/build/esnext/configuration/create-legacy-browser-delegate.js +36 -2
- package/build/esnext/configuration/create-legacy-browser-delegate.js.map +1 -1
- package/build/esnext/configuration/legacy-base-configuration.d.ts +6 -0
- package/build/esnext/configuration/legacy-base-configuration.js.map +1 -1
- package/build/esnext/index-browser-http.d.ts +1 -1
- package/build/esnext/index-browser-http.js +1 -1
- package/build/esnext/index-browser-http.js.map +1 -1
- package/build/esnext/index-node-http.d.ts +1 -1
- package/build/esnext/index-node-http.js +1 -1
- package/build/esnext/index-node-http.js.map +1 -1
- package/build/esnext/index.d.ts +1 -0
- package/build/esnext/index.js +1 -0
- package/build/esnext/index.js.map +1 -1
- package/build/esnext/otlp-browser-http-export-delegate.d.ts +3 -2
- package/build/esnext/otlp-browser-http-export-delegate.js +8 -4
- package/build/esnext/otlp-browser-http-export-delegate.js.map +1 -1
- package/build/esnext/otlp-export-delegate.d.ts +3 -0
- package/build/esnext/otlp-export-delegate.js +19 -6
- package/build/esnext/otlp-export-delegate.js.map +1 -1
- package/build/esnext/otlp-http-export-delegate.d.ts +5 -2
- package/build/esnext/otlp-http-export-delegate.js +30 -1
- package/build/esnext/otlp-http-export-delegate.js.map +1 -1
- package/build/esnext/otlp-network-export-delegate.d.ts +2 -1
- package/build/esnext/otlp-network-export-delegate.js +2 -1
- package/build/esnext/otlp-network-export-delegate.js.map +1 -1
- package/build/esnext/semconv.d.ts +91 -0
- package/build/esnext/semconv.js +100 -0
- package/build/esnext/semconv.js.map +1 -0
- package/build/esnext/version.d.ts +1 -1
- package/build/esnext/version.js +1 -1
- package/build/esnext/version.js.map +1 -1
- package/build/src/ExporterMetrics.d.ts +24 -0
- package/build/src/ExporterMetrics.js +108 -0
- package/build/src/ExporterMetrics.js.map +1 -0
- package/build/src/OTLPExporterBase.d.ts +2 -0
- package/build/src/OTLPExporterBase.js +3 -0
- package/build/src/OTLPExporterBase.js.map +1 -1
- package/build/src/configuration/create-legacy-browser-delegate.d.ts +8 -2
- package/build/src/configuration/create-legacy-browser-delegate.js +38 -3
- package/build/src/configuration/create-legacy-browser-delegate.js.map +1 -1
- package/build/src/configuration/legacy-base-configuration.d.ts +6 -0
- package/build/src/configuration/legacy-base-configuration.js.map +1 -1
- package/build/src/configuration/legacy-node-configuration.js +1 -1
- package/build/src/configuration/legacy-node-configuration.js.map +1 -1
- package/build/src/index-browser-http.d.ts +1 -1
- package/build/src/index-browser-http.js +2 -1
- package/build/src/index-browser-http.js.map +1 -1
- package/build/src/index-node-http.d.ts +1 -1
- package/build/src/index-node-http.js +2 -1
- package/build/src/index-node-http.js.map +1 -1
- package/build/src/index.d.ts +1 -0
- package/build/src/index.js +3 -1
- package/build/src/index.js.map +1 -1
- package/build/src/otlp-browser-http-export-delegate.d.ts +3 -2
- package/build/src/otlp-browser-http-export-delegate.js +8 -4
- package/build/src/otlp-browser-http-export-delegate.js.map +1 -1
- package/build/src/otlp-export-delegate.d.ts +3 -0
- package/build/src/otlp-export-delegate.js +19 -6
- package/build/src/otlp-export-delegate.js.map +1 -1
- package/build/src/otlp-http-export-delegate.d.ts +5 -2
- package/build/src/otlp-http-export-delegate.js +32 -2
- package/build/src/otlp-http-export-delegate.js.map +1 -1
- package/build/src/otlp-network-export-delegate.d.ts +2 -1
- package/build/src/otlp-network-export-delegate.js +2 -1
- package/build/src/otlp-network-export-delegate.js.map +1 -1
- package/build/src/semconv.d.ts +91 -0
- package/build/src/semconv.js +103 -0
- package/build/src/semconv.js.map +1 -0
- package/build/src/version.d.ts +1 -1
- package/build/src/version.js +1 -1
- package/build/src/version.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.221.0';\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type Attributes, type MeterProvider } from '@opentelemetry/api';
|
|
2
|
+
import { type IExporterMetricsHelper } from '@opentelemetry/otlp-transformer';
|
|
3
|
+
export interface ExporterMetricsOptions<Internal> {
|
|
4
|
+
componentType: string;
|
|
5
|
+
metricsHelper: IExporterMetricsHelper<Internal>;
|
|
6
|
+
url: string | undefined;
|
|
7
|
+
meterProvider: MeterProvider | undefined;
|
|
8
|
+
responseAttributesFromError: (error: Error | string | undefined) => Attributes;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Generates `otel.sdk.exporter.*` metrics.
|
|
12
|
+
* https://opentelemetry.io/docs/specs/semconv/otel/sdk-metrics
|
|
13
|
+
*/
|
|
14
|
+
export declare class ExporterMetrics<Internal> {
|
|
15
|
+
private readonly inflight;
|
|
16
|
+
private readonly exported;
|
|
17
|
+
private readonly duration;
|
|
18
|
+
private readonly standardAttrs;
|
|
19
|
+
private readonly responseAttributesFromError;
|
|
20
|
+
private readonly helper;
|
|
21
|
+
constructor(options: ExporterMetricsOptions<Internal>);
|
|
22
|
+
startExport(request: Internal): (error: Error | string | undefined) => void;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=ExporterMetrics.d.ts.map
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright The OpenTelemetry Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ExporterMetrics = void 0;
|
|
8
|
+
const api_1 = require("@opentelemetry/api");
|
|
9
|
+
const core_1 = require("@opentelemetry/core");
|
|
10
|
+
const semconv_1 = require("./semconv");
|
|
11
|
+
const version_1 = require("./version");
|
|
12
|
+
const componentCounter = new Map();
|
|
13
|
+
/**
|
|
14
|
+
* Generates `otel.sdk.exporter.*` metrics.
|
|
15
|
+
* https://opentelemetry.io/docs/specs/semconv/otel/sdk-metrics
|
|
16
|
+
*/
|
|
17
|
+
class ExporterMetrics {
|
|
18
|
+
inflight;
|
|
19
|
+
exported;
|
|
20
|
+
duration;
|
|
21
|
+
standardAttrs;
|
|
22
|
+
responseAttributesFromError;
|
|
23
|
+
helper;
|
|
24
|
+
constructor(options) {
|
|
25
|
+
const { componentType, metricsHelper, meterProvider, url, responseAttributesFromError, } = options;
|
|
26
|
+
this.responseAttributesFromError = responseAttributesFromError;
|
|
27
|
+
const meter = meterProvider
|
|
28
|
+
? meterProvider.getMeter('@opentelemetry/otlp-exporter', version_1.VERSION)
|
|
29
|
+
: (0, api_1.createNoopMeter)();
|
|
30
|
+
const counter = componentCounter.get(componentType) ?? 0;
|
|
31
|
+
componentCounter.set(componentType, counter + 1);
|
|
32
|
+
this.standardAttrs = {
|
|
33
|
+
[semconv_1.ATTR_OTEL_COMPONENT_TYPE]: componentType,
|
|
34
|
+
[semconv_1.ATTR_OTEL_COMPONENT_NAME]: `${componentType}/${counter}`,
|
|
35
|
+
};
|
|
36
|
+
if (url) {
|
|
37
|
+
// URLs may exclude scheme for gRPC endpoints, but in this case they always
|
|
38
|
+
// have a port number. Because the URL constructor requires a scheme, we
|
|
39
|
+
// can still handle gRPC endpoints by prepending an arbitrary scheme.
|
|
40
|
+
let urlToParse = url;
|
|
41
|
+
if (!url.includes('://')) {
|
|
42
|
+
urlToParse = `http://${url}`;
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
const parsedUrl = new URL(urlToParse);
|
|
46
|
+
this.standardAttrs[semconv_1.ATTR_SERVER_ADDRESS] = parsedUrl.hostname;
|
|
47
|
+
let port = undefined;
|
|
48
|
+
if (parsedUrl.port) {
|
|
49
|
+
port = Number(parsedUrl.port);
|
|
50
|
+
}
|
|
51
|
+
else if (parsedUrl.protocol === 'http:') {
|
|
52
|
+
port = 80;
|
|
53
|
+
}
|
|
54
|
+
else if (parsedUrl.protocol === 'https:') {
|
|
55
|
+
port = 443;
|
|
56
|
+
}
|
|
57
|
+
if (typeof port === 'number') {
|
|
58
|
+
this.standardAttrs[semconv_1.ATTR_SERVER_PORT] = port;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
// In practice, URLs will be valid or something else will break. Better to let that
|
|
63
|
+
// inform the user than an exception in this internal code and proceed best-effort
|
|
64
|
+
// here.
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
this.helper = metricsHelper;
|
|
68
|
+
this.inflight = meter.createUpDownCounter(`otel.sdk.exporter.${this.helper.name}.inflight`, {
|
|
69
|
+
unit: `{${this.helper.name}}`,
|
|
70
|
+
description: `The number of ${this.helper.name}s which were passed to the exporter, but that have not been exported yet (neither successful, nor failed).`,
|
|
71
|
+
});
|
|
72
|
+
this.exported = meter.createCounter(`otel.sdk.exporter.${this.helper.name}.exported`, {
|
|
73
|
+
unit: `{${this.helper.name}}`,
|
|
74
|
+
description: `The number of ${this.helper.name}s for which the export has finished, either successful or failed.`,
|
|
75
|
+
});
|
|
76
|
+
this.duration = meter.createHistogram('otel.sdk.exporter.operation.duration', {
|
|
77
|
+
unit: 's',
|
|
78
|
+
description: 'The duration of exporting a batch of telemetry records.',
|
|
79
|
+
advice: {
|
|
80
|
+
explicitBucketBoundaries: [],
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
startExport(request) {
|
|
85
|
+
const numItems = this.helper.countItems(request);
|
|
86
|
+
const startTime = (0, core_1.hrTime)();
|
|
87
|
+
this.inflight.add(numItems, this.standardAttrs);
|
|
88
|
+
return (error) => {
|
|
89
|
+
const endTime = (0, core_1.hrTime)();
|
|
90
|
+
this.inflight.add(-numItems, this.standardAttrs);
|
|
91
|
+
const exportedAttrs = error
|
|
92
|
+
? {
|
|
93
|
+
...this.standardAttrs,
|
|
94
|
+
[semconv_1.ATTR_ERROR_TYPE]: error instanceof Error ? error.name : 'export_failed',
|
|
95
|
+
}
|
|
96
|
+
: this.standardAttrs;
|
|
97
|
+
this.exported.add(numItems, exportedAttrs);
|
|
98
|
+
const durationAttrs = {
|
|
99
|
+
...exportedAttrs,
|
|
100
|
+
...this.responseAttributesFromError(error),
|
|
101
|
+
};
|
|
102
|
+
const duration = (0, core_1.hrTimeToMilliseconds)((0, core_1.hrTimeDuration)(startTime, endTime)) / 1000;
|
|
103
|
+
this.duration.record(duration, durationAttrs);
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.ExporterMetrics = ExporterMetrics;
|
|
108
|
+
//# sourceMappingURL=ExporterMetrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExporterMetrics.js","sourceRoot":"","sources":["../../src/ExporterMetrics.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n type Attributes,\n type Counter,\n type Histogram,\n type MeterProvider,\n type UpDownCounter,\n createNoopMeter,\n} from '@opentelemetry/api';\nimport {\n hrTime,\n hrTimeDuration,\n hrTimeToMilliseconds,\n} from '@opentelemetry/core';\nimport { type IExporterMetricsHelper } from '@opentelemetry/otlp-transformer';\nimport {\n ATTR_ERROR_TYPE,\n ATTR_OTEL_COMPONENT_NAME,\n ATTR_OTEL_COMPONENT_TYPE,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n} from './semconv';\nimport { VERSION } from './version';\n\nconst componentCounter = new Map<string, number>();\n\nexport interface ExporterMetricsOptions<Internal> {\n componentType: string;\n metricsHelper: IExporterMetricsHelper<Internal>;\n url: string | undefined;\n meterProvider: MeterProvider | undefined;\n responseAttributesFromError: (\n error: Error | string | undefined\n ) => Attributes;\n}\n\n/**\n * Generates `otel.sdk.exporter.*` metrics.\n * https://opentelemetry.io/docs/specs/semconv/otel/sdk-metrics\n */\nexport class ExporterMetrics<Internal> {\n private readonly inflight: UpDownCounter;\n private readonly exported: Counter;\n private readonly duration: Histogram;\n private readonly standardAttrs: Attributes;\n private readonly responseAttributesFromError: (\n error: Error | string | undefined\n ) => Attributes;\n\n private readonly helper: IExporterMetricsHelper<Internal>;\n\n constructor(options: ExporterMetricsOptions<Internal>) {\n const {\n componentType,\n metricsHelper,\n meterProvider,\n url,\n responseAttributesFromError,\n } = options;\n this.responseAttributesFromError = responseAttributesFromError;\n const meter = meterProvider\n ? meterProvider.getMeter('@opentelemetry/otlp-exporter', VERSION)\n : createNoopMeter();\n\n const counter = componentCounter.get(componentType) ?? 0;\n componentCounter.set(componentType, counter + 1);\n\n this.standardAttrs = {\n [ATTR_OTEL_COMPONENT_TYPE]: componentType,\n [ATTR_OTEL_COMPONENT_NAME]: `${componentType}/${counter}`,\n };\n if (url) {\n // URLs may exclude scheme for gRPC endpoints, but in this case they always\n // have a port number. Because the URL constructor requires a scheme, we\n // can still handle gRPC endpoints by prepending an arbitrary scheme.\n let urlToParse = url;\n if (!url.includes('://')) {\n urlToParse = `http://${url}`;\n }\n try {\n const parsedUrl = new URL(urlToParse);\n this.standardAttrs[ATTR_SERVER_ADDRESS] = parsedUrl.hostname;\n let port: number | undefined = undefined;\n if (parsedUrl.port) {\n port = Number(parsedUrl.port);\n } else if (parsedUrl.protocol === 'http:') {\n port = 80;\n } else if (parsedUrl.protocol === 'https:') {\n port = 443;\n }\n if (typeof port === 'number') {\n this.standardAttrs[ATTR_SERVER_PORT] = port;\n }\n } catch {\n // In practice, URLs will be valid or something else will break. Better to let that\n // inform the user than an exception in this internal code and proceed best-effort\n // here.\n }\n }\n\n this.helper = metricsHelper;\n\n this.inflight = meter.createUpDownCounter(\n `otel.sdk.exporter.${this.helper.name}.inflight`,\n {\n unit: `{${this.helper.name}}`,\n description: `The number of ${this.helper.name}s which were passed to the exporter, but that have not been exported yet (neither successful, nor failed).`,\n }\n );\n this.exported = meter.createCounter(\n `otel.sdk.exporter.${this.helper.name}.exported`,\n {\n unit: `{${this.helper.name}}`,\n description: `The number of ${this.helper.name}s for which the export has finished, either successful or failed.`,\n }\n );\n this.duration = meter.createHistogram(\n 'otel.sdk.exporter.operation.duration',\n {\n unit: 's',\n description: 'The duration of exporting a batch of telemetry records.',\n advice: {\n explicitBucketBoundaries: [],\n },\n }\n );\n }\n\n startExport(request: Internal): (error: Error | string | undefined) => void {\n const numItems = this.helper.countItems(request);\n const startTime = hrTime();\n this.inflight.add(numItems, this.standardAttrs);\n return (error: Error | string | undefined) => {\n const endTime = hrTime();\n this.inflight.add(-numItems, this.standardAttrs);\n const exportedAttrs = error\n ? {\n ...this.standardAttrs,\n [ATTR_ERROR_TYPE]:\n error instanceof Error ? error.name : 'export_failed',\n }\n : this.standardAttrs;\n this.exported.add(numItems, exportedAttrs);\n const durationAttrs = {\n ...exportedAttrs,\n ...this.responseAttributesFromError(error),\n };\n const duration =\n hrTimeToMilliseconds(hrTimeDuration(startTime, endTime)) / 1000;\n this.duration.record(duration, durationAttrs);\n };\n }\n}\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ExportResult } from '@opentelemetry/core';
|
|
2
2
|
import type { IOtlpExportDelegate } from './otlp-export-delegate';
|
|
3
|
+
import { type ExporterMetrics } from './ExporterMetrics';
|
|
3
4
|
export declare class OTLPExporterBase<Internal> {
|
|
4
5
|
private _delegate;
|
|
5
6
|
constructor(delegate: IOtlpExportDelegate<Internal>);
|
|
@@ -11,5 +12,6 @@ export declare class OTLPExporterBase<Internal> {
|
|
|
11
12
|
export(items: Internal, resultCallback: (result: ExportResult) => void): void;
|
|
12
13
|
forceFlush(): Promise<void>;
|
|
13
14
|
shutdown(): Promise<void>;
|
|
15
|
+
protected setMetrics(metrics: ExporterMetrics<Internal>): void;
|
|
14
16
|
}
|
|
15
17
|
//# sourceMappingURL=OTLPExporterBase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OTLPExporterBase.js","sourceRoot":"","sources":["../../src/OTLPExporterBase.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
1
|
+
{"version":3,"file":"OTLPExporterBase.js","sourceRoot":"","sources":["../../src/OTLPExporterBase.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAMH,MAAa,gBAAgB;IACnB,SAAS,CAAgC;IACjD,YAAY,QAAuC;QACjD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,MAAM,CACJ,KAAe,EACf,cAA8C;QAE9C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAC/C,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;IAES,UAAU,CAAC,OAAkC;QACrD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;CACF;AA7BD,4CA6BC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ExportResult } from '@opentelemetry/core';\nimport type { IOtlpExportDelegate } from './otlp-export-delegate';\nimport { type ExporterMetrics } from './ExporterMetrics';\n\nexport class OTLPExporterBase<Internal> {\n private _delegate: IOtlpExportDelegate<Internal>;\n constructor(delegate: IOtlpExportDelegate<Internal>) {\n this._delegate = delegate;\n }\n\n /**\n * Export items.\n * @param items\n * @param resultCallback\n */\n export(\n items: Internal,\n resultCallback: (result: ExportResult) => void\n ): void {\n this._delegate.export(items, resultCallback);\n }\n\n forceFlush(): Promise<void> {\n return this._delegate.forceFlush();\n }\n\n shutdown(): Promise<void> {\n return this._delegate.shutdown();\n }\n\n protected setMetrics(metrics: ExporterMetrics<Internal>) {\n this._delegate.setMetrics(metrics);\n }\n}\n"]}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { MeterProvider } from '@opentelemetry/api';
|
|
2
|
+
import type { IExporterMetricsHelper, ISerializer } from '@opentelemetry/otlp-transformer';
|
|
2
3
|
import type { IOtlpExportDelegate } from '../otlp-export-delegate';
|
|
3
4
|
import type { OTLPExporterConfigBase } from './legacy-base-configuration';
|
|
5
|
+
import { ExporterMetrics } from '../ExporterMetrics';
|
|
6
|
+
/**
|
|
7
|
+
* @deprecated
|
|
8
|
+
*/
|
|
9
|
+
export declare function createLegacyOtlpBrowserExporterMetrics<Internal>(metricsComponentType: string, exporterMetricsHelper: IExporterMetricsHelper<Internal>, url: string | undefined, meterProvider: MeterProvider | undefined): ExporterMetrics<Internal>;
|
|
4
10
|
/**
|
|
5
11
|
* @deprecated
|
|
6
12
|
* @param config
|
|
@@ -8,5 +14,5 @@ import type { OTLPExporterConfigBase } from './legacy-base-configuration';
|
|
|
8
14
|
* @param signalResourcePath
|
|
9
15
|
* @param requiredHeaders
|
|
10
16
|
*/
|
|
11
|
-
export declare function createLegacyOtlpBrowserExportDelegate<Internal, Response>(config: OTLPExporterConfigBase, serializer: ISerializer<Internal, Response>, signalResourcePath: string, requiredHeaders: Record<string, string>): IOtlpExportDelegate<Internal>;
|
|
17
|
+
export declare function createLegacyOtlpBrowserExportDelegate<Internal, Response>(config: OTLPExporterConfigBase, serializer: ISerializer<Internal, Response>, metricsComponentType: string, exporterMetricsHelper: IExporterMetricsHelper<Internal>, meterProvider: MeterProvider | undefined, signalResourcePath: string, requiredHeaders: Record<string, string>): IOtlpExportDelegate<Internal>;
|
|
12
18
|
//# sourceMappingURL=create-legacy-browser-delegate.d.ts.map
|
|
@@ -1,8 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright The OpenTelemetry Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
2
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createLegacyOtlpBrowserExportDelegate = void 0;
|
|
7
|
+
exports.createLegacyOtlpBrowserExportDelegate = exports.createLegacyOtlpBrowserExporterMetrics = void 0;
|
|
4
8
|
const otlp_browser_http_export_delegate_1 = require("../otlp-browser-http-export-delegate");
|
|
5
9
|
const convert_legacy_browser_http_options_1 = require("./convert-legacy-browser-http-options");
|
|
10
|
+
const semconv_1 = require("../semconv");
|
|
11
|
+
const ExporterMetrics_1 = require("../ExporterMetrics");
|
|
12
|
+
/**
|
|
13
|
+
* @deprecated
|
|
14
|
+
*/
|
|
15
|
+
function createLegacyOtlpBrowserExporterMetrics(metricsComponentType, exporterMetricsHelper, url, meterProvider) {
|
|
16
|
+
return new ExporterMetrics_1.ExporterMetrics({
|
|
17
|
+
componentType: metricsComponentType,
|
|
18
|
+
metricsHelper: exporterMetricsHelper,
|
|
19
|
+
url,
|
|
20
|
+
meterProvider,
|
|
21
|
+
responseAttributesFromError: (error) => {
|
|
22
|
+
if (!error) {
|
|
23
|
+
return {
|
|
24
|
+
[semconv_1.ATTR_HTTP_RESPONSE_STATUS_CODE]: 200,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
if (!(error instanceof Error)) {
|
|
28
|
+
return {};
|
|
29
|
+
}
|
|
30
|
+
if (error.message.startsWith('Fetch request failed with non-retryable status ')) {
|
|
31
|
+
const statusStr = error.message.substring('Fetch request failed with non-retryable status '.length);
|
|
32
|
+
return {
|
|
33
|
+
[semconv_1.ATTR_HTTP_RESPONSE_STATUS_CODE]: Number(statusStr),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
return {};
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
exports.createLegacyOtlpBrowserExporterMetrics = createLegacyOtlpBrowserExporterMetrics;
|
|
6
41
|
/**
|
|
7
42
|
* @deprecated
|
|
8
43
|
* @param config
|
|
@@ -10,9 +45,9 @@ const convert_legacy_browser_http_options_1 = require("./convert-legacy-browser-
|
|
|
10
45
|
* @param signalResourcePath
|
|
11
46
|
* @param requiredHeaders
|
|
12
47
|
*/
|
|
13
|
-
function createLegacyOtlpBrowserExportDelegate(config, serializer, signalResourcePath, requiredHeaders) {
|
|
48
|
+
function createLegacyOtlpBrowserExportDelegate(config, serializer, metricsComponentType, exporterMetricsHelper, meterProvider, signalResourcePath, requiredHeaders) {
|
|
14
49
|
const options = (0, convert_legacy_browser_http_options_1.convertLegacyBrowserHttpOptions)(config, signalResourcePath, requiredHeaders);
|
|
15
|
-
return (0, otlp_browser_http_export_delegate_1.createOtlpFetchExportDelegate)(options, serializer);
|
|
50
|
+
return (0, otlp_browser_http_export_delegate_1.createOtlpFetchExportDelegate)(options, serializer, createLegacyOtlpBrowserExporterMetrics(metricsComponentType, exporterMetricsHelper, options.url, config.selfObsMeterProvider));
|
|
16
51
|
}
|
|
17
52
|
exports.createLegacyOtlpBrowserExportDelegate = createLegacyOtlpBrowserExportDelegate;
|
|
18
53
|
//# sourceMappingURL=create-legacy-browser-delegate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-legacy-browser-delegate.js","sourceRoot":"","sources":["../../../src/configuration/create-legacy-browser-delegate.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"create-legacy-browser-delegate.js","sourceRoot":"","sources":["../../../src/configuration/create-legacy-browser-delegate.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAOH,4FAAqF;AACrF,+FAAwF;AAGxF,wCAA4D;AAC5D,wDAAqD;AAErD;;GAEG;AACH,SAAgB,sCAAsC,CACpD,oBAA4B,EAC5B,qBAAuD,EACvD,GAAuB,EACvB,aAAwC;IAExC,OAAO,IAAI,iCAAe,CAAC;QACzB,aAAa,EAAE,oBAAoB;QACnC,aAAa,EAAE,qBAAqB;QACpC,GAAG;QACH,aAAa;QACb,2BAA2B,EAAE,CAAC,KAAiC,EAAE,EAAE;YACjE,IAAI,CAAC,KAAK,EAAE;gBACV,OAAO;oBACL,CAAC,wCAA8B,CAAC,EAAE,GAAG;iBACtC,CAAC;aACH;YACD,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE;gBAC7B,OAAO,EAAE,CAAC;aACX;YACD,IACE,KAAK,CAAC,OAAO,CAAC,UAAU,CACtB,iDAAiD,CAClD,EACD;gBACA,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CACvC,iDAAiD,CAAC,MAAM,CACzD,CAAC;gBACF,OAAO;oBACL,CAAC,wCAA8B,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC;iBACpD,CAAC;aACH;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAnCD,wFAmCC;AAED;;;;;;GAMG;AACH,SAAgB,qCAAqC,CACnD,MAA8B,EAC9B,UAA2C,EAC3C,oBAA4B,EAC5B,qBAAuD,EACvD,aAAwC,EACxC,kBAA0B,EAC1B,eAAuC;IAEvC,MAAM,OAAO,GAAG,IAAA,qEAA+B,EAC7C,MAAM,EACN,kBAAkB,EAClB,eAAe,CAChB,CAAC;IAEF,OAAO,IAAA,iEAA6B,EAClC,OAAO,EACP,UAAU,EACV,sCAAsC,CACpC,oBAAoB,EACpB,qBAAqB,EACrB,OAAO,CAAC,GAAG,EACX,MAAM,CAAC,oBAAoB,CAC5B,CACF,CAAC;AACJ,CAAC;AAzBD,sFAyBC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { MeterProvider } from '@opentelemetry/api';\nimport type {\n IExporterMetricsHelper,\n ISerializer,\n} from '@opentelemetry/otlp-transformer';\nimport { createOtlpFetchExportDelegate } from '../otlp-browser-http-export-delegate';\nimport { convertLegacyBrowserHttpOptions } from './convert-legacy-browser-http-options';\nimport type { IOtlpExportDelegate } from '../otlp-export-delegate';\nimport type { OTLPExporterConfigBase } from './legacy-base-configuration';\nimport { ATTR_HTTP_RESPONSE_STATUS_CODE } from '../semconv';\nimport { ExporterMetrics } from '../ExporterMetrics';\n\n/**\n * @deprecated\n */\nexport function createLegacyOtlpBrowserExporterMetrics<Internal>(\n metricsComponentType: string,\n exporterMetricsHelper: IExporterMetricsHelper<Internal>,\n url: string | undefined,\n meterProvider: MeterProvider | undefined\n): ExporterMetrics<Internal> {\n return new ExporterMetrics({\n componentType: metricsComponentType,\n metricsHelper: exporterMetricsHelper,\n url,\n meterProvider,\n responseAttributesFromError: (error: Error | string | undefined) => {\n if (!error) {\n return {\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: 200,\n };\n }\n if (!(error instanceof Error)) {\n return {};\n }\n if (\n error.message.startsWith(\n 'Fetch request failed with non-retryable status '\n )\n ) {\n const statusStr = error.message.substring(\n 'Fetch request failed with non-retryable status '.length\n );\n return {\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: Number(statusStr),\n };\n }\n return {};\n },\n });\n}\n\n/**\n * @deprecated\n * @param config\n * @param serializer\n * @param signalResourcePath\n * @param requiredHeaders\n */\nexport function createLegacyOtlpBrowserExportDelegate<Internal, Response>(\n config: OTLPExporterConfigBase,\n serializer: ISerializer<Internal, Response>,\n metricsComponentType: string,\n exporterMetricsHelper: IExporterMetricsHelper<Internal>,\n meterProvider: MeterProvider | undefined,\n signalResourcePath: string,\n requiredHeaders: Record<string, string>\n): IOtlpExportDelegate<Internal> {\n const options = convertLegacyBrowserHttpOptions(\n config,\n signalResourcePath,\n requiredHeaders\n );\n\n return createOtlpFetchExportDelegate(\n options,\n serializer,\n createLegacyOtlpBrowserExporterMetrics(\n metricsComponentType,\n exporterMetricsHelper,\n options.url,\n config.selfObsMeterProvider\n )\n );\n}\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { MeterProvider } from '@opentelemetry/api';
|
|
1
2
|
import type { HeadersFactory } from './otlp-http-configuration';
|
|
2
3
|
export interface OTLPExporterConfigBase {
|
|
3
4
|
/**
|
|
@@ -30,5 +31,10 @@ export interface OTLPExporterConfigBase {
|
|
|
30
31
|
/** Maximum time the OTLP exporter will wait for each batch export.
|
|
31
32
|
* The default value is 10000ms. */
|
|
32
33
|
timeoutMillis?: number;
|
|
34
|
+
/**
|
|
35
|
+
* MeterProvider to record metrics for the exporter itself.
|
|
36
|
+
* @experimental This option is experimental and is subject to breaking changes in minor releases.
|
|
37
|
+
*/
|
|
38
|
+
selfObsMeterProvider?: MeterProvider;
|
|
33
39
|
}
|
|
34
40
|
//# sourceMappingURL=legacy-base-configuration.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-base-configuration.js","sourceRoot":"","sources":["../../../src/configuration/legacy-base-configuration.ts"],"names":[],"mappings":"","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { HeadersFactory } from './otlp-http-configuration';\n\nexport interface OTLPExporterConfigBase {\n /**\n * Custom headers that will be attached to the HTTP request that's sent to the endpoint.\n *\n * @remarks\n * Prefer using a plain object over a factory function wherever possible.\n * If using a factory function (`HttpAgentFactory`), **do not import `http` or `https` at the top of the file**\n * Instead, use dynamic `import()` or `require()` to load the module. This ensures that the `http` or `https`\n * module is not loaded before `@opentelemetry/instrumentation-http` can instrument it.\n *\n * Functions passed to the exporter MUST NOT throw errors.\n *\n * @example <caption> Using headers options directly: </caption>\n * headers: {\n * Authorization: \"Api-Token my-secret-token\",\n * }\n *\n * @example <caption> Using a custom factory function </caption>\n * headers: async () => {\n * // ... do whatever you need to obtain the headers, ensuring you `await import('your-library')` to avoid breaking instrumentations ...\n * return {\n * Authorization: `Bearer ${token}`,\n * };\n * };\n */\n headers?: Record<string, string> | HeadersFactory;\n url?: string;\n concurrencyLimit?: number;\n /** Maximum time the OTLP exporter will wait for each batch export.\n * The default value is 10000ms. */\n timeoutMillis?: number;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"legacy-base-configuration.js","sourceRoot":"","sources":["../../../src/configuration/legacy-base-configuration.ts"],"names":[],"mappings":"","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { MeterProvider } from '@opentelemetry/api';\nimport type { HeadersFactory } from './otlp-http-configuration';\n\nexport interface OTLPExporterConfigBase {\n /**\n * Custom headers that will be attached to the HTTP request that's sent to the endpoint.\n *\n * @remarks\n * Prefer using a plain object over a factory function wherever possible.\n * If using a factory function (`HttpAgentFactory`), **do not import `http` or `https` at the top of the file**\n * Instead, use dynamic `import()` or `require()` to load the module. This ensures that the `http` or `https`\n * module is not loaded before `@opentelemetry/instrumentation-http` can instrument it.\n *\n * Functions passed to the exporter MUST NOT throw errors.\n *\n * @example <caption> Using headers options directly: </caption>\n * headers: {\n * Authorization: \"Api-Token my-secret-token\",\n * }\n *\n * @example <caption> Using a custom factory function </caption>\n * headers: async () => {\n * // ... do whatever you need to obtain the headers, ensuring you `await import('your-library')` to avoid breaking instrumentations ...\n * return {\n * Authorization: `Bearer ${token}`,\n * };\n * };\n */\n headers?: Record<string, string> | HeadersFactory;\n url?: string;\n concurrencyLimit?: number;\n /** Maximum time the OTLP exporter will wait for each batch export.\n * The default value is 10000ms. */\n timeoutMillis?: number;\n\n /**\n * MeterProvider to record metrics for the exporter itself.\n * @experimental This option is experimental and is subject to breaking changes in minor releases.\n */\n selfObsMeterProvider?: MeterProvider;\n}\n"]}
|
|
@@ -9,5 +9,5 @@ var CompressionAlgorithm;
|
|
|
9
9
|
(function (CompressionAlgorithm) {
|
|
10
10
|
CompressionAlgorithm["NONE"] = "none";
|
|
11
11
|
CompressionAlgorithm["GZIP"] = "gzip";
|
|
12
|
-
})(CompressionAlgorithm
|
|
12
|
+
})(CompressionAlgorithm || (exports.CompressionAlgorithm = CompressionAlgorithm = {}));
|
|
13
13
|
//# sourceMappingURL=legacy-node-configuration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-node-configuration.js","sourceRoot":"","sources":["../../../src/configuration/legacy-node-configuration.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA8CH,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,qCAAa,CAAA;IACb,qCAAa,CAAA;AACf,CAAC,EAHW,oBAAoB,
|
|
1
|
+
{"version":3,"file":"legacy-node-configuration.js","sourceRoot":"","sources":["../../../src/configuration/legacy-node-configuration.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA8CH,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,qCAAa,CAAA;IACb,qCAAa,CAAA;AACf,CAAC,EAHW,oBAAoB,oCAApB,oBAAoB,QAG/B","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// NOTE: do not change these imports to be actual imports, otherwise they WILL break `@opentelemetry/instrumentation-http`\nimport type * as http from 'http';\nimport type * as https from 'https';\n\nimport type { OTLPExporterConfigBase } from './legacy-base-configuration';\nimport type { HttpAgentFactory } from './otlp-node-http-configuration';\n\n/**\n * Collector Exporter node base config\n */\nexport interface OTLPExporterNodeConfigBase extends OTLPExporterConfigBase {\n keepAlive?: boolean;\n compression?: CompressionAlgorithm;\n /**\n * Custom HTTP agent options or a factory function for creating agents.\n *\n * @remarks\n * Prefer using `http.AgentOptions` or `https.AgentOptions` over a factory function wherever possible.\n * If using a factory function (`HttpAgentFactory`), **do not import `http.Agent` or `https.Agent`\n * statically at the top of the file**.\n * Instead, use dynamic `import()` or `require()` to load the module. This ensures that the `http` or `https`\n * module is not loaded before `@opentelemetry/instrumentation-http` can instrument it.\n *\n * @example <caption> Using agent options directly: </caption>\n * httpAgentOptions: {\n * keepAlive: true,\n * maxSockets: 10\n * }\n *\n * @example <caption> Using a factory with dynamic import: </caption>\n * httpAgentOptions: async (protocol) => {\n * const module = protocol === 'http:' ? await import('http') : await import('https');\n * return new module.Agent({ keepAlive: true });\n * }\n */\n httpAgentOptions?: http.AgentOptions | https.AgentOptions | HttpAgentFactory;\n /**\n * User agent header string to be prepended to the exporter's default value.\n * Availablie since v1.49.0 of the spec.\n * Ref: https://opentelemetry.io/docs/specs/otel/protocol/exporter/#user-agent\n */\n userAgent?: string;\n}\n\nexport enum CompressionAlgorithm {\n NONE = 'none',\n GZIP = 'gzip',\n}\n"]}
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export { createOtlpSendBeaconExportDelegate } from './otlp-browser-http-export-delegate';
|
|
5
5
|
export { convertLegacyBrowserHttpOptions } from './configuration/convert-legacy-browser-http-options';
|
|
6
|
-
export { createLegacyOtlpBrowserExportDelegate } from './configuration/create-legacy-browser-delegate';
|
|
6
|
+
export { createLegacyOtlpBrowserExportDelegate, createLegacyOtlpBrowserExporterMetrics, } from './configuration/create-legacy-browser-delegate';
|
|
7
7
|
//# sourceMappingURL=index-browser-http.d.ts.map
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.createLegacyOtlpBrowserExportDelegate = exports.convertLegacyBrowserHttpOptions = exports.createOtlpSendBeaconExportDelegate = void 0;
|
|
7
|
+
exports.createLegacyOtlpBrowserExporterMetrics = exports.createLegacyOtlpBrowserExportDelegate = exports.convertLegacyBrowserHttpOptions = exports.createOtlpSendBeaconExportDelegate = void 0;
|
|
8
8
|
/**
|
|
9
9
|
* @deprecated Use `createOtlpFetchExportDelegate` instead.
|
|
10
10
|
*/
|
|
@@ -14,4 +14,5 @@ var convert_legacy_browser_http_options_1 = require("./configuration/convert-leg
|
|
|
14
14
|
Object.defineProperty(exports, "convertLegacyBrowserHttpOptions", { enumerable: true, get: function () { return convert_legacy_browser_http_options_1.convertLegacyBrowserHttpOptions; } });
|
|
15
15
|
var create_legacy_browser_delegate_1 = require("./configuration/create-legacy-browser-delegate");
|
|
16
16
|
Object.defineProperty(exports, "createLegacyOtlpBrowserExportDelegate", { enumerable: true, get: function () { return create_legacy_browser_delegate_1.createLegacyOtlpBrowserExportDelegate; } });
|
|
17
|
+
Object.defineProperty(exports, "createLegacyOtlpBrowserExporterMetrics", { enumerable: true, get: function () { return create_legacy_browser_delegate_1.createLegacyOtlpBrowserExporterMetrics; } });
|
|
17
18
|
//# sourceMappingURL=index-browser-http.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-browser-http.js","sourceRoot":"","sources":["../../src/index-browser-http.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH;;GAEG;AACH,yFAAyF;AAAhF,uJAAA,kCAAkC,OAAA;AAE3C,2GAAsG;AAA7F,sJAAA,+BAA+B,OAAA;AACxC,
|
|
1
|
+
{"version":3,"file":"index-browser-http.js","sourceRoot":"","sources":["../../src/index-browser-http.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH;;GAEG;AACH,yFAAyF;AAAhF,uJAAA,kCAAkC,OAAA;AAE3C,2GAAsG;AAA7F,sJAAA,+BAA+B,OAAA;AACxC,iGAGwD;AAFtD,uJAAA,qCAAqC,OAAA;AACrC,wJAAA,sCAAsC,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @deprecated Use `createOtlpFetchExportDelegate` instead.\n */\nexport { createOtlpSendBeaconExportDelegate } from './otlp-browser-http-export-delegate';\n\nexport { convertLegacyBrowserHttpOptions } from './configuration/convert-legacy-browser-http-options';\nexport {\n createLegacyOtlpBrowserExportDelegate,\n createLegacyOtlpBrowserExporterMetrics,\n} from './configuration/create-legacy-browser-delegate';\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { httpAgentFactoryFromOptions } from './configuration/otlp-node-http-configuration';
|
|
2
|
-
export { createOtlpHttpExportDelegate } from './otlp-http-export-delegate';
|
|
2
|
+
export { createOtlpHttpExportDelegate, createOtlpHttpExporterMetrics, } from './otlp-http-export-delegate';
|
|
3
3
|
export { getSharedConfigurationFromEnvironment } from './configuration/shared-env-configuration';
|
|
4
4
|
export { convertLegacyHttpOptions } from './configuration/convert-legacy-node-http-options';
|
|
5
5
|
//# sourceMappingURL=index-node-http.d.ts.map
|
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.convertLegacyHttpOptions = exports.getSharedConfigurationFromEnvironment = exports.createOtlpHttpExportDelegate = exports.httpAgentFactoryFromOptions = void 0;
|
|
7
|
+
exports.convertLegacyHttpOptions = exports.getSharedConfigurationFromEnvironment = exports.createOtlpHttpExporterMetrics = exports.createOtlpHttpExportDelegate = exports.httpAgentFactoryFromOptions = void 0;
|
|
8
8
|
var otlp_node_http_configuration_1 = require("./configuration/otlp-node-http-configuration");
|
|
9
9
|
Object.defineProperty(exports, "httpAgentFactoryFromOptions", { enumerable: true, get: function () { return otlp_node_http_configuration_1.httpAgentFactoryFromOptions; } });
|
|
10
10
|
var otlp_http_export_delegate_1 = require("./otlp-http-export-delegate");
|
|
11
11
|
Object.defineProperty(exports, "createOtlpHttpExportDelegate", { enumerable: true, get: function () { return otlp_http_export_delegate_1.createOtlpHttpExportDelegate; } });
|
|
12
|
+
Object.defineProperty(exports, "createOtlpHttpExporterMetrics", { enumerable: true, get: function () { return otlp_http_export_delegate_1.createOtlpHttpExporterMetrics; } });
|
|
12
13
|
var shared_env_configuration_1 = require("./configuration/shared-env-configuration");
|
|
13
14
|
Object.defineProperty(exports, "getSharedConfigurationFromEnvironment", { enumerable: true, get: function () { return shared_env_configuration_1.getSharedConfigurationFromEnvironment; } });
|
|
14
15
|
var convert_legacy_node_http_options_1 = require("./configuration/convert-legacy-node-http-options");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-node-http.js","sourceRoot":"","sources":["../../src/index-node-http.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,6FAA2F;AAAlF,2IAAA,2BAA2B,OAAA;AACpC,
|
|
1
|
+
{"version":3,"file":"index-node-http.js","sourceRoot":"","sources":["../../src/index-node-http.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,6FAA2F;AAAlF,2IAAA,2BAA2B,OAAA;AACpC,yEAGqC;AAFnC,yIAAA,4BAA4B,OAAA;AAC5B,0IAAA,6BAA6B,OAAA;AAE/B,qFAAiG;AAAxF,iJAAA,qCAAqC,OAAA;AAC9C,qGAA4F;AAAnF,4IAAA,wBAAwB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport { httpAgentFactoryFromOptions } from './configuration/otlp-node-http-configuration';\nexport {\n createOtlpHttpExportDelegate,\n createOtlpHttpExporterMetrics,\n} from './otlp-http-export-delegate';\nexport { getSharedConfigurationFromEnvironment } from './configuration/shared-env-configuration';\nexport { convertLegacyHttpOptions } from './configuration/convert-legacy-node-http-options';\n"]}
|
package/build/src/index.d.ts
CHANGED
|
@@ -9,4 +9,5 @@ export type { OTLPExporterNodeConfigBase } from './configuration/legacy-node-con
|
|
|
9
9
|
export type { OTLPExporterConfigBase } from './configuration/legacy-base-configuration';
|
|
10
10
|
export type { IOtlpExportDelegate } from './otlp-export-delegate';
|
|
11
11
|
export { createOtlpNetworkExportDelegate } from './otlp-network-export-delegate';
|
|
12
|
+
export { ExporterMetrics } from './ExporterMetrics';
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
package/build/src/index.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.createOtlpNetworkExportDelegate = exports.CompressionAlgorithm = exports.getSharedConfigurationDefaults = exports.mergeOtlpSharedConfigurationWithDefaults = exports.OTLPExporterError = exports.OTLPExporterBase = void 0;
|
|
7
|
+
exports.ExporterMetrics = exports.createOtlpNetworkExportDelegate = exports.CompressionAlgorithm = exports.getSharedConfigurationDefaults = exports.mergeOtlpSharedConfigurationWithDefaults = exports.OTLPExporterError = exports.OTLPExporterBase = void 0;
|
|
8
8
|
var OTLPExporterBase_1 = require("./OTLPExporterBase");
|
|
9
9
|
Object.defineProperty(exports, "OTLPExporterBase", { enumerable: true, get: function () { return OTLPExporterBase_1.OTLPExporterBase; } });
|
|
10
10
|
var types_1 = require("./types");
|
|
@@ -16,4 +16,6 @@ var legacy_node_configuration_1 = require("./configuration/legacy-node-configura
|
|
|
16
16
|
Object.defineProperty(exports, "CompressionAlgorithm", { enumerable: true, get: function () { return legacy_node_configuration_1.CompressionAlgorithm; } });
|
|
17
17
|
var otlp_network_export_delegate_1 = require("./otlp-network-export-delegate");
|
|
18
18
|
Object.defineProperty(exports, "createOtlpNetworkExportDelegate", { enumerable: true, get: function () { return otlp_network_export_delegate_1.createOtlpNetworkExportDelegate; } });
|
|
19
|
+
var ExporterMetrics_1 = require("./ExporterMetrics");
|
|
20
|
+
Object.defineProperty(exports, "ExporterMetrics", { enumerable: true, get: function () { return ExporterMetrics_1.ExporterMetrics; } });
|
|
19
21
|
//# sourceMappingURL=index.js.map
|
package/build/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,iCAA4C;AAAnC,0GAAA,iBAAiB,OAAA;AAW1B,6EAG8C;AAF5C,gJAAA,wCAAwC,OAAA;AACxC,sIAAA,8BAA8B,OAAA;AAIhC,uFAAiF;AAAxE,iIAAA,oBAAoB,OAAA;AAI7B,+EAAiF;AAAxE,+IAAA,+BAA+B,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport { OTLPExporterBase } from './OTLPExporterBase';\nexport { OTLPExporterError } from './types';\n\nexport type {\n ExportResponse,\n ExportResponseFailure,\n ExportResponseSuccess,\n ExportResponseRetryable,\n} from './export-response';\n\nexport type { IExporterTransport } from './exporter-transport';\n\nexport {\n mergeOtlpSharedConfigurationWithDefaults,\n getSharedConfigurationDefaults,\n} from './configuration/shared-configuration';\nexport type { OtlpSharedConfiguration } from './configuration/shared-configuration';\n\nexport { CompressionAlgorithm } from './configuration/legacy-node-configuration';\nexport type { OTLPExporterNodeConfigBase } from './configuration/legacy-node-configuration';\nexport type { OTLPExporterConfigBase } from './configuration/legacy-base-configuration';\nexport type { IOtlpExportDelegate } from './otlp-export-delegate';\nexport { createOtlpNetworkExportDelegate } from './otlp-network-export-delegate';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,iCAA4C;AAAnC,0GAAA,iBAAiB,OAAA;AAW1B,6EAG8C;AAF5C,gJAAA,wCAAwC,OAAA;AACxC,sIAAA,8BAA8B,OAAA;AAIhC,uFAAiF;AAAxE,iIAAA,oBAAoB,OAAA;AAI7B,+EAAiF;AAAxE,+IAAA,+BAA+B,OAAA;AAExC,qDAAoD;AAA3C,kHAAA,eAAe,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport { OTLPExporterBase } from './OTLPExporterBase';\nexport { OTLPExporterError } from './types';\n\nexport type {\n ExportResponse,\n ExportResponseFailure,\n ExportResponseSuccess,\n ExportResponseRetryable,\n} from './export-response';\n\nexport type { IExporterTransport } from './exporter-transport';\n\nexport {\n mergeOtlpSharedConfigurationWithDefaults,\n getSharedConfigurationDefaults,\n} from './configuration/shared-configuration';\nexport type { OtlpSharedConfiguration } from './configuration/shared-configuration';\n\nexport { CompressionAlgorithm } from './configuration/legacy-node-configuration';\nexport type { OTLPExporterNodeConfigBase } from './configuration/legacy-node-configuration';\nexport type { OTLPExporterConfigBase } from './configuration/legacy-base-configuration';\nexport type { IOtlpExportDelegate } from './otlp-export-delegate';\nexport { createOtlpNetworkExportDelegate } from './otlp-network-export-delegate';\n\nexport { ExporterMetrics } from './ExporterMetrics';\n"]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { OtlpHttpConfiguration } from './configuration/otlp-http-configuration';
|
|
2
2
|
import type { ISerializer } from '@opentelemetry/otlp-transformer';
|
|
3
3
|
import type { IOtlpExportDelegate } from './otlp-export-delegate';
|
|
4
|
-
|
|
4
|
+
import { type ExporterMetrics } from './ExporterMetrics';
|
|
5
|
+
export declare function createOtlpFetchExportDelegate<Internal, Response>(options: OtlpHttpConfiguration, serializer: ISerializer<Internal, Response>, metrics: ExporterMetrics<Internal>): IOtlpExportDelegate<Internal>;
|
|
5
6
|
/**
|
|
6
7
|
* @deprecated Use {@link createOtlpFetchExportDelegate} instead. Modern browsers use `fetch` with `keepAlive: true` when `sendBeacon` is used. Use a `fetch` polyfill that mimics this behavior to keep using `sendBeacon`.
|
|
7
8
|
*/
|
|
8
|
-
export declare function createOtlpSendBeaconExportDelegate<Internal, Response>(options: OtlpHttpConfiguration, serializer: ISerializer<Internal, Response>): IOtlpExportDelegate<Internal>;
|
|
9
|
+
export declare function createOtlpSendBeaconExportDelegate<Internal, Response>(options: OtlpHttpConfiguration, serializer: ISerializer<Internal, Response>, metrics: ExporterMetrics<Internal>): IOtlpExportDelegate<Internal>;
|
|
9
10
|
//# sourceMappingURL=otlp-browser-http-export-delegate.d.ts.map
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright The OpenTelemetry Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
2
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
7
|
exports.createOtlpSendBeaconExportDelegate = exports.createOtlpFetchExportDelegate = void 0;
|
|
4
8
|
const retrying_transport_1 = require("./retrying-transport");
|
|
5
9
|
const otlp_network_export_delegate_1 = require("./otlp-network-export-delegate");
|
|
6
10
|
const fetch_transport_1 = require("./transport/fetch-transport");
|
|
7
|
-
function createOtlpFetchExportDelegate(options, serializer) {
|
|
8
|
-
return (0, otlp_network_export_delegate_1.createOtlpNetworkExportDelegate)(options, serializer, (0, retrying_transport_1.createRetryingTransport)({
|
|
11
|
+
function createOtlpFetchExportDelegate(options, serializer, metrics) {
|
|
12
|
+
return (0, otlp_network_export_delegate_1.createOtlpNetworkExportDelegate)(options, serializer, metrics, (0, retrying_transport_1.createRetryingTransport)({
|
|
9
13
|
transport: (0, fetch_transport_1.createFetchTransport)(options),
|
|
10
14
|
}));
|
|
11
15
|
}
|
|
@@ -13,8 +17,8 @@ exports.createOtlpFetchExportDelegate = createOtlpFetchExportDelegate;
|
|
|
13
17
|
/**
|
|
14
18
|
* @deprecated Use {@link createOtlpFetchExportDelegate} instead. Modern browsers use `fetch` with `keepAlive: true` when `sendBeacon` is used. Use a `fetch` polyfill that mimics this behavior to keep using `sendBeacon`.
|
|
15
19
|
*/
|
|
16
|
-
function createOtlpSendBeaconExportDelegate(options, serializer) {
|
|
17
|
-
return createOtlpFetchExportDelegate(options, serializer);
|
|
20
|
+
function createOtlpSendBeaconExportDelegate(options, serializer, metrics) {
|
|
21
|
+
return createOtlpFetchExportDelegate(options, serializer, metrics);
|
|
18
22
|
}
|
|
19
23
|
exports.createOtlpSendBeaconExportDelegate = createOtlpSendBeaconExportDelegate;
|
|
20
24
|
//# sourceMappingURL=otlp-browser-http-export-delegate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otlp-browser-http-export-delegate.js","sourceRoot":"","sources":["../../src/otlp-browser-http-export-delegate.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"otlp-browser-http-export-delegate.js","sourceRoot":"","sources":["../../src/otlp-browser-http-export-delegate.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAKH,6DAA+D;AAC/D,iFAAiF;AACjF,iEAAmE;AAGnE,SAAgB,6BAA6B,CAC3C,OAA8B,EAC9B,UAA2C,EAC3C,OAAkC;IAElC,OAAO,IAAA,8DAA+B,EACpC,OAAO,EACP,UAAU,EACV,OAAO,EACP,IAAA,4CAAuB,EAAC;QACtB,SAAS,EAAE,IAAA,sCAAoB,EAAC,OAAO,CAAC;KACzC,CAAC,CACH,CAAC;AACJ,CAAC;AAbD,sEAaC;AAED;;GAEG;AACH,SAAgB,kCAAkC,CAChD,OAA8B,EAC9B,UAA2C,EAC3C,OAAkC;IAElC,OAAO,6BAA6B,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC;AAND,gFAMC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { OtlpHttpConfiguration } from './configuration/otlp-http-configuration';\nimport type { ISerializer } from '@opentelemetry/otlp-transformer';\nimport type { IOtlpExportDelegate } from './otlp-export-delegate';\nimport { createRetryingTransport } from './retrying-transport';\nimport { createOtlpNetworkExportDelegate } from './otlp-network-export-delegate';\nimport { createFetchTransport } from './transport/fetch-transport';\nimport { type ExporterMetrics } from './ExporterMetrics';\n\nexport function createOtlpFetchExportDelegate<Internal, Response>(\n options: OtlpHttpConfiguration,\n serializer: ISerializer<Internal, Response>,\n metrics: ExporterMetrics<Internal>\n): IOtlpExportDelegate<Internal> {\n return createOtlpNetworkExportDelegate(\n options,\n serializer,\n metrics,\n createRetryingTransport({\n transport: createFetchTransport(options),\n })\n );\n}\n\n/**\n * @deprecated Use {@link createOtlpFetchExportDelegate} instead. Modern browsers use `fetch` with `keepAlive: true` when `sendBeacon` is used. Use a `fetch` polyfill that mimics this behavior to keep using `sendBeacon`.\n */\nexport function createOtlpSendBeaconExportDelegate<Internal, Response>(\n options: OtlpHttpConfiguration,\n serializer: ISerializer<Internal, Response>,\n metrics: ExporterMetrics<Internal>\n): IOtlpExportDelegate<Internal> {\n return createOtlpFetchExportDelegate(options, serializer, metrics);\n}\n"]}
|
|
@@ -2,6 +2,7 @@ import type { ExportResult } from '@opentelemetry/core';
|
|
|
2
2
|
import type { IExporterTransport } from './exporter-transport';
|
|
3
3
|
import type { IExportPromiseHandler } from './bounded-queue-export-promise-handler';
|
|
4
4
|
import type { ISerializer } from '@opentelemetry/otlp-transformer';
|
|
5
|
+
import { type ExporterMetrics } from './ExporterMetrics';
|
|
5
6
|
/**
|
|
6
7
|
* Internally shared export logic for OTLP.
|
|
7
8
|
*/
|
|
@@ -9,6 +10,7 @@ export interface IOtlpExportDelegate<Internal> {
|
|
|
9
10
|
export(internalRepresentation: Internal, resultCallback: (result: ExportResult) => void): void;
|
|
10
11
|
forceFlush(): Promise<void>;
|
|
11
12
|
shutdown(): Promise<void>;
|
|
13
|
+
setMetrics(metrics: ExporterMetrics<Internal>): void;
|
|
12
14
|
}
|
|
13
15
|
/**
|
|
14
16
|
* Creates a generic delegate for OTLP exports which only contains parts of the OTLP export that are shared across all
|
|
@@ -18,6 +20,7 @@ export declare function createOtlpExportDelegate<Internal, Response>(components:
|
|
|
18
20
|
transport: IExporterTransport;
|
|
19
21
|
serializer: ISerializer<Internal, Response>;
|
|
20
22
|
promiseHandler: IExportPromiseHandler;
|
|
23
|
+
metrics: ExporterMetrics<Internal>;
|
|
21
24
|
}, settings: {
|
|
22
25
|
timeout: number;
|
|
23
26
|
}): IOtlpExportDelegate<Internal>;
|
|
@@ -10,13 +10,14 @@ const types_1 = require("./types");
|
|
|
10
10
|
const logging_response_handler_1 = require("./logging-response-handler");
|
|
11
11
|
const api_1 = require("@opentelemetry/api");
|
|
12
12
|
class OTLPExportDelegate {
|
|
13
|
+
_metrics;
|
|
13
14
|
_diagLogger;
|
|
14
15
|
_transport;
|
|
15
16
|
_serializer;
|
|
16
17
|
_responseHandler;
|
|
17
18
|
_promiseQueue;
|
|
18
19
|
_timeout;
|
|
19
|
-
constructor(transport, serializer, responseHandler, promiseQueue, timeout) {
|
|
20
|
+
constructor(transport, serializer, responseHandler, promiseQueue, metrics, timeout) {
|
|
20
21
|
this._transport = transport;
|
|
21
22
|
this._serializer = serializer;
|
|
22
23
|
this._responseHandler = responseHandler;
|
|
@@ -25,6 +26,7 @@ class OTLPExportDelegate {
|
|
|
25
26
|
this._diagLogger = api_1.diag.createComponentLogger({
|
|
26
27
|
namespace: 'OTLPExportDelegate',
|
|
27
28
|
});
|
|
29
|
+
this._metrics = metrics;
|
|
28
30
|
}
|
|
29
31
|
export(internalRepresentation, resultCallback) {
|
|
30
32
|
this._diagLogger.debug('items to be sent', internalRepresentation);
|
|
@@ -44,8 +46,10 @@ class OTLPExportDelegate {
|
|
|
44
46
|
});
|
|
45
47
|
return;
|
|
46
48
|
}
|
|
49
|
+
const finishExport = this._metrics.startExport(internalRepresentation);
|
|
47
50
|
this._promiseQueue.pushPromise(this._transport.send(serializedRequest, this._timeout).then(response => {
|
|
48
51
|
if (response.status === 'success') {
|
|
52
|
+
finishExport(undefined);
|
|
49
53
|
if (response.data != null) {
|
|
50
54
|
try {
|
|
51
55
|
this._responseHandler.handleResponse(this._serializer.deserializeResponse(response.data));
|
|
@@ -61,6 +65,7 @@ class OTLPExportDelegate {
|
|
|
61
65
|
return;
|
|
62
66
|
}
|
|
63
67
|
else if (response.status === 'failure' && response.error) {
|
|
68
|
+
finishExport(response.error);
|
|
64
69
|
resultCallback({
|
|
65
70
|
code: core_1.ExportResultCode.FAILED,
|
|
66
71
|
error: response.error,
|
|
@@ -68,6 +73,7 @@ class OTLPExportDelegate {
|
|
|
68
73
|
return;
|
|
69
74
|
}
|
|
70
75
|
else if (response.status === 'retryable') {
|
|
76
|
+
finishExport('export_max_retries');
|
|
71
77
|
resultCallback({
|
|
72
78
|
code: core_1.ExportResultCode.FAILED,
|
|
73
79
|
error: response.error ??
|
|
@@ -75,19 +81,26 @@ class OTLPExportDelegate {
|
|
|
75
81
|
});
|
|
76
82
|
}
|
|
77
83
|
else {
|
|
84
|
+
finishExport('export_failed');
|
|
78
85
|
resultCallback({
|
|
79
86
|
code: core_1.ExportResultCode.FAILED,
|
|
80
87
|
error: new types_1.OTLPExporterError('Export failed with unknown error'),
|
|
81
88
|
});
|
|
82
89
|
}
|
|
83
|
-
}, reason =>
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
90
|
+
}, reason => {
|
|
91
|
+
finishExport(reason);
|
|
92
|
+
resultCallback({
|
|
93
|
+
code: core_1.ExportResultCode.FAILED,
|
|
94
|
+
error: reason,
|
|
95
|
+
});
|
|
96
|
+
}));
|
|
87
97
|
}
|
|
88
98
|
forceFlush() {
|
|
89
99
|
return this._promiseQueue.awaitAll();
|
|
90
100
|
}
|
|
101
|
+
setMetrics(metrics) {
|
|
102
|
+
this._metrics = metrics;
|
|
103
|
+
}
|
|
91
104
|
async shutdown() {
|
|
92
105
|
this._diagLogger.debug('shutdown started');
|
|
93
106
|
await this.forceFlush();
|
|
@@ -99,7 +112,7 @@ class OTLPExportDelegate {
|
|
|
99
112
|
* signals.
|
|
100
113
|
*/
|
|
101
114
|
function createOtlpExportDelegate(components, settings) {
|
|
102
|
-
return new OTLPExportDelegate(components.transport, components.serializer, (0, logging_response_handler_1.createLoggingPartialSuccessResponseHandler)(), components.promiseHandler, settings.timeout);
|
|
115
|
+
return new OTLPExportDelegate(components.transport, components.serializer, (0, logging_response_handler_1.createLoggingPartialSuccessResponseHandler)(), components.promiseHandler, components.metrics, settings.timeout);
|
|
103
116
|
}
|
|
104
117
|
exports.createOtlpExportDelegate = createOtlpExportDelegate;
|
|
105
118
|
//# sourceMappingURL=otlp-export-delegate.js.map
|