@opentelemetry/sdk-node 0.54.1 → 0.55.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/README.md +5 -0
- package/build/src/sdk.d.ts +1 -0
- package/build/src/sdk.js +21 -22
- package/build/src/sdk.js.map +1 -1
- package/build/src/types.d.ts +1 -0
- package/build/src/types.js.map +1 -1
- package/build/src/utils.d.ts +3 -0
- package/build/src/utils.js +87 -1
- package/build/src/utils.js.map +1 -1
- 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 +21 -21
- package/build/src/TracerProviderWithEnvExporter.d.ts +0 -17
- package/build/src/TracerProviderWithEnvExporter.js +0 -136
- package/build/src/TracerProviderWithEnvExporter.js.map +0 -1
package/README.md
CHANGED
|
@@ -102,6 +102,11 @@ Deprecated, please use [logRecordProcessors](#logrecordprocessors) instead.
|
|
|
102
102
|
|
|
103
103
|
An array of log record processors to register to the logger provider.
|
|
104
104
|
|
|
105
|
+
### mergeResourceWithDefaults
|
|
106
|
+
|
|
107
|
+
Merge user-provided resources with the default resource. Default `true`.
|
|
108
|
+
The default will change to `false` in a future iteration of this package.
|
|
109
|
+
|
|
105
110
|
### metricReader
|
|
106
111
|
|
|
107
112
|
Add a [MetricReader](../opentelemetry-sdk-metrics/src/export/MetricReader.ts)
|
package/build/src/sdk.d.ts
CHANGED
package/build/src/sdk.js
CHANGED
|
@@ -28,7 +28,6 @@ const sdk_metrics_1 = require("@opentelemetry/sdk-metrics");
|
|
|
28
28
|
const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
|
|
29
29
|
const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
|
|
30
30
|
const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
|
|
31
|
-
const TracerProviderWithEnvExporter_1 = require("./TracerProviderWithEnvExporter");
|
|
32
31
|
const core_1 = require("@opentelemetry/core");
|
|
33
32
|
const utils_1 = require("./utils");
|
|
34
33
|
class NodeSDK {
|
|
@@ -36,7 +35,7 @@ class NodeSDK {
|
|
|
36
35
|
* Create a new NodeJS SDK instance
|
|
37
36
|
*/
|
|
38
37
|
constructor(configuration = {}) {
|
|
39
|
-
var _a, _b, _c, _d, _e, _f;
|
|
38
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
40
39
|
const env = (0, core_1.getEnv)();
|
|
41
40
|
const envWithoutDefaults = (0, core_1.getEnvWithoutDefaults)();
|
|
42
41
|
if (env.OTEL_SDK_DISABLED) {
|
|
@@ -53,7 +52,9 @@ class NodeSDK {
|
|
|
53
52
|
}
|
|
54
53
|
this._configuration = configuration;
|
|
55
54
|
this._resource = (_a = configuration.resource) !== null && _a !== void 0 ? _a : new resources_1.Resource({});
|
|
56
|
-
this.
|
|
55
|
+
this._mergeResourceWithDefaults =
|
|
56
|
+
(_b = configuration.mergeResourceWithDefaults) !== null && _b !== void 0 ? _b : true;
|
|
57
|
+
this._autoDetectResources = (_c = configuration.autoDetectResources) !== null && _c !== void 0 ? _c : true;
|
|
57
58
|
if (!this._autoDetectResources) {
|
|
58
59
|
this._resourceDetectors = [];
|
|
59
60
|
}
|
|
@@ -84,10 +85,10 @@ class NodeSDK {
|
|
|
84
85
|
if (configuration.spanProcessor) {
|
|
85
86
|
api_1.diag.warn("The 'spanProcessor' option is deprecated. Please use 'spanProcessors' instead.");
|
|
86
87
|
}
|
|
87
|
-
const spanProcessor = (
|
|
88
|
+
const spanProcessor = (_d = configuration.spanProcessor) !== null && _d !== void 0 ? _d :
|
|
88
89
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
89
90
|
new sdk_trace_base_1.BatchSpanProcessor(configuration.traceExporter);
|
|
90
|
-
const spanProcessors = (
|
|
91
|
+
const spanProcessors = (_e = configuration.spanProcessors) !== null && _e !== void 0 ? _e : [spanProcessor];
|
|
91
92
|
this._tracerProviderConfig = {
|
|
92
93
|
tracerConfig: tracerProviderConfig,
|
|
93
94
|
spanProcessors,
|
|
@@ -119,7 +120,7 @@ class NodeSDK {
|
|
|
119
120
|
}
|
|
120
121
|
this._meterProviderConfig = meterProviderConfig;
|
|
121
122
|
}
|
|
122
|
-
this._instrumentations = (
|
|
123
|
+
this._instrumentations = (_g = (_f = configuration.instrumentations) === null || _f === void 0 ? void 0 : _f.flat()) !== null && _g !== void 0 ? _g : [];
|
|
123
124
|
}
|
|
124
125
|
/**
|
|
125
126
|
* Call this method to construct SDK components and register them with the OpenTelemetry API.
|
|
@@ -144,27 +145,24 @@ class NodeSDK {
|
|
|
144
145
|
: this._resource.merge(new resources_1.Resource({
|
|
145
146
|
[semantic_conventions_1.SEMRESATTRS_SERVICE_NAME]: this._serviceName,
|
|
146
147
|
}));
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
: TracerProviderWithEnvExporter_1.TracerProviderWithEnvExporters;
|
|
148
|
+
const spanProcessors = this._tracerProviderConfig
|
|
149
|
+
? this._tracerProviderConfig.spanProcessors
|
|
150
|
+
: (0, utils_1.getSpanProcessorsFromEnv)();
|
|
151
151
|
// If the Provider is configured with Env Exporters, we need to check if the SDK had any manual configurations and set them here
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
if (
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
152
|
+
this._tracerProvider = new sdk_trace_node_1.NodeTracerProvider(Object.assign(Object.assign({}, this._configuration), { resource: this._resource, mergeResourceWithDefaults: this._mergeResourceWithDefaults, spanProcessors }));
|
|
153
|
+
// Only register if there is a span processor
|
|
154
|
+
if (spanProcessors.length > 0) {
|
|
155
|
+
this._tracerProvider.register({
|
|
156
|
+
contextManager: (_b = (_a = this._tracerProviderConfig) === null || _a === void 0 ? void 0 : _a.contextManager) !== null && _b !== void 0 ? _b :
|
|
157
|
+
// _tracerProviderConfig may be undefined if trace-specific settings are not provided - fall back to raw config
|
|
158
|
+
(_c = this._configuration) === null || _c === void 0 ? void 0 : _c.contextManager,
|
|
159
|
+
propagator: (_d = this._tracerProviderConfig) === null || _d === void 0 ? void 0 : _d.textMapPropagator,
|
|
160
|
+
});
|
|
158
161
|
}
|
|
159
|
-
tracerProvider.register({
|
|
160
|
-
contextManager: (_b = (_a = this._tracerProviderConfig) === null || _a === void 0 ? void 0 : _a.contextManager) !== null && _b !== void 0 ? _b :
|
|
161
|
-
// _tracerProviderConfig may be undefined if trace-specific settings are not provided - fall back to raw config
|
|
162
|
-
(_c = this._configuration) === null || _c === void 0 ? void 0 : _c.contextManager,
|
|
163
|
-
propagator: (_d = this._tracerProviderConfig) === null || _d === void 0 ? void 0 : _d.textMapPropagator,
|
|
164
|
-
});
|
|
165
162
|
if (this._loggerProviderConfig) {
|
|
166
163
|
const loggerProvider = new sdk_logs_1.LoggerProvider({
|
|
167
164
|
resource: this._resource,
|
|
165
|
+
mergeResourceWithDefaults: this._mergeResourceWithDefaults,
|
|
168
166
|
});
|
|
169
167
|
for (const logRecordProcessor of this._loggerProviderConfig
|
|
170
168
|
.logRecordProcessors) {
|
|
@@ -182,6 +180,7 @@ class NodeSDK {
|
|
|
182
180
|
resource: this._resource,
|
|
183
181
|
views: (_f = (_e = this._meterProviderConfig) === null || _e === void 0 ? void 0 : _e.views) !== null && _f !== void 0 ? _f : [],
|
|
184
182
|
readers: readers,
|
|
183
|
+
mergeResourceWithDefaults: this._mergeResourceWithDefaults,
|
|
185
184
|
});
|
|
186
185
|
this._meterProvider = meterProvider;
|
|
187
186
|
api_1.metrics.setGlobalMeterProvider(meterProvider);
|
package/build/src/sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ContextManager,\n TextMapPropagator,\n metrics,\n diag,\n DiagConsoleLogger,\n} from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport {\n Instrumentation,\n registerInstrumentations,\n} from '@opentelemetry/instrumentation';\nimport {\n Detector,\n DetectorSync,\n detectResourcesSync,\n envDetector,\n hostDetector,\n IResource,\n processDetector,\n Resource,\n ResourceDetectionConfig,\n} from '@opentelemetry/resources';\nimport {\n LogRecordProcessor,\n LoggerProvider,\n BatchLogRecordProcessor,\n ConsoleLogRecordExporter,\n LogRecordExporter,\n SimpleLogRecordProcessor,\n} from '@opentelemetry/sdk-logs';\nimport { OTLPLogExporter as OTLPHttpLogExporter } from '@opentelemetry/exporter-logs-otlp-http';\nimport { OTLPLogExporter as OTLPGrpcLogExporter } from '@opentelemetry/exporter-logs-otlp-grpc';\nimport { OTLPLogExporter as OTLPProtoLogExporter } from '@opentelemetry/exporter-logs-otlp-proto';\nimport { MeterProvider, MetricReader, View } from '@opentelemetry/sdk-metrics';\nimport {\n BatchSpanProcessor,\n SpanProcessor,\n} from '@opentelemetry/sdk-trace-base';\nimport {\n NodeTracerConfig,\n NodeTracerProvider,\n} from '@opentelemetry/sdk-trace-node';\nimport { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions';\nimport { NodeSDKConfiguration } from './types';\nimport { TracerProviderWithEnvExporters } from './TracerProviderWithEnvExporter';\nimport { getEnv, getEnvWithoutDefaults } from '@opentelemetry/core';\nimport { getResourceDetectorsFromEnv, filterBlanksAndNulls } from './utils';\n\n/** This class represents everything needed to register a fully configured OpenTelemetry Node.js SDK */\n\nexport type MeterProviderConfig = {\n /**\n * Reference to the MetricReader instance by the NodeSDK\n */\n reader?: MetricReader;\n /**\n * List of {@link View}s that should be passed to the MeterProvider\n */\n views?: View[];\n};\n\nexport type LoggerProviderConfig = {\n /**\n * Reference to the LoggerRecordProcessor instance by the NodeSDK\n */\n logRecordProcessors: LogRecordProcessor[];\n};\n\nexport class NodeSDK {\n private _tracerProviderConfig?: {\n tracerConfig: NodeTracerConfig;\n spanProcessors: SpanProcessor[];\n contextManager?: ContextManager;\n textMapPropagator?: TextMapPropagator;\n };\n private _loggerProviderConfig?: LoggerProviderConfig;\n private _meterProviderConfig?: MeterProviderConfig;\n private _instrumentations: Instrumentation[];\n\n private _resource: IResource;\n private _resourceDetectors: Array<Detector | DetectorSync>;\n\n private _autoDetectResources: boolean;\n\n private _tracerProvider?: NodeTracerProvider | TracerProviderWithEnvExporters;\n private _loggerProvider?: LoggerProvider;\n private _meterProvider?: MeterProvider;\n private _serviceName?: string;\n private _configuration?: Partial<NodeSDKConfiguration>;\n\n private _disabled?: boolean;\n\n /**\n * Create a new NodeJS SDK instance\n */\n public constructor(configuration: Partial<NodeSDKConfiguration> = {}) {\n const env = getEnv();\n const envWithoutDefaults = getEnvWithoutDefaults();\n\n if (env.OTEL_SDK_DISABLED) {\n this._disabled = true;\n // Functions with possible side-effects are set\n // to no-op via the _disabled flag\n }\n\n // Default is INFO, use environment without defaults to check\n // if the user originally set the environment variable.\n if (envWithoutDefaults.OTEL_LOG_LEVEL) {\n diag.setLogger(new DiagConsoleLogger(), {\n logLevel: envWithoutDefaults.OTEL_LOG_LEVEL,\n });\n }\n\n this._configuration = configuration;\n\n this._resource = configuration.resource ?? new Resource({});\n this._autoDetectResources = configuration.autoDetectResources ?? true;\n if (!this._autoDetectResources) {\n this._resourceDetectors = [];\n } else if (configuration.resourceDetectors != null) {\n this._resourceDetectors = configuration.resourceDetectors;\n } else if (process.env.OTEL_NODE_RESOURCE_DETECTORS != null) {\n this._resourceDetectors = getResourceDetectorsFromEnv();\n } else {\n this._resourceDetectors = [envDetector, processDetector, hostDetector];\n }\n\n this._serviceName = configuration.serviceName;\n\n // If a tracer provider can be created from manual configuration, create it\n if (\n configuration.traceExporter ||\n configuration.spanProcessor ||\n configuration.spanProcessors\n ) {\n const tracerProviderConfig: NodeTracerConfig = {};\n\n if (configuration.sampler) {\n tracerProviderConfig.sampler = configuration.sampler;\n }\n if (configuration.spanLimits) {\n tracerProviderConfig.spanLimits = configuration.spanLimits;\n }\n if (configuration.idGenerator) {\n tracerProviderConfig.idGenerator = configuration.idGenerator;\n }\n\n if (configuration.spanProcessor) {\n diag.warn(\n \"The 'spanProcessor' option is deprecated. Please use 'spanProcessors' instead.\"\n );\n }\n\n const spanProcessor =\n configuration.spanProcessor ??\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n new BatchSpanProcessor(configuration.traceExporter!);\n\n const spanProcessors = configuration.spanProcessors ?? [spanProcessor];\n\n this._tracerProviderConfig = {\n tracerConfig: tracerProviderConfig,\n spanProcessors,\n contextManager: configuration.contextManager,\n textMapPropagator: configuration.textMapPropagator,\n };\n }\n\n if (configuration.logRecordProcessors) {\n this._loggerProviderConfig = {\n logRecordProcessors: configuration.logRecordProcessors,\n };\n } else if (configuration.logRecordProcessor) {\n this._loggerProviderConfig = {\n logRecordProcessors: [configuration.logRecordProcessor],\n };\n diag.warn(\n \"The 'logRecordProcessor' option is deprecated. Please use 'logRecordProcessors' instead.\"\n );\n } else {\n this.configureLoggerProviderFromEnv();\n }\n\n if (configuration.metricReader || configuration.views) {\n const meterProviderConfig: MeterProviderConfig = {};\n if (configuration.metricReader) {\n meterProviderConfig.reader = configuration.metricReader;\n }\n\n if (configuration.views) {\n meterProviderConfig.views = configuration.views;\n }\n\n this._meterProviderConfig = meterProviderConfig;\n }\n\n this._instrumentations = configuration.instrumentations?.flat() ?? [];\n }\n\n /**\n * Call this method to construct SDK components and register them with the OpenTelemetry API.\n */\n public start(): void {\n if (this._disabled) {\n return;\n }\n\n registerInstrumentations({\n instrumentations: this._instrumentations,\n });\n\n if (this._autoDetectResources) {\n const internalConfig: ResourceDetectionConfig = {\n detectors: this._resourceDetectors,\n };\n\n this._resource = this._resource.merge(\n detectResourcesSync(internalConfig)\n );\n }\n\n this._resource =\n this._serviceName === undefined\n ? this._resource\n : this._resource.merge(\n new Resource({\n [SEMRESATTRS_SERVICE_NAME]: this._serviceName,\n })\n );\n\n // if there is a tracerProviderConfig (traceExporter/spanProcessor was set manually) or the traceExporter is set manually, use NodeTracerProvider\n const Provider = this._tracerProviderConfig\n ? NodeTracerProvider\n : TracerProviderWithEnvExporters;\n\n // If the Provider is configured with Env Exporters, we need to check if the SDK had any manual configurations and set them here\n const tracerProvider = new Provider({\n ...this._configuration,\n resource: this._resource,\n });\n\n this._tracerProvider = tracerProvider;\n\n if (this._tracerProviderConfig) {\n for (const spanProcessor of this._tracerProviderConfig.spanProcessors) {\n tracerProvider.addSpanProcessor(spanProcessor);\n }\n }\n\n tracerProvider.register({\n contextManager:\n this._tracerProviderConfig?.contextManager ??\n // _tracerProviderConfig may be undefined if trace-specific settings are not provided - fall back to raw config\n this._configuration?.contextManager,\n propagator: this._tracerProviderConfig?.textMapPropagator,\n });\n\n if (this._loggerProviderConfig) {\n const loggerProvider = new LoggerProvider({\n resource: this._resource,\n });\n\n for (const logRecordProcessor of this._loggerProviderConfig\n .logRecordProcessors) {\n loggerProvider.addLogRecordProcessor(logRecordProcessor);\n }\n\n this._loggerProvider = loggerProvider;\n\n logs.setGlobalLoggerProvider(loggerProvider);\n }\n\n if (this._meterProviderConfig) {\n const readers: MetricReader[] = [];\n if (this._meterProviderConfig.reader) {\n readers.push(this._meterProviderConfig.reader);\n }\n const meterProvider = new MeterProvider({\n resource: this._resource,\n views: this._meterProviderConfig?.views ?? [],\n readers: readers,\n });\n\n this._meterProvider = meterProvider;\n\n metrics.setGlobalMeterProvider(meterProvider);\n\n // TODO: This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/3609\n // If the MeterProvider is not yet registered when instrumentations are registered, all metrics are dropped.\n // This code is obsolete once https://github.com/open-telemetry/opentelemetry-js/issues/3622 is implemented.\n for (const instrumentation of this._instrumentations) {\n instrumentation.setMeterProvider(metrics.getMeterProvider());\n }\n }\n }\n\n public shutdown(): Promise<void> {\n const promises: Promise<unknown>[] = [];\n if (this._tracerProvider) {\n promises.push(this._tracerProvider.shutdown());\n }\n if (this._loggerProvider) {\n promises.push(this._loggerProvider.shutdown());\n }\n if (this._meterProvider) {\n promises.push(this._meterProvider.shutdown());\n }\n\n return (\n Promise.all(promises)\n // return void instead of the array from Promise.all\n .then(() => {})\n );\n }\n\n private configureLoggerProviderFromEnv(): void {\n const logExportersList = process.env.OTEL_LOGS_EXPORTER ?? '';\n const enabledExporters = filterBlanksAndNulls(logExportersList.split(','));\n\n if (enabledExporters.length === 0) {\n diag.info('OTEL_LOGS_EXPORTER is empty. Using default otlp exporter.');\n enabledExporters.push('otlp');\n }\n\n if (enabledExporters.includes('none')) {\n diag.info(\n `OTEL_LOGS_EXPORTER contains \"none\". Logger provider will not be initialized.`\n );\n return;\n }\n\n const exporters: LogRecordExporter[] = [];\n\n enabledExporters.forEach(exporter => {\n if (exporter === 'otlp') {\n const protocol = (\n process.env.OTEL_EXPORTER_OTLP_LOGS_PROTOCOL ??\n process.env.OTEL_EXPORTER_OTLP_PROTOCOL\n )?.trim();\n\n switch (protocol) {\n case 'grpc':\n exporters.push(new OTLPGrpcLogExporter());\n break;\n case 'http/json':\n exporters.push(new OTLPHttpLogExporter());\n break;\n case 'http/protobuf':\n exporters.push(new OTLPProtoLogExporter());\n break;\n case undefined:\n case '':\n exporters.push(new OTLPProtoLogExporter());\n break;\n default:\n diag.warn(\n `Unsupported OTLP logs protocol: \"${protocol}\". Using http/protobuf.`\n );\n exporters.push(new OTLPProtoLogExporter());\n }\n } else if (exporter === 'console') {\n exporters.push(new ConsoleLogRecordExporter());\n } else {\n diag.warn(\n `Unsupported OTEL_LOGS_EXPORTER value: \"${exporter}\". Supported values are: otlp, console, none.`\n );\n }\n });\n\n if (exporters.length > 0) {\n this._loggerProviderConfig = {\n logRecordProcessors: exporters.map(exporter => {\n if (exporter instanceof ConsoleLogRecordExporter) {\n return new SimpleLogRecordProcessor(exporter);\n } else {\n return new BatchLogRecordProcessor(exporter);\n }\n }),\n };\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ContextManager,\n TextMapPropagator,\n metrics,\n diag,\n DiagConsoleLogger,\n} from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport {\n Instrumentation,\n registerInstrumentations,\n} from '@opentelemetry/instrumentation';\nimport {\n Detector,\n DetectorSync,\n detectResourcesSync,\n envDetector,\n hostDetector,\n IResource,\n processDetector,\n Resource,\n ResourceDetectionConfig,\n} from '@opentelemetry/resources';\nimport {\n LogRecordProcessor,\n LoggerProvider,\n BatchLogRecordProcessor,\n ConsoleLogRecordExporter,\n LogRecordExporter,\n SimpleLogRecordProcessor,\n} from '@opentelemetry/sdk-logs';\nimport { OTLPLogExporter as OTLPHttpLogExporter } from '@opentelemetry/exporter-logs-otlp-http';\nimport { OTLPLogExporter as OTLPGrpcLogExporter } from '@opentelemetry/exporter-logs-otlp-grpc';\nimport { OTLPLogExporter as OTLPProtoLogExporter } from '@opentelemetry/exporter-logs-otlp-proto';\nimport { MeterProvider, MetricReader, View } from '@opentelemetry/sdk-metrics';\nimport {\n BatchSpanProcessor,\n SpanProcessor,\n} from '@opentelemetry/sdk-trace-base';\nimport {\n NodeTracerConfig,\n NodeTracerProvider,\n} from '@opentelemetry/sdk-trace-node';\nimport { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions';\nimport { NodeSDKConfiguration } from './types';\nimport { getEnv, getEnvWithoutDefaults } from '@opentelemetry/core';\nimport {\n getResourceDetectorsFromEnv,\n getSpanProcessorsFromEnv,\n filterBlanksAndNulls,\n} from './utils';\n\n/** This class represents everything needed to register a fully configured OpenTelemetry Node.js SDK */\n\nexport type MeterProviderConfig = {\n /**\n * Reference to the MetricReader instance by the NodeSDK\n */\n reader?: MetricReader;\n /**\n * List of {@link View}s that should be passed to the MeterProvider\n */\n views?: View[];\n};\n\nexport type LoggerProviderConfig = {\n /**\n * Reference to the LoggerRecordProcessor instance by the NodeSDK\n */\n logRecordProcessors: LogRecordProcessor[];\n};\n\nexport class NodeSDK {\n private _tracerProviderConfig?: {\n tracerConfig: NodeTracerConfig;\n spanProcessors: SpanProcessor[];\n contextManager?: ContextManager;\n textMapPropagator?: TextMapPropagator;\n };\n private _loggerProviderConfig?: LoggerProviderConfig;\n private _meterProviderConfig?: MeterProviderConfig;\n private _instrumentations: Instrumentation[];\n\n private _resource: IResource;\n private _resourceDetectors: Array<Detector | DetectorSync>;\n private _mergeResourceWithDefaults: boolean;\n\n private _autoDetectResources: boolean;\n\n private _tracerProvider?: NodeTracerProvider;\n private _loggerProvider?: LoggerProvider;\n private _meterProvider?: MeterProvider;\n private _serviceName?: string;\n private _configuration?: Partial<NodeSDKConfiguration>;\n\n private _disabled?: boolean;\n\n /**\n * Create a new NodeJS SDK instance\n */\n public constructor(configuration: Partial<NodeSDKConfiguration> = {}) {\n const env = getEnv();\n const envWithoutDefaults = getEnvWithoutDefaults();\n\n if (env.OTEL_SDK_DISABLED) {\n this._disabled = true;\n // Functions with possible side-effects are set\n // to no-op via the _disabled flag\n }\n\n // Default is INFO, use environment without defaults to check\n // if the user originally set the environment variable.\n if (envWithoutDefaults.OTEL_LOG_LEVEL) {\n diag.setLogger(new DiagConsoleLogger(), {\n logLevel: envWithoutDefaults.OTEL_LOG_LEVEL,\n });\n }\n\n this._configuration = configuration;\n\n this._resource = configuration.resource ?? new Resource({});\n this._mergeResourceWithDefaults =\n configuration.mergeResourceWithDefaults ?? true;\n this._autoDetectResources = configuration.autoDetectResources ?? true;\n if (!this._autoDetectResources) {\n this._resourceDetectors = [];\n } else if (configuration.resourceDetectors != null) {\n this._resourceDetectors = configuration.resourceDetectors;\n } else if (process.env.OTEL_NODE_RESOURCE_DETECTORS != null) {\n this._resourceDetectors = getResourceDetectorsFromEnv();\n } else {\n this._resourceDetectors = [envDetector, processDetector, hostDetector];\n }\n\n this._serviceName = configuration.serviceName;\n\n // If a tracer provider can be created from manual configuration, create it\n if (\n configuration.traceExporter ||\n configuration.spanProcessor ||\n configuration.spanProcessors\n ) {\n const tracerProviderConfig: NodeTracerConfig = {};\n\n if (configuration.sampler) {\n tracerProviderConfig.sampler = configuration.sampler;\n }\n if (configuration.spanLimits) {\n tracerProviderConfig.spanLimits = configuration.spanLimits;\n }\n if (configuration.idGenerator) {\n tracerProviderConfig.idGenerator = configuration.idGenerator;\n }\n\n if (configuration.spanProcessor) {\n diag.warn(\n \"The 'spanProcessor' option is deprecated. Please use 'spanProcessors' instead.\"\n );\n }\n\n const spanProcessor =\n configuration.spanProcessor ??\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n new BatchSpanProcessor(configuration.traceExporter!);\n\n const spanProcessors = configuration.spanProcessors ?? [spanProcessor];\n\n this._tracerProviderConfig = {\n tracerConfig: tracerProviderConfig,\n spanProcessors,\n contextManager: configuration.contextManager,\n textMapPropagator: configuration.textMapPropagator,\n };\n }\n\n if (configuration.logRecordProcessors) {\n this._loggerProviderConfig = {\n logRecordProcessors: configuration.logRecordProcessors,\n };\n } else if (configuration.logRecordProcessor) {\n this._loggerProviderConfig = {\n logRecordProcessors: [configuration.logRecordProcessor],\n };\n diag.warn(\n \"The 'logRecordProcessor' option is deprecated. Please use 'logRecordProcessors' instead.\"\n );\n } else {\n this.configureLoggerProviderFromEnv();\n }\n\n if (configuration.metricReader || configuration.views) {\n const meterProviderConfig: MeterProviderConfig = {};\n if (configuration.metricReader) {\n meterProviderConfig.reader = configuration.metricReader;\n }\n\n if (configuration.views) {\n meterProviderConfig.views = configuration.views;\n }\n\n this._meterProviderConfig = meterProviderConfig;\n }\n\n this._instrumentations = configuration.instrumentations?.flat() ?? [];\n }\n\n /**\n * Call this method to construct SDK components and register them with the OpenTelemetry API.\n */\n public start(): void {\n if (this._disabled) {\n return;\n }\n\n registerInstrumentations({\n instrumentations: this._instrumentations,\n });\n\n if (this._autoDetectResources) {\n const internalConfig: ResourceDetectionConfig = {\n detectors: this._resourceDetectors,\n };\n\n this._resource = this._resource.merge(\n detectResourcesSync(internalConfig)\n );\n }\n\n this._resource =\n this._serviceName === undefined\n ? this._resource\n : this._resource.merge(\n new Resource({\n [SEMRESATTRS_SERVICE_NAME]: this._serviceName,\n })\n );\n\n const spanProcessors = this._tracerProviderConfig\n ? this._tracerProviderConfig.spanProcessors\n : getSpanProcessorsFromEnv();\n\n // If the Provider is configured with Env Exporters, we need to check if the SDK had any manual configurations and set them here\n this._tracerProvider = new NodeTracerProvider({\n ...this._configuration,\n resource: this._resource,\n mergeResourceWithDefaults: this._mergeResourceWithDefaults,\n spanProcessors,\n });\n\n // Only register if there is a span processor\n if (spanProcessors.length > 0) {\n this._tracerProvider.register({\n contextManager:\n this._tracerProviderConfig?.contextManager ??\n // _tracerProviderConfig may be undefined if trace-specific settings are not provided - fall back to raw config\n this._configuration?.contextManager,\n propagator: this._tracerProviderConfig?.textMapPropagator,\n });\n }\n\n if (this._loggerProviderConfig) {\n const loggerProvider = new LoggerProvider({\n resource: this._resource,\n mergeResourceWithDefaults: this._mergeResourceWithDefaults,\n });\n\n for (const logRecordProcessor of this._loggerProviderConfig\n .logRecordProcessors) {\n loggerProvider.addLogRecordProcessor(logRecordProcessor);\n }\n\n this._loggerProvider = loggerProvider;\n\n logs.setGlobalLoggerProvider(loggerProvider);\n }\n\n if (this._meterProviderConfig) {\n const readers: MetricReader[] = [];\n if (this._meterProviderConfig.reader) {\n readers.push(this._meterProviderConfig.reader);\n }\n const meterProvider = new MeterProvider({\n resource: this._resource,\n views: this._meterProviderConfig?.views ?? [],\n readers: readers,\n mergeResourceWithDefaults: this._mergeResourceWithDefaults,\n });\n\n this._meterProvider = meterProvider;\n\n metrics.setGlobalMeterProvider(meterProvider);\n\n // TODO: This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/3609\n // If the MeterProvider is not yet registered when instrumentations are registered, all metrics are dropped.\n // This code is obsolete once https://github.com/open-telemetry/opentelemetry-js/issues/3622 is implemented.\n for (const instrumentation of this._instrumentations) {\n instrumentation.setMeterProvider(metrics.getMeterProvider());\n }\n }\n }\n\n public shutdown(): Promise<void> {\n const promises: Promise<unknown>[] = [];\n if (this._tracerProvider) {\n promises.push(this._tracerProvider.shutdown());\n }\n if (this._loggerProvider) {\n promises.push(this._loggerProvider.shutdown());\n }\n if (this._meterProvider) {\n promises.push(this._meterProvider.shutdown());\n }\n\n return (\n Promise.all(promises)\n // return void instead of the array from Promise.all\n .then(() => {})\n );\n }\n\n private configureLoggerProviderFromEnv(): void {\n const logExportersList = process.env.OTEL_LOGS_EXPORTER ?? '';\n const enabledExporters = filterBlanksAndNulls(logExportersList.split(','));\n\n if (enabledExporters.length === 0) {\n diag.info('OTEL_LOGS_EXPORTER is empty. Using default otlp exporter.');\n enabledExporters.push('otlp');\n }\n\n if (enabledExporters.includes('none')) {\n diag.info(\n `OTEL_LOGS_EXPORTER contains \"none\". Logger provider will not be initialized.`\n );\n return;\n }\n\n const exporters: LogRecordExporter[] = [];\n\n enabledExporters.forEach(exporter => {\n if (exporter === 'otlp') {\n const protocol = (\n process.env.OTEL_EXPORTER_OTLP_LOGS_PROTOCOL ??\n process.env.OTEL_EXPORTER_OTLP_PROTOCOL\n )?.trim();\n\n switch (protocol) {\n case 'grpc':\n exporters.push(new OTLPGrpcLogExporter());\n break;\n case 'http/json':\n exporters.push(new OTLPHttpLogExporter());\n break;\n case 'http/protobuf':\n exporters.push(new OTLPProtoLogExporter());\n break;\n case undefined:\n case '':\n exporters.push(new OTLPProtoLogExporter());\n break;\n default:\n diag.warn(\n `Unsupported OTLP logs protocol: \"${protocol}\". Using http/protobuf.`\n );\n exporters.push(new OTLPProtoLogExporter());\n }\n } else if (exporter === 'console') {\n exporters.push(new ConsoleLogRecordExporter());\n } else {\n diag.warn(\n `Unsupported OTEL_LOGS_EXPORTER value: \"${exporter}\". Supported values are: otlp, console, none.`\n );\n }\n });\n\n if (exporters.length > 0) {\n this._loggerProviderConfig = {\n logRecordProcessors: exporters.map(exporter => {\n if (exporter instanceof ConsoleLogRecordExporter) {\n return new SimpleLogRecordProcessor(exporter);\n } else {\n return new BatchLogRecordProcessor(exporter);\n }\n }),\n };\n }\n }\n}\n"]}
|
package/build/src/types.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export interface NodeSDKConfiguration {
|
|
|
17
17
|
instrumentations: (Instrumentation | Instrumentation[])[];
|
|
18
18
|
resource: IResource;
|
|
19
19
|
resourceDetectors: Array<Detector | DetectorSync>;
|
|
20
|
+
mergeResourceWithDefaults?: boolean;
|
|
20
21
|
sampler: Sampler;
|
|
21
22
|
serviceName?: string;
|
|
22
23
|
/** @deprecated use spanProcessors instead*/
|
package/build/src/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ContextManager } from '@opentelemetry/api';\nimport { TextMapPropagator } from '@opentelemetry/api';\nimport { Instrumentation } from '@opentelemetry/instrumentation';\nimport { Detector, DetectorSync, IResource } from '@opentelemetry/resources';\nimport { LogRecordProcessor } from '@opentelemetry/sdk-logs';\nimport { MetricReader, View } from '@opentelemetry/sdk-metrics';\nimport {\n Sampler,\n SpanExporter,\n SpanLimits,\n SpanProcessor,\n IdGenerator,\n} from '@opentelemetry/sdk-trace-base';\n\nexport interface NodeSDKConfiguration {\n autoDetectResources: boolean;\n contextManager: ContextManager;\n textMapPropagator: TextMapPropagator;\n /** @deprecated use logRecordProcessors instead*/\n logRecordProcessor: LogRecordProcessor;\n logRecordProcessors?: LogRecordProcessor[];\n metricReader: MetricReader;\n views: View[];\n instrumentations: (Instrumentation | Instrumentation[])[];\n resource: IResource;\n resourceDetectors: Array<Detector | DetectorSync>;\n sampler: Sampler;\n serviceName?: string;\n /** @deprecated use spanProcessors instead*/\n spanProcessor?: SpanProcessor;\n spanProcessors?: SpanProcessor[];\n traceExporter: SpanExporter;\n spanLimits: SpanLimits;\n idGenerator: IdGenerator;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ContextManager } from '@opentelemetry/api';\nimport { TextMapPropagator } from '@opentelemetry/api';\nimport { Instrumentation } from '@opentelemetry/instrumentation';\nimport { Detector, DetectorSync, IResource } from '@opentelemetry/resources';\nimport { LogRecordProcessor } from '@opentelemetry/sdk-logs';\nimport { MetricReader, View } from '@opentelemetry/sdk-metrics';\nimport {\n Sampler,\n SpanExporter,\n SpanLimits,\n SpanProcessor,\n IdGenerator,\n} from '@opentelemetry/sdk-trace-base';\n\nexport interface NodeSDKConfiguration {\n autoDetectResources: boolean;\n contextManager: ContextManager;\n textMapPropagator: TextMapPropagator;\n /** @deprecated use logRecordProcessors instead*/\n logRecordProcessor: LogRecordProcessor;\n logRecordProcessors?: LogRecordProcessor[];\n metricReader: MetricReader;\n views: View[];\n instrumentations: (Instrumentation | Instrumentation[])[];\n resource: IResource;\n resourceDetectors: Array<Detector | DetectorSync>;\n mergeResourceWithDefaults?: boolean;\n sampler: Sampler;\n serviceName?: string;\n /** @deprecated use spanProcessors instead*/\n spanProcessor?: SpanProcessor;\n spanProcessors?: SpanProcessor[];\n traceExporter: SpanExporter;\n spanLimits: SpanLimits;\n idGenerator: IdGenerator;\n}\n"]}
|
package/build/src/utils.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { DetectorSync } from '@opentelemetry/resources';
|
|
2
|
+
import { SpanProcessor } from '@opentelemetry/sdk-trace-base';
|
|
2
3
|
export declare function getResourceDetectorsFromEnv(): Array<DetectorSync>;
|
|
3
4
|
export declare function filterBlanksAndNulls(list: string[]): string[];
|
|
5
|
+
export declare function getOtlpProtocolFromEnv(): string;
|
|
6
|
+
export declare function getSpanProcessorsFromEnv(): SpanProcessor[];
|
|
4
7
|
//# sourceMappingURL=utils.d.ts.map
|
package/build/src/utils.js
CHANGED
|
@@ -15,9 +15,15 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.filterBlanksAndNulls = exports.getResourceDetectorsFromEnv = void 0;
|
|
18
|
+
exports.getSpanProcessorsFromEnv = exports.getOtlpProtocolFromEnv = exports.filterBlanksAndNulls = exports.getResourceDetectorsFromEnv = void 0;
|
|
19
19
|
const api_1 = require("@opentelemetry/api");
|
|
20
|
+
const core_1 = require("@opentelemetry/core");
|
|
21
|
+
const exporter_trace_otlp_proto_1 = require("@opentelemetry/exporter-trace-otlp-proto");
|
|
22
|
+
const exporter_trace_otlp_http_1 = require("@opentelemetry/exporter-trace-otlp-http");
|
|
23
|
+
const exporter_trace_otlp_grpc_1 = require("@opentelemetry/exporter-trace-otlp-grpc");
|
|
24
|
+
const exporter_zipkin_1 = require("@opentelemetry/exporter-zipkin");
|
|
20
25
|
const resources_1 = require("@opentelemetry/resources");
|
|
26
|
+
const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
|
|
21
27
|
const RESOURCE_DETECTOR_ENVIRONMENT = 'env';
|
|
22
28
|
const RESOURCE_DETECTOR_HOST = 'host';
|
|
23
29
|
const RESOURCE_DETECTOR_OS = 'os';
|
|
@@ -53,4 +59,84 @@ function filterBlanksAndNulls(list) {
|
|
|
53
59
|
return list.map(item => item.trim()).filter(s => s !== 'null' && s !== '');
|
|
54
60
|
}
|
|
55
61
|
exports.filterBlanksAndNulls = filterBlanksAndNulls;
|
|
62
|
+
function getOtlpProtocolFromEnv() {
|
|
63
|
+
var _a, _b, _c;
|
|
64
|
+
const parsedEnvValues = (0, core_1.getEnvWithoutDefaults)();
|
|
65
|
+
return ((_c = (_b = (_a = parsedEnvValues.OTEL_EXPORTER_OTLP_TRACES_PROTOCOL) !== null && _a !== void 0 ? _a : parsedEnvValues.OTEL_EXPORTER_OTLP_PROTOCOL) !== null && _b !== void 0 ? _b : (0, core_1.getEnv)().OTEL_EXPORTER_OTLP_TRACES_PROTOCOL) !== null && _c !== void 0 ? _c : (0, core_1.getEnv)().OTEL_EXPORTER_OTLP_PROTOCOL);
|
|
66
|
+
}
|
|
67
|
+
exports.getOtlpProtocolFromEnv = getOtlpProtocolFromEnv;
|
|
68
|
+
function getOtlpExporterFromEnv() {
|
|
69
|
+
const protocol = getOtlpProtocolFromEnv();
|
|
70
|
+
switch (protocol) {
|
|
71
|
+
case 'grpc':
|
|
72
|
+
return new exporter_trace_otlp_grpc_1.OTLPTraceExporter();
|
|
73
|
+
case 'http/json':
|
|
74
|
+
return new exporter_trace_otlp_http_1.OTLPTraceExporter();
|
|
75
|
+
case 'http/protobuf':
|
|
76
|
+
return new exporter_trace_otlp_proto_1.OTLPTraceExporter();
|
|
77
|
+
default:
|
|
78
|
+
api_1.diag.warn(`Unsupported OTLP traces protocol: ${protocol}. Using http/protobuf.`);
|
|
79
|
+
return new exporter_trace_otlp_proto_1.OTLPTraceExporter();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function getJaegerExporter() {
|
|
83
|
+
// The JaegerExporter does not support being required in bundled
|
|
84
|
+
// environments. By delaying the require statement to here, we only crash when
|
|
85
|
+
// the exporter is actually used in such an environment.
|
|
86
|
+
try {
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
88
|
+
const { JaegerExporter } = require('@opentelemetry/exporter-jaeger');
|
|
89
|
+
return new JaegerExporter();
|
|
90
|
+
}
|
|
91
|
+
catch (e) {
|
|
92
|
+
throw new Error(`Could not instantiate JaegerExporter. This could be due to the JaegerExporter's lack of support for bundling. If possible, use @opentelemetry/exporter-trace-otlp-proto instead. Original Error: ${e}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
function getSpanProcessorsFromEnv() {
|
|
96
|
+
var _a;
|
|
97
|
+
const exportersMap = new Map([
|
|
98
|
+
['otlp', () => getOtlpExporterFromEnv()],
|
|
99
|
+
['zipkin', () => new exporter_zipkin_1.ZipkinExporter()],
|
|
100
|
+
['console', () => new sdk_trace_base_1.ConsoleSpanExporter()],
|
|
101
|
+
['jaeger', () => getJaegerExporter()],
|
|
102
|
+
]);
|
|
103
|
+
const exporters = [];
|
|
104
|
+
const processors = [];
|
|
105
|
+
let traceExportersList = filterBlanksAndNulls(Array.from(new Set((0, core_1.getEnv)().OTEL_TRACES_EXPORTER.split(','))));
|
|
106
|
+
if (traceExportersList[0] === 'none') {
|
|
107
|
+
api_1.diag.warn('OTEL_TRACES_EXPORTER contains "none". SDK will not be initialized.');
|
|
108
|
+
return [];
|
|
109
|
+
}
|
|
110
|
+
if (traceExportersList.length === 0) {
|
|
111
|
+
api_1.diag.warn('OTEL_TRACES_EXPORTER is empty. Using default otlp exporter.');
|
|
112
|
+
traceExportersList = ['otlp'];
|
|
113
|
+
}
|
|
114
|
+
else if (traceExportersList.length > 1 &&
|
|
115
|
+
traceExportersList.includes('none')) {
|
|
116
|
+
api_1.diag.warn('OTEL_TRACES_EXPORTER contains "none" along with other exporters. Using default otlp exporter.');
|
|
117
|
+
traceExportersList = ['otlp'];
|
|
118
|
+
}
|
|
119
|
+
for (const name of traceExportersList) {
|
|
120
|
+
const exporter = (_a = exportersMap.get(name)) === null || _a === void 0 ? void 0 : _a();
|
|
121
|
+
if (exporter) {
|
|
122
|
+
exporters.push(exporter);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
api_1.diag.warn(`Unrecognized OTEL_TRACES_EXPORTER value: ${name}.`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
for (const exp of exporters) {
|
|
129
|
+
if (exp instanceof sdk_trace_base_1.ConsoleSpanExporter) {
|
|
130
|
+
processors.push(new sdk_trace_base_1.SimpleSpanProcessor(exp));
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
processors.push(new sdk_trace_base_1.BatchSpanProcessor(exp));
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if (exporters.length === 0) {
|
|
137
|
+
api_1.diag.warn('Unable to set up trace exporter(s) due to invalid exporter and/or protocol values.');
|
|
138
|
+
}
|
|
139
|
+
return processors;
|
|
140
|
+
}
|
|
141
|
+
exports.getSpanProcessorsFromEnv = getSpanProcessorsFromEnv;
|
|
56
142
|
//# sourceMappingURL=utils.js.map
|
package/build/src/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAA0C;AAC1C,wDAOkC;AAElC,MAAM,6BAA6B,GAAG,KAAK,CAAC;AAC5C,MAAM,sBAAsB,GAAG,MAAM,CAAC;AACtC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,MAAM,yBAAyB,GAAG,SAAS,CAAC;AAC5C,MAAM,qCAAqC,GAAG,iBAAiB,CAAC;AAEhE,SAAgB,2BAA2B;;IACzC,+FAA+F;IAC/F,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAuB;QACtD,CAAC,6BAA6B,EAAE,2BAAe,CAAC;QAChD,CAAC,sBAAsB,EAAE,4BAAgB,CAAC;QAC1C,CAAC,oBAAoB,EAAE,0BAAc,CAAC;QACtC,CAAC,qCAAqC,EAAE,yCAA6B,CAAC;QACtE,CAAC,yBAAyB,EAAE,+BAAmB,CAAC;KACjD,CAAC,CAAC;IAEH,MAAM,wBAAwB,GAC5B,MAAA,MAAA,OAAO,CAAC,GAAG,CAAC,4BAA4B,0CAAE,KAAK,CAAC,GAAG,CAAC,mCAAI,CAAC,KAAK,CAAC,CAAC;IAElE,IAAI,wBAAwB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC5C,OAAO,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;KAC/C;IAED,IAAI,wBAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAC7C,OAAO,EAAE,CAAC;KACX;IAED,OAAO,wBAAwB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QACjD,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,gBAAgB,EAAE;YACrB,UAAI,CAAC,IAAI,CACP,8BAA8B,QAAQ,sEAAsE,CAC7G,CAAC;SACH;QACD,OAAO,gBAAgB,IAAI,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC;AA9BD,kEA8BC;AAED,SAAgB,oBAAoB,CAAC,IAAc;IACjD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7E,CAAC;AAFD,oDAEC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { diag } from '@opentelemetry/api';\nimport {\n DetectorSync,\n envDetectorSync,\n hostDetectorSync,\n osDetectorSync,\n processDetectorSync,\n serviceInstanceIdDetectorSync,\n} from '@opentelemetry/resources';\n\nconst RESOURCE_DETECTOR_ENVIRONMENT = 'env';\nconst RESOURCE_DETECTOR_HOST = 'host';\nconst RESOURCE_DETECTOR_OS = 'os';\nconst RESOURCE_DETECTOR_PROCESS = 'process';\nconst RESOURCE_DETECTOR_SERVICE_INSTANCE_ID = 'serviceinstance';\n\nexport function getResourceDetectorsFromEnv(): Array<DetectorSync> {\n // When updating this list, make sure to also update the section `resourceDetectors` on README.\n const resourceDetectors = new Map<string, DetectorSync>([\n [RESOURCE_DETECTOR_ENVIRONMENT, envDetectorSync],\n [RESOURCE_DETECTOR_HOST, hostDetectorSync],\n [RESOURCE_DETECTOR_OS, osDetectorSync],\n [RESOURCE_DETECTOR_SERVICE_INSTANCE_ID, serviceInstanceIdDetectorSync],\n [RESOURCE_DETECTOR_PROCESS, processDetectorSync],\n ]);\n\n const resourceDetectorsFromEnv =\n process.env.OTEL_NODE_RESOURCE_DETECTORS?.split(',') ?? ['all'];\n\n if (resourceDetectorsFromEnv.includes('all')) {\n return [...resourceDetectors.values()].flat();\n }\n\n if (resourceDetectorsFromEnv.includes('none')) {\n return [];\n }\n\n return resourceDetectorsFromEnv.flatMap(detector => {\n const resourceDetector = resourceDetectors.get(detector);\n if (!resourceDetector) {\n diag.warn(\n `Invalid resource detector \"${detector}\" specified in the environment variable OTEL_NODE_RESOURCE_DETECTORS`\n );\n }\n return resourceDetector || [];\n });\n}\n\nexport function filterBlanksAndNulls(list: string[]): string[] {\n return list.map(item => item.trim()).filter(s => s !== 'null' && s !== '');\n}\n"]}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { diag } from '@opentelemetry/api';\nimport { getEnv, getEnvWithoutDefaults } from '@opentelemetry/core';\nimport { OTLPTraceExporter as OTLPProtoTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto';\nimport { OTLPTraceExporter as OTLPHttpTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { OTLPTraceExporter as OTLPGrpcTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc';\nimport { ZipkinExporter } from '@opentelemetry/exporter-zipkin';\nimport {\n DetectorSync,\n envDetectorSync,\n hostDetectorSync,\n osDetectorSync,\n processDetectorSync,\n serviceInstanceIdDetectorSync,\n} from '@opentelemetry/resources';\nimport {\n BatchSpanProcessor,\n ConsoleSpanExporter,\n SimpleSpanProcessor,\n SpanExporter,\n SpanProcessor,\n} from '@opentelemetry/sdk-trace-base';\n\nconst RESOURCE_DETECTOR_ENVIRONMENT = 'env';\nconst RESOURCE_DETECTOR_HOST = 'host';\nconst RESOURCE_DETECTOR_OS = 'os';\nconst RESOURCE_DETECTOR_PROCESS = 'process';\nconst RESOURCE_DETECTOR_SERVICE_INSTANCE_ID = 'serviceinstance';\n\nexport function getResourceDetectorsFromEnv(): Array<DetectorSync> {\n // When updating this list, make sure to also update the section `resourceDetectors` on README.\n const resourceDetectors = new Map<string, DetectorSync>([\n [RESOURCE_DETECTOR_ENVIRONMENT, envDetectorSync],\n [RESOURCE_DETECTOR_HOST, hostDetectorSync],\n [RESOURCE_DETECTOR_OS, osDetectorSync],\n [RESOURCE_DETECTOR_SERVICE_INSTANCE_ID, serviceInstanceIdDetectorSync],\n [RESOURCE_DETECTOR_PROCESS, processDetectorSync],\n ]);\n\n const resourceDetectorsFromEnv =\n process.env.OTEL_NODE_RESOURCE_DETECTORS?.split(',') ?? ['all'];\n\n if (resourceDetectorsFromEnv.includes('all')) {\n return [...resourceDetectors.values()].flat();\n }\n\n if (resourceDetectorsFromEnv.includes('none')) {\n return [];\n }\n\n return resourceDetectorsFromEnv.flatMap(detector => {\n const resourceDetector = resourceDetectors.get(detector);\n if (!resourceDetector) {\n diag.warn(\n `Invalid resource detector \"${detector}\" specified in the environment variable OTEL_NODE_RESOURCE_DETECTORS`\n );\n }\n return resourceDetector || [];\n });\n}\n\nexport function filterBlanksAndNulls(list: string[]): string[] {\n return list.map(item => item.trim()).filter(s => s !== 'null' && s !== '');\n}\n\nexport function getOtlpProtocolFromEnv(): string {\n const parsedEnvValues = getEnvWithoutDefaults();\n\n return (\n parsedEnvValues.OTEL_EXPORTER_OTLP_TRACES_PROTOCOL ??\n parsedEnvValues.OTEL_EXPORTER_OTLP_PROTOCOL ??\n getEnv().OTEL_EXPORTER_OTLP_TRACES_PROTOCOL ??\n getEnv().OTEL_EXPORTER_OTLP_PROTOCOL\n );\n}\n\nfunction getOtlpExporterFromEnv(): SpanExporter {\n const protocol = getOtlpProtocolFromEnv();\n\n switch (protocol) {\n case 'grpc':\n return new OTLPGrpcTraceExporter();\n case 'http/json':\n return new OTLPHttpTraceExporter();\n case 'http/protobuf':\n return new OTLPProtoTraceExporter();\n default:\n diag.warn(\n `Unsupported OTLP traces protocol: ${protocol}. Using http/protobuf.`\n );\n return new OTLPProtoTraceExporter();\n }\n}\n\nfunction getJaegerExporter() {\n // The JaegerExporter does not support being required in bundled\n // environments. By delaying the require statement to here, we only crash when\n // the exporter is actually used in such an environment.\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { JaegerExporter } = require('@opentelemetry/exporter-jaeger');\n return new JaegerExporter();\n } catch (e) {\n throw new Error(\n `Could not instantiate JaegerExporter. This could be due to the JaegerExporter's lack of support for bundling. If possible, use @opentelemetry/exporter-trace-otlp-proto instead. Original Error: ${e}`\n );\n }\n}\n\nexport function getSpanProcessorsFromEnv(): SpanProcessor[] {\n const exportersMap = new Map<string, () => SpanExporter>([\n ['otlp', () => getOtlpExporterFromEnv()],\n ['zipkin', () => new ZipkinExporter()],\n ['console', () => new ConsoleSpanExporter()],\n ['jaeger', () => getJaegerExporter()],\n ]);\n const exporters: SpanExporter[] = [];\n const processors: SpanProcessor[] = [];\n let traceExportersList = filterBlanksAndNulls(\n Array.from(new Set(getEnv().OTEL_TRACES_EXPORTER.split(',')))\n );\n\n if (traceExportersList[0] === 'none') {\n diag.warn(\n 'OTEL_TRACES_EXPORTER contains \"none\". SDK will not be initialized.'\n );\n return [];\n }\n\n if (traceExportersList.length === 0) {\n diag.warn('OTEL_TRACES_EXPORTER is empty. Using default otlp exporter.');\n traceExportersList = ['otlp'];\n } else if (\n traceExportersList.length > 1 &&\n traceExportersList.includes('none')\n ) {\n diag.warn(\n 'OTEL_TRACES_EXPORTER contains \"none\" along with other exporters. Using default otlp exporter.'\n );\n traceExportersList = ['otlp'];\n }\n\n for (const name of traceExportersList) {\n const exporter = exportersMap.get(name)?.();\n if (exporter) {\n exporters.push(exporter);\n } else {\n diag.warn(`Unrecognized OTEL_TRACES_EXPORTER value: ${name}.`);\n }\n }\n\n for (const exp of exporters) {\n if (exp instanceof ConsoleSpanExporter) {\n processors.push(new SimpleSpanProcessor(exp));\n } else {\n processors.push(new BatchSpanProcessor(exp));\n }\n }\n\n if (exporters.length === 0) {\n diag.warn(\n 'Unable to set up trace exporter(s) due to invalid exporter and/or protocol values.'\n );\n }\n\n return processors;\n}\n"]}
|
package/build/src/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.
|
|
1
|
+
export declare const VERSION = "0.55.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/build/src/version.js
CHANGED
package/build/src/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\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;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.55.0';\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opentelemetry/sdk-node",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.55.0",
|
|
4
4
|
"description": "OpenTelemetry SDK for Node.js",
|
|
5
5
|
"main": "build/src/index.js",
|
|
6
6
|
"types": "build/src/index.d.ts",
|
|
@@ -44,21 +44,21 @@
|
|
|
44
44
|
"access": "public"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@opentelemetry/api-logs": "0.
|
|
48
|
-
"@opentelemetry/core": "1.
|
|
49
|
-
"@opentelemetry/exporter-logs-otlp-grpc": "0.
|
|
50
|
-
"@opentelemetry/exporter-logs-otlp-http": "0.
|
|
51
|
-
"@opentelemetry/exporter-logs-otlp-proto": "0.
|
|
52
|
-
"@opentelemetry/exporter-trace-otlp-grpc": "0.
|
|
53
|
-
"@opentelemetry/exporter-trace-otlp-http": "0.
|
|
54
|
-
"@opentelemetry/exporter-trace-otlp-proto": "0.
|
|
55
|
-
"@opentelemetry/exporter-zipkin": "1.
|
|
56
|
-
"@opentelemetry/instrumentation": "0.
|
|
57
|
-
"@opentelemetry/resources": "1.
|
|
58
|
-
"@opentelemetry/sdk-logs": "0.
|
|
59
|
-
"@opentelemetry/sdk-metrics": "1.
|
|
60
|
-
"@opentelemetry/sdk-trace-base": "1.
|
|
61
|
-
"@opentelemetry/sdk-trace-node": "1.
|
|
47
|
+
"@opentelemetry/api-logs": "0.55.0",
|
|
48
|
+
"@opentelemetry/core": "1.28.0",
|
|
49
|
+
"@opentelemetry/exporter-logs-otlp-grpc": "0.55.0",
|
|
50
|
+
"@opentelemetry/exporter-logs-otlp-http": "0.55.0",
|
|
51
|
+
"@opentelemetry/exporter-logs-otlp-proto": "0.55.0",
|
|
52
|
+
"@opentelemetry/exporter-trace-otlp-grpc": "0.55.0",
|
|
53
|
+
"@opentelemetry/exporter-trace-otlp-http": "0.55.0",
|
|
54
|
+
"@opentelemetry/exporter-trace-otlp-proto": "0.55.0",
|
|
55
|
+
"@opentelemetry/exporter-zipkin": "1.28.0",
|
|
56
|
+
"@opentelemetry/instrumentation": "0.55.0",
|
|
57
|
+
"@opentelemetry/resources": "1.28.0",
|
|
58
|
+
"@opentelemetry/sdk-logs": "0.55.0",
|
|
59
|
+
"@opentelemetry/sdk-metrics": "1.28.0",
|
|
60
|
+
"@opentelemetry/sdk-trace-base": "1.28.0",
|
|
61
|
+
"@opentelemetry/sdk-trace-node": "1.28.0",
|
|
62
62
|
"@opentelemetry/semantic-conventions": "1.27.0"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
|
@@ -66,15 +66,15 @@
|
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
68
|
"@opentelemetry/api": "1.9.0",
|
|
69
|
-
"@opentelemetry/context-async-hooks": "1.
|
|
70
|
-
"@opentelemetry/exporter-jaeger": "1.
|
|
71
|
-
"@types/mocha": "10.0.
|
|
69
|
+
"@opentelemetry/context-async-hooks": "1.28.0",
|
|
70
|
+
"@opentelemetry/exporter-jaeger": "1.28.0",
|
|
71
|
+
"@types/mocha": "10.0.9",
|
|
72
72
|
"@types/node": "18.6.5",
|
|
73
73
|
"@types/semver": "7.5.8",
|
|
74
74
|
"@types/sinon": "17.0.3",
|
|
75
75
|
"cross-var": "1.1.0",
|
|
76
76
|
"lerna": "6.6.2",
|
|
77
|
-
"mocha": "10.
|
|
77
|
+
"mocha": "10.8.2",
|
|
78
78
|
"nyc": "15.1.0",
|
|
79
79
|
"semver": "7.6.3",
|
|
80
80
|
"sinon": "15.1.2",
|
|
@@ -83,5 +83,5 @@
|
|
|
83
83
|
},
|
|
84
84
|
"homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-sdk-node",
|
|
85
85
|
"sideEffects": false,
|
|
86
|
-
"gitHead": "
|
|
86
|
+
"gitHead": "4b1ad3fda0cde58907e30fab25c3c767546708e5"
|
|
87
87
|
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { SpanExporter, SDKRegistrationConfig, SpanProcessor } from '@opentelemetry/sdk-trace-base';
|
|
2
|
-
import { NodeTracerConfig, NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
|
|
3
|
-
export declare class TracerProviderWithEnvExporters extends NodeTracerProvider {
|
|
4
|
-
private _configuredExporters;
|
|
5
|
-
private _spanProcessors;
|
|
6
|
-
private _hasSpanProcessors;
|
|
7
|
-
static configureOtlp(): SpanExporter;
|
|
8
|
-
static getOtlpProtocol(): string;
|
|
9
|
-
private static configureJaeger;
|
|
10
|
-
protected static _registeredExporters: Map<string, () => SpanExporter>;
|
|
11
|
-
constructor(config?: NodeTracerConfig);
|
|
12
|
-
addSpanProcessor(spanProcessor: SpanProcessor): void;
|
|
13
|
-
register(config?: SDKRegistrationConfig): void;
|
|
14
|
-
private createExportersFromList;
|
|
15
|
-
private configureSpanProcessors;
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=TracerProviderWithEnvExporter.d.ts.map
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright The OpenTelemetry Authors
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
* you may not use this file except in compliance with the License.
|
|
7
|
-
* You may obtain a copy of the License at
|
|
8
|
-
*
|
|
9
|
-
* https://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
var _a;
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.TracerProviderWithEnvExporters = void 0;
|
|
20
|
-
const api_1 = require("@opentelemetry/api");
|
|
21
|
-
const core_1 = require("@opentelemetry/core");
|
|
22
|
-
const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
|
|
23
|
-
const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
|
|
24
|
-
const exporter_trace_otlp_proto_1 = require("@opentelemetry/exporter-trace-otlp-proto");
|
|
25
|
-
const exporter_trace_otlp_http_1 = require("@opentelemetry/exporter-trace-otlp-http");
|
|
26
|
-
const exporter_trace_otlp_grpc_1 = require("@opentelemetry/exporter-trace-otlp-grpc");
|
|
27
|
-
const exporter_zipkin_1 = require("@opentelemetry/exporter-zipkin");
|
|
28
|
-
const utils_1 = require("./utils");
|
|
29
|
-
class TracerProviderWithEnvExporters extends sdk_trace_node_1.NodeTracerProvider {
|
|
30
|
-
constructor(config = {}) {
|
|
31
|
-
super(config);
|
|
32
|
-
this._configuredExporters = [];
|
|
33
|
-
this._hasSpanProcessors = false;
|
|
34
|
-
let traceExportersList = (0, utils_1.filterBlanksAndNulls)(Array.from(new Set((0, core_1.getEnv)().OTEL_TRACES_EXPORTER.split(','))));
|
|
35
|
-
if (traceExportersList[0] === 'none') {
|
|
36
|
-
api_1.diag.warn('OTEL_TRACES_EXPORTER contains "none". SDK will not be initialized.');
|
|
37
|
-
}
|
|
38
|
-
else if (traceExportersList.length === 0) {
|
|
39
|
-
api_1.diag.warn('OTEL_TRACES_EXPORTER is empty. Using default otlp exporter.');
|
|
40
|
-
traceExportersList = ['otlp'];
|
|
41
|
-
this.createExportersFromList(traceExportersList);
|
|
42
|
-
this._spanProcessors = this.configureSpanProcessors(this._configuredExporters);
|
|
43
|
-
this._spanProcessors.forEach(processor => {
|
|
44
|
-
this.addSpanProcessor(processor);
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
if (traceExportersList.length > 1 &&
|
|
49
|
-
traceExportersList.includes('none')) {
|
|
50
|
-
api_1.diag.warn('OTEL_TRACES_EXPORTER contains "none" along with other exporters. Using default otlp exporter.');
|
|
51
|
-
traceExportersList = ['otlp'];
|
|
52
|
-
}
|
|
53
|
-
this.createExportersFromList(traceExportersList);
|
|
54
|
-
if (this._configuredExporters.length > 0) {
|
|
55
|
-
this._spanProcessors = this.configureSpanProcessors(this._configuredExporters);
|
|
56
|
-
this._spanProcessors.forEach(processor => {
|
|
57
|
-
this.addSpanProcessor(processor);
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
api_1.diag.warn('Unable to set up trace exporter(s) due to invalid exporter and/or protocol values.');
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
static configureOtlp() {
|
|
66
|
-
const protocol = this.getOtlpProtocol();
|
|
67
|
-
switch (protocol) {
|
|
68
|
-
case 'grpc':
|
|
69
|
-
return new exporter_trace_otlp_grpc_1.OTLPTraceExporter();
|
|
70
|
-
case 'http/json':
|
|
71
|
-
return new exporter_trace_otlp_http_1.OTLPTraceExporter();
|
|
72
|
-
case 'http/protobuf':
|
|
73
|
-
return new exporter_trace_otlp_proto_1.OTLPTraceExporter();
|
|
74
|
-
default:
|
|
75
|
-
api_1.diag.warn(`Unsupported OTLP traces protocol: ${protocol}. Using http/protobuf.`);
|
|
76
|
-
return new exporter_trace_otlp_proto_1.OTLPTraceExporter();
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
static getOtlpProtocol() {
|
|
80
|
-
var _b, _c, _d;
|
|
81
|
-
const parsedEnvValues = (0, core_1.getEnvWithoutDefaults)();
|
|
82
|
-
return ((_d = (_c = (_b = parsedEnvValues.OTEL_EXPORTER_OTLP_TRACES_PROTOCOL) !== null && _b !== void 0 ? _b : parsedEnvValues.OTEL_EXPORTER_OTLP_PROTOCOL) !== null && _c !== void 0 ? _c : (0, core_1.getEnv)().OTEL_EXPORTER_OTLP_TRACES_PROTOCOL) !== null && _d !== void 0 ? _d : (0, core_1.getEnv)().OTEL_EXPORTER_OTLP_PROTOCOL);
|
|
83
|
-
}
|
|
84
|
-
static configureJaeger() {
|
|
85
|
-
// The JaegerExporter does not support being required in bundled
|
|
86
|
-
// environments. By delaying the require statement to here, we only crash when
|
|
87
|
-
// the exporter is actually used in such an environment.
|
|
88
|
-
try {
|
|
89
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
90
|
-
const { JaegerExporter } = require('@opentelemetry/exporter-jaeger');
|
|
91
|
-
return new JaegerExporter();
|
|
92
|
-
}
|
|
93
|
-
catch (e) {
|
|
94
|
-
throw new Error(`Could not instantiate JaegerExporter. This could be due to the JaegerExporter's lack of support for bundling. If possible, use @opentelemetry/exporter-trace-otlp-proto instead. Original Error: ${e}`);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
addSpanProcessor(spanProcessor) {
|
|
98
|
-
super.addSpanProcessor(spanProcessor);
|
|
99
|
-
this._hasSpanProcessors = true;
|
|
100
|
-
}
|
|
101
|
-
register(config) {
|
|
102
|
-
if (this._hasSpanProcessors) {
|
|
103
|
-
super.register(config);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
createExportersFromList(exporterList) {
|
|
107
|
-
exporterList.forEach(exporterName => {
|
|
108
|
-
const exporter = this._getSpanExporter(exporterName);
|
|
109
|
-
if (exporter) {
|
|
110
|
-
this._configuredExporters.push(exporter);
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
api_1.diag.warn(`Unrecognized OTEL_TRACES_EXPORTER value: ${exporterName}.`);
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
configureSpanProcessors(exporters) {
|
|
118
|
-
return exporters.map(exporter => {
|
|
119
|
-
if (exporter instanceof sdk_trace_base_1.ConsoleSpanExporter) {
|
|
120
|
-
return new sdk_trace_base_1.SimpleSpanProcessor(exporter);
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
return new sdk_trace_base_1.BatchSpanProcessor(exporter);
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
exports.TracerProviderWithEnvExporters = TracerProviderWithEnvExporters;
|
|
129
|
-
_a = TracerProviderWithEnvExporters;
|
|
130
|
-
TracerProviderWithEnvExporters._registeredExporters = new Map([
|
|
131
|
-
['otlp', () => _a.configureOtlp()],
|
|
132
|
-
['zipkin', () => new exporter_zipkin_1.ZipkinExporter()],
|
|
133
|
-
['jaeger', () => _a.configureJaeger()],
|
|
134
|
-
['console', () => new sdk_trace_base_1.ConsoleSpanExporter()],
|
|
135
|
-
]);
|
|
136
|
-
//# sourceMappingURL=TracerProviderWithEnvExporter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TracerProviderWithEnvExporter.js","sourceRoot":"","sources":["../../src/TracerProviderWithEnvExporter.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { diag } from '@opentelemetry/api';\nimport { getEnv, getEnvWithoutDefaults } from '@opentelemetry/core';\nimport {\n ConsoleSpanExporter,\n SpanExporter,\n BatchSpanProcessor,\n SimpleSpanProcessor,\n SDKRegistrationConfig,\n SpanProcessor,\n} from '@opentelemetry/sdk-trace-base';\nimport {\n NodeTracerConfig,\n NodeTracerProvider,\n} from '@opentelemetry/sdk-trace-node';\nimport { OTLPTraceExporter as OTLPProtoTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto';\nimport { OTLPTraceExporter as OTLPHttpTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { OTLPTraceExporter as OTLPGrpcTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc';\nimport { ZipkinExporter } from '@opentelemetry/exporter-zipkin';\nimport { filterBlanksAndNulls } from './utils';\n\nexport class TracerProviderWithEnvExporters extends NodeTracerProvider {\n private _configuredExporters: SpanExporter[] = [];\n private _spanProcessors: SpanProcessor[] | undefined;\n private _hasSpanProcessors: boolean = false;\n\n static configureOtlp(): SpanExporter {\n const protocol = this.getOtlpProtocol();\n\n switch (protocol) {\n case 'grpc':\n return new OTLPGrpcTraceExporter();\n case 'http/json':\n return new OTLPHttpTraceExporter();\n case 'http/protobuf':\n return new OTLPProtoTraceExporter();\n default:\n diag.warn(\n `Unsupported OTLP traces protocol: ${protocol}. Using http/protobuf.`\n );\n return new OTLPProtoTraceExporter();\n }\n }\n\n static getOtlpProtocol(): string {\n const parsedEnvValues = getEnvWithoutDefaults();\n\n return (\n parsedEnvValues.OTEL_EXPORTER_OTLP_TRACES_PROTOCOL ??\n parsedEnvValues.OTEL_EXPORTER_OTLP_PROTOCOL ??\n getEnv().OTEL_EXPORTER_OTLP_TRACES_PROTOCOL ??\n getEnv().OTEL_EXPORTER_OTLP_PROTOCOL\n );\n }\n\n private static configureJaeger() {\n // The JaegerExporter does not support being required in bundled\n // environments. By delaying the require statement to here, we only crash when\n // the exporter is actually used in such an environment.\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { JaegerExporter } = require('@opentelemetry/exporter-jaeger');\n return new JaegerExporter();\n } catch (e) {\n throw new Error(\n `Could not instantiate JaegerExporter. This could be due to the JaegerExporter's lack of support for bundling. If possible, use @opentelemetry/exporter-trace-otlp-proto instead. Original Error: ${e}`\n );\n }\n }\n\n protected static override _registeredExporters = new Map<\n string,\n () => SpanExporter\n >([\n ['otlp', () => this.configureOtlp()],\n ['zipkin', () => new ZipkinExporter()],\n ['jaeger', () => this.configureJaeger()],\n ['console', () => new ConsoleSpanExporter()],\n ]);\n\n public constructor(config: NodeTracerConfig = {}) {\n super(config);\n let traceExportersList = filterBlanksAndNulls(\n Array.from(new Set(getEnv().OTEL_TRACES_EXPORTER.split(',')))\n );\n\n if (traceExportersList[0] === 'none') {\n diag.warn(\n 'OTEL_TRACES_EXPORTER contains \"none\". SDK will not be initialized.'\n );\n } else if (traceExportersList.length === 0) {\n diag.warn('OTEL_TRACES_EXPORTER is empty. Using default otlp exporter.');\n\n traceExportersList = ['otlp'];\n this.createExportersFromList(traceExportersList);\n\n this._spanProcessors = this.configureSpanProcessors(\n this._configuredExporters\n );\n this._spanProcessors.forEach(processor => {\n this.addSpanProcessor(processor);\n });\n } else {\n if (\n traceExportersList.length > 1 &&\n traceExportersList.includes('none')\n ) {\n diag.warn(\n 'OTEL_TRACES_EXPORTER contains \"none\" along with other exporters. Using default otlp exporter.'\n );\n traceExportersList = ['otlp'];\n }\n\n this.createExportersFromList(traceExportersList);\n\n if (this._configuredExporters.length > 0) {\n this._spanProcessors = this.configureSpanProcessors(\n this._configuredExporters\n );\n this._spanProcessors.forEach(processor => {\n this.addSpanProcessor(processor);\n });\n } else {\n diag.warn(\n 'Unable to set up trace exporter(s) due to invalid exporter and/or protocol values.'\n );\n }\n }\n }\n\n override addSpanProcessor(spanProcessor: SpanProcessor) {\n super.addSpanProcessor(spanProcessor);\n this._hasSpanProcessors = true;\n }\n\n override register(config?: SDKRegistrationConfig) {\n if (this._hasSpanProcessors) {\n super.register(config);\n }\n }\n\n private createExportersFromList(exporterList: string[]) {\n exporterList.forEach(exporterName => {\n const exporter = this._getSpanExporter(exporterName);\n if (exporter) {\n this._configuredExporters.push(exporter);\n } else {\n diag.warn(`Unrecognized OTEL_TRACES_EXPORTER value: ${exporterName}.`);\n }\n });\n }\n\n private configureSpanProcessors(\n exporters: SpanExporter[]\n ): (BatchSpanProcessor | SimpleSpanProcessor)[] {\n return exporters.map(exporter => {\n if (exporter instanceof ConsoleSpanExporter) {\n return new SimpleSpanProcessor(exporter);\n } else {\n return new BatchSpanProcessor(exporter);\n }\n });\n }\n}\n"]}
|