@opentelemetry/configuration 0.213.0 → 0.214.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
1
- import { ConfigFactory } from './IConfigFactory';
1
+ import type { ConfigFactory } from './IConfigFactory';
2
2
  export declare function createConfigFactory(): ConfigFactory;
3
3
  //# sourceMappingURL=ConfigFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigFactory.js","sourceRoot":"","sources":["../../src/ConfigFactory.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,yEAAsE;AACtE,2DAA4E;AAE5E,SAAgB,mBAAmB;IACjC,IAAI,IAAA,sCAAkB,GAAE,EAAE;QACxB,OAAO,IAAI,qCAAiB,EAAE,CAAC;KAChC;IACD,OAAO,IAAI,mDAAwB,EAAE,CAAC;AACxC,CAAC;AALD,kDAKC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ConfigFactory } from './IConfigFactory';\nimport { EnvironmentConfigFactory } from './EnvironmentConfigFactory';\nimport { FileConfigFactory, hasValidConfigFile } from './FileConfigFactory';\n\nexport function createConfigFactory(): ConfigFactory {\n if (hasValidConfigFile()) {\n return new FileConfigFactory();\n }\n return new EnvironmentConfigFactory();\n}\n"]}
1
+ {"version":3,"file":"ConfigFactory.js","sourceRoot":"","sources":["../../src/ConfigFactory.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,yEAAsE;AACtE,2DAA4E;AAE5E,SAAgB,mBAAmB;IACjC,IAAI,IAAA,sCAAkB,GAAE,EAAE;QACxB,OAAO,IAAI,qCAAiB,EAAE,CAAC;KAChC;IACD,OAAO,IAAI,mDAAwB,EAAE,CAAC;AACxC,CAAC;AALD,kDAKC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ConfigFactory } from './IConfigFactory';\nimport { EnvironmentConfigFactory } from './EnvironmentConfigFactory';\nimport { FileConfigFactory, hasValidConfigFile } from './FileConfigFactory';\n\nexport function createConfigFactory(): ConfigFactory {\n if (hasValidConfigFile()) {\n return new FileConfigFactory();\n }\n return new EnvironmentConfigFactory();\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { ConfigurationModel } from './models/configModel';
2
- import { ConfigFactory } from './IConfigFactory';
1
+ import type { ConfigurationModel } from './models/configModel';
2
+ import type { ConfigFactory } from './IConfigFactory';
3
3
  /**
4
4
  * EnvironmentConfigProvider provides a configuration based on environment variables.
5
5
  */
@@ -11,6 +11,7 @@ export declare class EnvironmentConfigFactory implements ConfigFactory {
11
11
  export declare function setResources(config: ConfigurationModel): void;
12
12
  export declare function setAttributeLimits(config: ConfigurationModel): void;
13
13
  export declare function setPropagators(config: ConfigurationModel): void;
14
+ export declare function setSampler(config: ConfigurationModel): void;
14
15
  export declare function setTracerProvider(config: ConfigurationModel): void;
15
16
  export declare function setMeterProvider(config: ConfigurationModel): void;
16
17
  export declare function setLoggerProvider(config: ConfigurationModel): void;
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.setLoggerProvider = exports.setMeterProvider = exports.setTracerProvider = exports.setPropagators = exports.setAttributeLimits = exports.setResources = exports.EnvironmentConfigFactory = void 0;
7
+ exports.setLoggerProvider = exports.setMeterProvider = exports.setTracerProvider = exports.setSampler = exports.setPropagators = exports.setAttributeLimits = exports.setResources = exports.EnvironmentConfigFactory = void 0;
8
8
  const configModel_1 = require("./models/configModel");
9
9
  const core_1 = require("@opentelemetry/core");
10
10
  const meterProviderModel_1 = require("./models/meterProviderModel");
@@ -25,10 +25,6 @@ class EnvironmentConfigFactory {
25
25
  if (logLevel) {
26
26
  this._config.log_level = logLevel;
27
27
  }
28
- const nodeResourceDetectors = (0, core_1.getStringListFromEnv)('OTEL_NODE_RESOURCE_DETECTORS');
29
- if (nodeResourceDetectors) {
30
- this._config.node_resource_detectors = nodeResourceDetectors;
31
- }
32
28
  setResources(this._config);
33
29
  setAttributeLimits(this._config);
34
30
  setPropagators(this._config);
@@ -74,6 +70,31 @@ function setResources(config) {
74
70
  }
75
71
  }
76
72
  }
73
+ const nodeDetectors = (0, core_1.getStringListFromEnv)('OTEL_NODE_RESOURCE_DETECTORS');
74
+ if (nodeDetectors &&
75
+ nodeDetectors.length > 0 &&
76
+ !nodeDetectors.includes('none')) {
77
+ const all = nodeDetectors.includes('all');
78
+ const detectors = [];
79
+ if (all || nodeDetectors.includes('container'))
80
+ detectors.push({ container: {} });
81
+ if (all || nodeDetectors.includes('host'))
82
+ detectors.push({ host: {} });
83
+ if (all || nodeDetectors.includes('os'))
84
+ detectors.push({ os: {} });
85
+ if (all || nodeDetectors.includes('process'))
86
+ detectors.push({ process: {} });
87
+ if (all || nodeDetectors.includes('serviceinstance'))
88
+ detectors.push({ service: {} });
89
+ if (all || nodeDetectors.includes('env'))
90
+ detectors.push({ env: {} });
91
+ if (detectors.length > 0) {
92
+ if (config.resource['detection/development'] == null) {
93
+ config.resource['detection/development'] = {};
94
+ }
95
+ config.resource['detection/development'].detectors = detectors;
96
+ }
97
+ }
77
98
  }
78
99
  exports.setResources = setResources;
79
100
  function setAttributeLimits(config) {
@@ -113,6 +134,46 @@ function setPropagators(config) {
113
134
  }
114
135
  }
115
136
  exports.setPropagators = setPropagators;
137
+ function setSampler(config) {
138
+ const sampler = (0, core_1.getStringFromEnv)('OTEL_TRACES_SAMPLER');
139
+ const arg = (0, core_1.getStringFromEnv)('OTEL_TRACES_SAMPLER_ARG');
140
+ if (!sampler || !config.tracer_provider) {
141
+ return;
142
+ }
143
+ const ratio = arg ? parseFloat(arg) : 1.0;
144
+ switch (sampler) {
145
+ case 'always_on':
146
+ config.tracer_provider.sampler = { always_on: {} };
147
+ break;
148
+ case 'always_off':
149
+ config.tracer_provider.sampler = { always_off: {} };
150
+ break;
151
+ case 'traceidratio':
152
+ config.tracer_provider.sampler = {
153
+ trace_id_ratio_based: { ratio },
154
+ };
155
+ break;
156
+ case 'parentbased_always_on':
157
+ config.tracer_provider.sampler = {
158
+ parent_based: { root: { always_on: {} } },
159
+ };
160
+ break;
161
+ case 'parentbased_always_off':
162
+ config.tracer_provider.sampler = {
163
+ parent_based: { root: { always_off: {} } },
164
+ };
165
+ break;
166
+ case 'parentbased_traceidratio':
167
+ config.tracer_provider.sampler = {
168
+ parent_based: { root: { trace_id_ratio_based: { ratio } } },
169
+ };
170
+ break;
171
+ default:
172
+ api_1.diag.warn(`Unknown sampler type: ${sampler}`);
173
+ break;
174
+ }
175
+ }
176
+ exports.setSampler = setSampler;
116
177
  function setTracerProvider(config) {
117
178
  const exportersType = Array.from(new Set((0, core_1.getStringListFromEnv)('OTEL_TRACES_EXPORTER')));
118
179
  if (exportersType.length === 0) {
@@ -123,6 +184,7 @@ function setTracerProvider(config) {
123
184
  return;
124
185
  }
125
186
  config.tracer_provider = (0, tracerProviderModel_1.initializeDefaultTracerProviderConfiguration)();
187
+ setSampler(config);
126
188
  const attributeValueLengthLimit = (0, core_1.getNumberFromEnv)('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT');
127
189
  if (attributeValueLengthLimit) {
128
190
  config.tracer_provider.limits.attribute_value_length_limit =
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentConfigFactory.js","sourceRoot":"","sources":["../../src/EnvironmentConfigFactory.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n ConfigurationModel,\n initializeDefaultConfiguration,\n} from './models/configModel';\nimport {\n getBooleanFromEnv,\n getStringFromEnv,\n getStringListFromEnv,\n diagLogLevelFromString,\n getNumberFromEnv,\n} from '@opentelemetry/core';\nimport { ConfigFactory } from './IConfigFactory';\nimport {\n ExemplarFilter,\n ExporterDefaultHistogramAggregation,\n ExporterTemporalityPreference,\n initializeDefaultMeterProviderConfiguration,\n PeriodicMetricReader,\n PullMetricReader,\n} from './models/meterProviderModel';\nimport { OtlpHttpEncoding } from './models/commonModel';\nimport { diag } from '@opentelemetry/api';\nimport {\n BatchSpanProcessor,\n initializeDefaultTracerProviderConfiguration,\n} from './models/tracerProviderModel';\nimport {\n BatchLogRecordProcessor,\n initializeDefaultLoggerProviderConfiguration,\n} from './models/loggerProviderModel';\nimport { getGrpcTlsConfig, getHttpTlsConfig } from './utils';\n\n/**\n * EnvironmentConfigProvider provides a configuration based on environment variables.\n */\nexport class EnvironmentConfigFactory implements ConfigFactory {\n private _config: ConfigurationModel;\n\n constructor() {\n this._config = initializeDefaultConfiguration();\n this._config.disabled = getBooleanFromEnv('OTEL_SDK_DISABLED');\n\n const logLevel = diagLogLevelFromString(getStringFromEnv('OTEL_LOG_LEVEL'));\n if (logLevel) {\n this._config.log_level = logLevel;\n }\n\n const nodeResourceDetectors = getStringListFromEnv(\n 'OTEL_NODE_RESOURCE_DETECTORS'\n );\n if (nodeResourceDetectors) {\n this._config.node_resource_detectors = nodeResourceDetectors;\n }\n\n setResources(this._config);\n setAttributeLimits(this._config);\n setPropagators(this._config);\n setTracerProvider(this._config);\n setMeterProvider(this._config);\n setLoggerProvider(this._config);\n }\n\n getConfigModel(): ConfigurationModel {\n return this._config;\n }\n}\n\nexport function setResources(config: ConfigurationModel): void {\n if (config.resource == null) {\n config.resource = {};\n }\n\n const resourceAttrList = getStringFromEnv('OTEL_RESOURCE_ATTRIBUTES');\n const list = getStringListFromEnv('OTEL_RESOURCE_ATTRIBUTES');\n const serviceName = getStringFromEnv('OTEL_SERVICE_NAME');\n\n if (serviceName) {\n config.resource.attributes = [\n {\n name: 'service.name',\n value: serviceName,\n type: 'string',\n },\n ];\n }\n if (list && list.length > 0) {\n config.resource.attributes_list = resourceAttrList;\n if (config.resource.attributes == null) {\n config.resource.attributes = [];\n }\n\n for (let i = 0; i < list.length; i++) {\n const element = list[i].split('=');\n if (\n element[0] !== 'service.name' ||\n (element[0] === 'service.name' && serviceName === undefined)\n ) {\n config.resource.attributes.push({\n name: element[0],\n value: element[1],\n type: 'string',\n });\n }\n }\n }\n}\n\nexport function setAttributeLimits(config: ConfigurationModel): void {\n const attributeValueLengthLimit = getNumberFromEnv(\n 'OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT'\n );\n if (attributeValueLengthLimit && attributeValueLengthLimit > 0) {\n if (config.attribute_limits == null) {\n config.attribute_limits = { attribute_count_limit: 128 };\n }\n config.attribute_limits.attribute_value_length_limit =\n attributeValueLengthLimit;\n }\n\n const attributeCountLimit = getNumberFromEnv('OTEL_ATTRIBUTE_COUNT_LIMIT');\n if (attributeCountLimit) {\n if (config.attribute_limits == null) {\n config.attribute_limits = { attribute_count_limit: attributeCountLimit };\n } else {\n config.attribute_limits.attribute_count_limit = attributeCountLimit;\n }\n }\n}\n\nexport function setPropagators(config: ConfigurationModel): void {\n if (config.propagator == null) {\n config.propagator = {};\n }\n const composite = getStringListFromEnv('OTEL_PROPAGATORS');\n if (composite && composite.length > 0) {\n config.propagator.composite = [];\n for (let i = 0; i < composite.length; i++) {\n config.propagator.composite.push({ [composite[i]]: null });\n }\n }\n const compositeList = getStringFromEnv('OTEL_PROPAGATORS');\n if (compositeList) {\n config.propagator.composite_list = compositeList;\n }\n}\n\nexport function setTracerProvider(config: ConfigurationModel): void {\n const exportersType = Array.from(\n new Set(getStringListFromEnv('OTEL_TRACES_EXPORTER'))\n );\n if (exportersType.length === 0) {\n return;\n }\n if (exportersType.includes('none')) {\n diag.info(\n `OTEL_TRACES_EXPORTER contains \"none\". Tracer provider will not be initialized.`\n );\n return;\n }\n config.tracer_provider = initializeDefaultTracerProviderConfiguration();\n\n const attributeValueLengthLimit = getNumberFromEnv(\n 'OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT'\n );\n if (attributeValueLengthLimit) {\n config.tracer_provider.limits!.attribute_value_length_limit =\n attributeValueLengthLimit;\n }\n\n const attributeCountLimit = getNumberFromEnv(\n 'OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT'\n );\n if (attributeCountLimit) {\n config.tracer_provider.limits!.attribute_count_limit = attributeCountLimit;\n }\n\n const eventCountLimit = getNumberFromEnv('OTEL_SPAN_EVENT_COUNT_LIMIT');\n if (eventCountLimit) {\n config.tracer_provider.limits!.event_count_limit = eventCountLimit;\n }\n\n const linkCountLimit = getNumberFromEnv('OTEL_SPAN_LINK_COUNT_LIMIT');\n if (linkCountLimit) {\n config.tracer_provider.limits!.link_count_limit = linkCountLimit;\n }\n\n const eventAttributeCountLimit = getNumberFromEnv(\n 'OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT'\n );\n if (eventAttributeCountLimit) {\n config.tracer_provider.limits!.event_attribute_count_limit =\n eventAttributeCountLimit;\n }\n\n const linkAttributeCountLimit = getNumberFromEnv(\n 'OTEL_LINK_ATTRIBUTE_COUNT_LIMIT'\n );\n if (linkAttributeCountLimit) {\n config.tracer_provider.limits!.link_attribute_count_limit =\n linkAttributeCountLimit;\n }\n\n const batch: BatchSpanProcessor = { exporter: {} };\n const scheduleDelay = getNumberFromEnv('OTEL_BSP_SCHEDULE_DELAY') ?? 5000;\n if (scheduleDelay) {\n batch.schedule_delay = scheduleDelay;\n }\n\n const exportTimeout = getNumberFromEnv('OTEL_BSP_EXPORT_TIMEOUT') ?? 30000;\n if (exportTimeout) {\n batch.export_timeout = exportTimeout;\n }\n\n const maxQueueSize = getNumberFromEnv('OTEL_BSP_MAX_QUEUE_SIZE') ?? 2048;\n if (maxQueueSize) {\n batch.max_queue_size = maxQueueSize;\n }\n\n const maxExportBatchSize =\n getNumberFromEnv('OTEL_BSP_MAX_EXPORT_BATCH_SIZE') ?? 512;\n if (maxExportBatchSize) {\n batch.max_export_batch_size = maxExportBatchSize;\n }\n\n for (let i = 0; i < exportersType.length; i++) {\n const exporterType = exportersType[i];\n const batchInfo = { ...batch };\n if (exporterType === 'console') {\n config.tracer_provider.processors.push({\n simple: { exporter: { console: {} } },\n });\n } else {\n // 'otlp' and default\n const protocol =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_PROTOCOL') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_PROTOCOL') ??\n 'http/protobuf';\n const certificateFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CERTIFICATE');\n const clientKeyFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CLIENT_KEY');\n const clientCertificateFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE');\n const compression =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_COMPRESSION') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_COMPRESSION');\n const timeout =\n getNumberFromEnv('OTEL_EXPORTER_OTLP_TRACES_TIMEOUT') ??\n getNumberFromEnv('OTEL_EXPORTER_OTLP_TIMEOUT') ??\n 10000;\n const headersList =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_HEADERS') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_HEADERS');\n\n if (protocol === 'grpc') {\n delete batchInfo.exporter.otlp_http;\n batchInfo.exporter.otlp_grpc = {};\n const endpoint =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_ENDPOINT') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT') ??\n 'http://localhost:4317';\n if (endpoint) {\n batchInfo.exporter.otlp_grpc.endpoint = endpoint;\n }\n const tls = getGrpcTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n if (tls) {\n batchInfo.exporter.otlp_grpc.tls = tls;\n }\n if (compression) {\n batchInfo.exporter.otlp_grpc.compression = compression;\n }\n if (timeout) {\n batchInfo.exporter.otlp_grpc.timeout = timeout;\n }\n if (headersList) {\n batchInfo.exporter.otlp_grpc.headers_list = headersList;\n }\n } else {\n if (batchInfo.exporter.otlp_http == null) {\n batchInfo.exporter.otlp_http = {};\n }\n const endpoint =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_ENDPOINT') ??\n (getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT')\n ? `${getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT')}/v1/traces`\n : 'http://localhost:4318/v1/traces');\n if (endpoint) {\n batchInfo.exporter.otlp_http.endpoint = endpoint;\n }\n const tls = getHttpTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n if (tls) {\n batchInfo.exporter.otlp_http.tls = tls;\n }\n if (compression) {\n batchInfo.exporter.otlp_http.compression = compression;\n }\n if (timeout) {\n batchInfo.exporter.otlp_http.timeout = timeout;\n }\n if (headersList) {\n batchInfo.exporter.otlp_http.headers_list = headersList;\n }\n if (protocol === 'http/json') {\n batchInfo.exporter.otlp_http.encoding = OtlpHttpEncoding.JSON;\n } else if (protocol === 'http/protobuf') {\n batchInfo.exporter.otlp_http.encoding = OtlpHttpEncoding.Protobuf;\n }\n }\n\n config.tracer_provider.processors.push({ batch: batchInfo });\n }\n }\n}\n\nexport function setMeterProvider(config: ConfigurationModel): void {\n const exportersType = Array.from(\n new Set(getStringListFromEnv('OTEL_METRICS_EXPORTER'))\n );\n if (exportersType.length === 0) {\n return;\n }\n if (exportersType.includes('none')) {\n diag.info(\n `OTEL_METRICS_EXPORTER contains \"none\". Meter provider will not be initialized.`\n );\n return;\n }\n config.meter_provider = initializeDefaultMeterProviderConfiguration();\n\n const readerPeriodic: PeriodicMetricReader = { exporter: {} };\n const interval = getNumberFromEnv('OTEL_METRIC_EXPORT_INTERVAL') ?? 60000;\n if (interval) {\n readerPeriodic.interval = interval;\n }\n for (let i = 0; i < exportersType.length; i++) {\n const exporterType = exportersType[i];\n if (exporterType === 'prometheus') {\n // Prometheus uses a pull reader\n const pullReader: PullMetricReader = {\n exporter: {\n 'prometheus/development': {\n host:\n getStringFromEnv('OTEL_EXPORTER_PROMETHEUS_HOST') ?? 'localhost',\n port: getNumberFromEnv('OTEL_EXPORTER_PROMETHEUS_PORT') ?? 9464,\n without_scope_info: false,\n without_target_info: false,\n },\n },\n };\n config.meter_provider.readers.push({ pull: pullReader });\n continue;\n }\n\n const readerPeriodicInfo = { ...readerPeriodic };\n const timeout = getNumberFromEnv('OTEL_METRIC_EXPORT_TIMEOUT') ?? 30000;\n if (timeout) {\n readerPeriodicInfo.timeout = timeout;\n }\n\n if (exporterType === 'console') {\n readerPeriodicInfo.exporter = { console: {} };\n } else {\n // 'otlp' and default\n const protocol =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_PROTOCOL') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_PROTOCOL') ??\n 'http/protobuf';\n const certificateFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CERTIFICATE');\n const clientKeyFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CLIENT_KEY');\n const clientCertificateFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE');\n const compression =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_COMPRESSION') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_COMPRESSION');\n const timeoutExporter =\n getNumberFromEnv('OTEL_EXPORTER_OTLP_METRICS_TIMEOUT') ??\n getNumberFromEnv('OTEL_EXPORTER_OTLP_TIMEOUT') ??\n 10000;\n const headersList =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_HEADERS') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_HEADERS');\n const temporalityPreference =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE') ??\n 'cumulative';\n const defaultHistogramAggregation =\n getStringFromEnv(\n 'OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION'\n ) ?? 'explicit_bucket_histogram';\n\n if (protocol === 'grpc') {\n delete readerPeriodicInfo.exporter.otlp_http;\n readerPeriodicInfo.exporter.otlp_grpc = {};\n const endpoint =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_ENDPOINT') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT') ??\n 'http://localhost:4317';\n if (endpoint) {\n readerPeriodicInfo.exporter.otlp_grpc.endpoint = endpoint;\n }\n const tls = getGrpcTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n if (tls) {\n readerPeriodicInfo.exporter.otlp_grpc.tls = tls;\n }\n if (compression) {\n readerPeriodicInfo.exporter.otlp_grpc.compression = compression;\n }\n if (timeoutExporter) {\n readerPeriodicInfo.exporter.otlp_grpc.timeout = timeoutExporter;\n }\n if (headersList) {\n readerPeriodicInfo.exporter.otlp_grpc.headers_list = headersList;\n }\n if (temporalityPreference) {\n switch (temporalityPreference) {\n case 'cumulative':\n readerPeriodicInfo.exporter.otlp_grpc.temporality_preference =\n ExporterTemporalityPreference.Cumulative;\n break;\n case 'delta':\n readerPeriodicInfo.exporter.otlp_grpc.temporality_preference =\n ExporterTemporalityPreference.Delta;\n break;\n case 'low_memory':\n readerPeriodicInfo.exporter.otlp_grpc.temporality_preference =\n ExporterTemporalityPreference.LowMemory;\n break;\n default:\n readerPeriodicInfo.exporter.otlp_grpc.temporality_preference =\n ExporterTemporalityPreference.Cumulative;\n break;\n }\n }\n if (defaultHistogramAggregation) {\n switch (defaultHistogramAggregation) {\n case 'explicit_bucket_histogram':\n readerPeriodicInfo.exporter.otlp_grpc.default_histogram_aggregation =\n ExporterDefaultHistogramAggregation.ExplicitBucketHistogram;\n break;\n case 'base2_exponential_bucket_histogram':\n readerPeriodicInfo.exporter.otlp_grpc.default_histogram_aggregation =\n ExporterDefaultHistogramAggregation.Base2ExponentialBucketHistogram;\n break;\n default:\n readerPeriodicInfo.exporter.otlp_grpc.default_histogram_aggregation =\n ExporterDefaultHistogramAggregation.ExplicitBucketHistogram;\n break;\n }\n }\n } else {\n if (readerPeriodicInfo.exporter.otlp_http == null) {\n readerPeriodicInfo.exporter.otlp_http = {};\n }\n const endpoint =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_ENDPOINT') ??\n (getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT')\n ? `${getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT')}/v1/metrics`\n : 'http://localhost:4318/v1/metrics');\n if (endpoint) {\n readerPeriodicInfo.exporter.otlp_http.endpoint = endpoint;\n }\n const tls = getHttpTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n if (tls) {\n readerPeriodicInfo.exporter.otlp_http.tls = tls;\n }\n if (compression) {\n readerPeriodicInfo.exporter.otlp_http.compression = compression;\n }\n if (timeoutExporter) {\n readerPeriodicInfo.exporter.otlp_http.timeout = timeoutExporter;\n }\n if (headersList) {\n readerPeriodicInfo.exporter.otlp_http.headers_list = headersList;\n }\n if (temporalityPreference) {\n switch (temporalityPreference) {\n case 'cumulative':\n readerPeriodicInfo.exporter.otlp_http.temporality_preference =\n ExporterTemporalityPreference.Cumulative;\n break;\n case 'delta':\n readerPeriodicInfo.exporter.otlp_http.temporality_preference =\n ExporterTemporalityPreference.Delta;\n break;\n case 'low_memory':\n readerPeriodicInfo.exporter.otlp_http.temporality_preference =\n ExporterTemporalityPreference.LowMemory;\n break;\n default:\n readerPeriodicInfo.exporter.otlp_http.temporality_preference =\n ExporterTemporalityPreference.Cumulative;\n break;\n }\n }\n if (defaultHistogramAggregation) {\n switch (defaultHistogramAggregation) {\n case 'explicit_bucket_histogram':\n readerPeriodicInfo.exporter.otlp_http.default_histogram_aggregation =\n ExporterDefaultHistogramAggregation.ExplicitBucketHistogram;\n break;\n case 'base2_exponential_bucket_histogram':\n readerPeriodicInfo.exporter.otlp_http.default_histogram_aggregation =\n ExporterDefaultHistogramAggregation.Base2ExponentialBucketHistogram;\n break;\n default:\n readerPeriodicInfo.exporter.otlp_http.default_histogram_aggregation =\n ExporterDefaultHistogramAggregation.ExplicitBucketHistogram;\n break;\n }\n }\n if (protocol === 'http/json') {\n readerPeriodicInfo.exporter.otlp_http.encoding =\n OtlpHttpEncoding.JSON;\n } else if (protocol === 'http/protobuf') {\n readerPeriodicInfo.exporter.otlp_http.encoding =\n OtlpHttpEncoding.Protobuf;\n }\n }\n }\n config.meter_provider.readers.push({ periodic: readerPeriodicInfo });\n }\n\n const exemplarFilter =\n getStringFromEnv('OTEL_METRICS_EXEMPLAR_FILTER') ?? 'trace_based';\n if (exemplarFilter) {\n switch (exemplarFilter) {\n case 'trace_based':\n config.meter_provider.exemplar_filter = ExemplarFilter.TraceBased;\n break;\n case 'always_on':\n config.meter_provider.exemplar_filter = ExemplarFilter.AlwaysOn;\n break;\n case 'always_off':\n config.meter_provider.exemplar_filter = ExemplarFilter.AlwaysOff;\n break;\n default:\n config.meter_provider.exemplar_filter = ExemplarFilter.TraceBased;\n break;\n }\n }\n}\n\nexport function setLoggerProvider(config: ConfigurationModel): void {\n const exportersType = Array.from(\n new Set(getStringListFromEnv('OTEL_LOGS_EXPORTER'))\n );\n if (exportersType.length === 0) {\n return;\n }\n if (exportersType.includes('none')) {\n diag.info(\n `OTEL_LOGS_EXPORTER contains \"none\". Logger provider will not be initialized.`\n );\n return;\n }\n config.logger_provider = initializeDefaultLoggerProviderConfiguration();\n\n const attributeValueLengthLimit = getNumberFromEnv(\n 'OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT'\n );\n const attributeCountLimit = getNumberFromEnv(\n 'OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT'\n );\n if (attributeValueLengthLimit || attributeCountLimit) {\n if (attributeValueLengthLimit) {\n config.logger_provider.limits!.attribute_value_length_limit =\n attributeValueLengthLimit;\n }\n\n if (attributeCountLimit) {\n config.logger_provider.limits!.attribute_count_limit =\n attributeCountLimit;\n }\n }\n\n const batch: BatchLogRecordProcessor = { exporter: {} };\n const scheduleDelay = getNumberFromEnv('OTEL_BLRP_SCHEDULE_DELAY') ?? 1000;\n if (scheduleDelay) {\n batch.schedule_delay = scheduleDelay;\n }\n\n const exportTimeout = getNumberFromEnv('OTEL_BLRP_EXPORT_TIMEOUT') ?? 30000;\n if (exportTimeout) {\n batch.export_timeout = exportTimeout;\n }\n\n const maxQueueSize = getNumberFromEnv('OTEL_BLRP_MAX_QUEUE_SIZE') ?? 2048;\n if (maxQueueSize) {\n batch.max_queue_size = maxQueueSize;\n }\n\n const maxExportBatchSize =\n getNumberFromEnv('OTEL_BLRP_MAX_EXPORT_BATCH_SIZE') ?? 512;\n if (maxExportBatchSize) {\n batch.max_export_batch_size = maxExportBatchSize;\n }\n\n for (let i = 0; i < exportersType.length; i++) {\n const exporterType = exportersType[i];\n const batchInfo = { ...batch };\n if (exporterType === 'console') {\n config.logger_provider.processors.push({\n simple: { exporter: { console: {} } },\n });\n } else {\n // 'otlp' and default\n const protocol =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_PROTOCOL') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_PROTOCOL') ??\n 'http/protobuf';\n const certificateFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CERTIFICATE');\n const clientKeyFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CLIENT_KEY');\n const clientCertificateFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE');\n const compression =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_COMPRESSION') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_COMPRESSION');\n const timeout =\n getNumberFromEnv('OTEL_EXPORTER_OTLP_LOGS_TIMEOUT') ??\n getNumberFromEnv('OTEL_EXPORTER_OTLP_TIMEOUT') ??\n 10000;\n const headersList =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_HEADERS') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_HEADERS');\n\n if (protocol === 'grpc') {\n delete batchInfo.exporter.otlp_http;\n batchInfo.exporter.otlp_grpc = {};\n const endpoint =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_ENDPOINT') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT') ??\n 'http://localhost:4317';\n if (endpoint) {\n batchInfo.exporter.otlp_grpc.endpoint = endpoint;\n }\n const tls = getGrpcTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n if (tls) {\n batchInfo.exporter.otlp_grpc.tls = tls;\n }\n if (compression) {\n batchInfo.exporter.otlp_grpc.compression = compression;\n }\n if (timeout) {\n batchInfo.exporter.otlp_grpc.timeout = timeout;\n }\n if (headersList) {\n batchInfo.exporter.otlp_grpc.headers_list = headersList;\n }\n } else {\n if (batchInfo.exporter.otlp_http == null) {\n batchInfo.exporter.otlp_http = {};\n }\n const endpoint =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_ENDPOINT') ??\n (getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT')\n ? `${getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT')}/v1/logs`\n : 'http://localhost:4318/v1/logs');\n if (endpoint) {\n batchInfo.exporter.otlp_http.endpoint = endpoint;\n }\n const tls = getHttpTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n if (tls) {\n batchInfo.exporter.otlp_http.tls = tls;\n }\n if (compression) {\n batchInfo.exporter.otlp_http.compression = compression;\n }\n if (timeout) {\n batchInfo.exporter.otlp_http.timeout = timeout;\n }\n if (headersList) {\n batchInfo.exporter.otlp_http.headers_list = headersList;\n }\n\n if (protocol === 'http/json') {\n batchInfo.exporter.otlp_http.encoding = OtlpHttpEncoding.JSON;\n } else if (protocol === 'http/protobuf') {\n batchInfo.exporter.otlp_http.encoding = OtlpHttpEncoding.Protobuf;\n }\n }\n config.logger_provider.processors.push({ batch: batchInfo });\n }\n }\n}\n"]}
1
+ {"version":3,"file":"EnvironmentConfigFactory.js","sourceRoot":"","sources":["../../src/EnvironmentConfigFactory.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ConfigurationModel } from './models/configModel';\nimport { initializeDefaultConfiguration } from './models/configModel';\nimport {\n getBooleanFromEnv,\n getStringFromEnv,\n getStringListFromEnv,\n diagLogLevelFromString,\n getNumberFromEnv,\n} from '@opentelemetry/core';\nimport type { ConfigFactory } from './IConfigFactory';\nimport type {\n PeriodicMetricReader,\n PullMetricReader,\n} from './models/meterProviderModel';\nimport {\n ExemplarFilter,\n ExporterDefaultHistogramAggregation,\n ExporterTemporalityPreference,\n initializeDefaultMeterProviderConfiguration,\n} from './models/meterProviderModel';\nimport { OtlpHttpEncoding } from './models/commonModel';\nimport { diag } from '@opentelemetry/api';\nimport type { BatchSpanProcessor } from './models/tracerProviderModel';\nimport { initializeDefaultTracerProviderConfiguration } from './models/tracerProviderModel';\nimport type { BatchLogRecordProcessor } from './models/loggerProviderModel';\nimport { initializeDefaultLoggerProviderConfiguration } from './models/loggerProviderModel';\nimport { getGrpcTlsConfig, getHttpTlsConfig } from './utils';\nimport type { ExperimentalResourceDetector } from './models/resourceModel';\n\n/**\n * EnvironmentConfigProvider provides a configuration based on environment variables.\n */\nexport class EnvironmentConfigFactory implements ConfigFactory {\n private _config: ConfigurationModel;\n\n constructor() {\n this._config = initializeDefaultConfiguration();\n this._config.disabled = getBooleanFromEnv('OTEL_SDK_DISABLED');\n\n const logLevel = diagLogLevelFromString(getStringFromEnv('OTEL_LOG_LEVEL'));\n if (logLevel) {\n this._config.log_level = logLevel;\n }\n\n setResources(this._config);\n setAttributeLimits(this._config);\n setPropagators(this._config);\n setTracerProvider(this._config);\n setMeterProvider(this._config);\n setLoggerProvider(this._config);\n }\n\n getConfigModel(): ConfigurationModel {\n return this._config;\n }\n}\n\nexport function setResources(config: ConfigurationModel): void {\n if (config.resource == null) {\n config.resource = {};\n }\n\n const resourceAttrList = getStringFromEnv('OTEL_RESOURCE_ATTRIBUTES');\n const list = getStringListFromEnv('OTEL_RESOURCE_ATTRIBUTES');\n const serviceName = getStringFromEnv('OTEL_SERVICE_NAME');\n\n if (serviceName) {\n config.resource.attributes = [\n {\n name: 'service.name',\n value: serviceName,\n type: 'string',\n },\n ];\n }\n if (list && list.length > 0) {\n config.resource.attributes_list = resourceAttrList;\n if (config.resource.attributes == null) {\n config.resource.attributes = [];\n }\n\n for (let i = 0; i < list.length; i++) {\n const element = list[i].split('=');\n if (\n element[0] !== 'service.name' ||\n (element[0] === 'service.name' && serviceName === undefined)\n ) {\n config.resource.attributes.push({\n name: element[0],\n value: element[1],\n type: 'string',\n });\n }\n }\n }\n\n const nodeDetectors = getStringListFromEnv('OTEL_NODE_RESOURCE_DETECTORS');\n if (\n nodeDetectors &&\n nodeDetectors.length > 0 &&\n !nodeDetectors.includes('none')\n ) {\n const all = nodeDetectors.includes('all');\n const detectors: ExperimentalResourceDetector[] = [];\n if (all || nodeDetectors.includes('container'))\n detectors.push({ container: {} });\n if (all || nodeDetectors.includes('host')) detectors.push({ host: {} });\n if (all || nodeDetectors.includes('os')) detectors.push({ os: {} });\n if (all || nodeDetectors.includes('process'))\n detectors.push({ process: {} });\n if (all || nodeDetectors.includes('serviceinstance'))\n detectors.push({ service: {} });\n if (all || nodeDetectors.includes('env')) detectors.push({ env: {} });\n if (detectors.length > 0) {\n if (config.resource['detection/development'] == null) {\n config.resource['detection/development'] = {};\n }\n config.resource['detection/development'].detectors = detectors;\n }\n }\n}\n\nexport function setAttributeLimits(config: ConfigurationModel): void {\n const attributeValueLengthLimit = getNumberFromEnv(\n 'OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT'\n );\n if (attributeValueLengthLimit && attributeValueLengthLimit > 0) {\n if (config.attribute_limits == null) {\n config.attribute_limits = { attribute_count_limit: 128 };\n }\n config.attribute_limits.attribute_value_length_limit =\n attributeValueLengthLimit;\n }\n\n const attributeCountLimit = getNumberFromEnv('OTEL_ATTRIBUTE_COUNT_LIMIT');\n if (attributeCountLimit) {\n if (config.attribute_limits == null) {\n config.attribute_limits = { attribute_count_limit: attributeCountLimit };\n } else {\n config.attribute_limits.attribute_count_limit = attributeCountLimit;\n }\n }\n}\n\nexport function setPropagators(config: ConfigurationModel): void {\n if (config.propagator == null) {\n config.propagator = {};\n }\n const composite = getStringListFromEnv('OTEL_PROPAGATORS');\n if (composite && composite.length > 0) {\n config.propagator.composite = [];\n for (let i = 0; i < composite.length; i++) {\n config.propagator.composite.push({ [composite[i]]: null });\n }\n }\n const compositeList = getStringFromEnv('OTEL_PROPAGATORS');\n if (compositeList) {\n config.propagator.composite_list = compositeList;\n }\n}\n\nexport function setSampler(config: ConfigurationModel): void {\n const sampler = getStringFromEnv('OTEL_TRACES_SAMPLER');\n const arg = getStringFromEnv('OTEL_TRACES_SAMPLER_ARG');\n\n if (!sampler || !config.tracer_provider) {\n return;\n }\n\n const ratio = arg ? parseFloat(arg) : 1.0;\n\n switch (sampler) {\n case 'always_on':\n config.tracer_provider.sampler = { always_on: {} };\n break;\n\n case 'always_off':\n config.tracer_provider.sampler = { always_off: {} };\n break;\n\n case 'traceidratio':\n config.tracer_provider.sampler = {\n trace_id_ratio_based: { ratio },\n };\n break;\n\n case 'parentbased_always_on':\n config.tracer_provider.sampler = {\n parent_based: { root: { always_on: {} } },\n };\n break;\n\n case 'parentbased_always_off':\n config.tracer_provider.sampler = {\n parent_based: { root: { always_off: {} } },\n };\n break;\n\n case 'parentbased_traceidratio':\n config.tracer_provider.sampler = {\n parent_based: { root: { trace_id_ratio_based: { ratio } } },\n };\n break;\n\n default:\n diag.warn(`Unknown sampler type: ${sampler}`);\n break;\n }\n}\n\nexport function setTracerProvider(config: ConfigurationModel): void {\n const exportersType = Array.from(\n new Set(getStringListFromEnv('OTEL_TRACES_EXPORTER'))\n );\n if (exportersType.length === 0) {\n return;\n }\n if (exportersType.includes('none')) {\n diag.info(\n `OTEL_TRACES_EXPORTER contains \"none\". Tracer provider will not be initialized.`\n );\n return;\n }\n config.tracer_provider = initializeDefaultTracerProviderConfiguration();\n setSampler(config);\n\n const attributeValueLengthLimit = getNumberFromEnv(\n 'OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT'\n );\n if (attributeValueLengthLimit) {\n config.tracer_provider.limits!.attribute_value_length_limit =\n attributeValueLengthLimit;\n }\n\n const attributeCountLimit = getNumberFromEnv(\n 'OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT'\n );\n if (attributeCountLimit) {\n config.tracer_provider.limits!.attribute_count_limit = attributeCountLimit;\n }\n\n const eventCountLimit = getNumberFromEnv('OTEL_SPAN_EVENT_COUNT_LIMIT');\n if (eventCountLimit) {\n config.tracer_provider.limits!.event_count_limit = eventCountLimit;\n }\n\n const linkCountLimit = getNumberFromEnv('OTEL_SPAN_LINK_COUNT_LIMIT');\n if (linkCountLimit) {\n config.tracer_provider.limits!.link_count_limit = linkCountLimit;\n }\n\n const eventAttributeCountLimit = getNumberFromEnv(\n 'OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT'\n );\n if (eventAttributeCountLimit) {\n config.tracer_provider.limits!.event_attribute_count_limit =\n eventAttributeCountLimit;\n }\n\n const linkAttributeCountLimit = getNumberFromEnv(\n 'OTEL_LINK_ATTRIBUTE_COUNT_LIMIT'\n );\n if (linkAttributeCountLimit) {\n config.tracer_provider.limits!.link_attribute_count_limit =\n linkAttributeCountLimit;\n }\n\n const batch: BatchSpanProcessor = { exporter: {} };\n const scheduleDelay = getNumberFromEnv('OTEL_BSP_SCHEDULE_DELAY') ?? 5000;\n if (scheduleDelay) {\n batch.schedule_delay = scheduleDelay;\n }\n\n const exportTimeout = getNumberFromEnv('OTEL_BSP_EXPORT_TIMEOUT') ?? 30000;\n if (exportTimeout) {\n batch.export_timeout = exportTimeout;\n }\n\n const maxQueueSize = getNumberFromEnv('OTEL_BSP_MAX_QUEUE_SIZE') ?? 2048;\n if (maxQueueSize) {\n batch.max_queue_size = maxQueueSize;\n }\n\n const maxExportBatchSize =\n getNumberFromEnv('OTEL_BSP_MAX_EXPORT_BATCH_SIZE') ?? 512;\n if (maxExportBatchSize) {\n batch.max_export_batch_size = maxExportBatchSize;\n }\n\n for (let i = 0; i < exportersType.length; i++) {\n const exporterType = exportersType[i];\n const batchInfo = { ...batch };\n if (exporterType === 'console') {\n config.tracer_provider.processors.push({\n simple: { exporter: { console: {} } },\n });\n } else {\n // 'otlp' and default\n const protocol =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_PROTOCOL') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_PROTOCOL') ??\n 'http/protobuf';\n const certificateFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CERTIFICATE');\n const clientKeyFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CLIENT_KEY');\n const clientCertificateFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE');\n const compression =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_COMPRESSION') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_COMPRESSION');\n const timeout =\n getNumberFromEnv('OTEL_EXPORTER_OTLP_TRACES_TIMEOUT') ??\n getNumberFromEnv('OTEL_EXPORTER_OTLP_TIMEOUT') ??\n 10000;\n const headersList =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_HEADERS') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_HEADERS');\n\n if (protocol === 'grpc') {\n delete batchInfo.exporter.otlp_http;\n batchInfo.exporter.otlp_grpc = {};\n const endpoint =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_ENDPOINT') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT') ??\n 'http://localhost:4317';\n if (endpoint) {\n batchInfo.exporter.otlp_grpc.endpoint = endpoint;\n }\n const tls = getGrpcTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n if (tls) {\n batchInfo.exporter.otlp_grpc.tls = tls;\n }\n if (compression) {\n batchInfo.exporter.otlp_grpc.compression = compression;\n }\n if (timeout) {\n batchInfo.exporter.otlp_grpc.timeout = timeout;\n }\n if (headersList) {\n batchInfo.exporter.otlp_grpc.headers_list = headersList;\n }\n } else {\n if (batchInfo.exporter.otlp_http == null) {\n batchInfo.exporter.otlp_http = {};\n }\n const endpoint =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_ENDPOINT') ??\n (getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT')\n ? `${getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT')}/v1/traces`\n : 'http://localhost:4318/v1/traces');\n if (endpoint) {\n batchInfo.exporter.otlp_http.endpoint = endpoint;\n }\n const tls = getHttpTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n if (tls) {\n batchInfo.exporter.otlp_http.tls = tls;\n }\n if (compression) {\n batchInfo.exporter.otlp_http.compression = compression;\n }\n if (timeout) {\n batchInfo.exporter.otlp_http.timeout = timeout;\n }\n if (headersList) {\n batchInfo.exporter.otlp_http.headers_list = headersList;\n }\n if (protocol === 'http/json') {\n batchInfo.exporter.otlp_http.encoding = OtlpHttpEncoding.JSON;\n } else if (protocol === 'http/protobuf') {\n batchInfo.exporter.otlp_http.encoding = OtlpHttpEncoding.Protobuf;\n }\n }\n\n config.tracer_provider.processors.push({ batch: batchInfo });\n }\n }\n}\n\nexport function setMeterProvider(config: ConfigurationModel): void {\n const exportersType = Array.from(\n new Set(getStringListFromEnv('OTEL_METRICS_EXPORTER'))\n );\n if (exportersType.length === 0) {\n return;\n }\n if (exportersType.includes('none')) {\n diag.info(\n `OTEL_METRICS_EXPORTER contains \"none\". Meter provider will not be initialized.`\n );\n return;\n }\n config.meter_provider = initializeDefaultMeterProviderConfiguration();\n\n const readerPeriodic: PeriodicMetricReader = { exporter: {} };\n const interval = getNumberFromEnv('OTEL_METRIC_EXPORT_INTERVAL') ?? 60000;\n if (interval) {\n readerPeriodic.interval = interval;\n }\n for (let i = 0; i < exportersType.length; i++) {\n const exporterType = exportersType[i];\n if (exporterType === 'prometheus') {\n // Prometheus uses a pull reader\n const pullReader: PullMetricReader = {\n exporter: {\n 'prometheus/development': {\n host:\n getStringFromEnv('OTEL_EXPORTER_PROMETHEUS_HOST') ?? 'localhost',\n port: getNumberFromEnv('OTEL_EXPORTER_PROMETHEUS_PORT') ?? 9464,\n without_scope_info: false,\n without_target_info: false,\n },\n },\n };\n config.meter_provider.readers.push({ pull: pullReader });\n continue;\n }\n\n const readerPeriodicInfo = { ...readerPeriodic };\n const timeout = getNumberFromEnv('OTEL_METRIC_EXPORT_TIMEOUT') ?? 30000;\n if (timeout) {\n readerPeriodicInfo.timeout = timeout;\n }\n\n if (exporterType === 'console') {\n readerPeriodicInfo.exporter = { console: {} };\n } else {\n // 'otlp' and default\n const protocol =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_PROTOCOL') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_PROTOCOL') ??\n 'http/protobuf';\n const certificateFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CERTIFICATE');\n const clientKeyFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CLIENT_KEY');\n const clientCertificateFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE');\n const compression =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_COMPRESSION') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_COMPRESSION');\n const timeoutExporter =\n getNumberFromEnv('OTEL_EXPORTER_OTLP_METRICS_TIMEOUT') ??\n getNumberFromEnv('OTEL_EXPORTER_OTLP_TIMEOUT') ??\n 10000;\n const headersList =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_HEADERS') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_HEADERS');\n const temporalityPreference =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE') ??\n 'cumulative';\n const defaultHistogramAggregation =\n getStringFromEnv(\n 'OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION'\n ) ?? 'explicit_bucket_histogram';\n\n if (protocol === 'grpc') {\n delete readerPeriodicInfo.exporter.otlp_http;\n readerPeriodicInfo.exporter.otlp_grpc = {};\n const endpoint =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_ENDPOINT') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT') ??\n 'http://localhost:4317';\n if (endpoint) {\n readerPeriodicInfo.exporter.otlp_grpc.endpoint = endpoint;\n }\n const tls = getGrpcTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n if (tls) {\n readerPeriodicInfo.exporter.otlp_grpc.tls = tls;\n }\n if (compression) {\n readerPeriodicInfo.exporter.otlp_grpc.compression = compression;\n }\n if (timeoutExporter) {\n readerPeriodicInfo.exporter.otlp_grpc.timeout = timeoutExporter;\n }\n if (headersList) {\n readerPeriodicInfo.exporter.otlp_grpc.headers_list = headersList;\n }\n if (temporalityPreference) {\n switch (temporalityPreference) {\n case 'cumulative':\n readerPeriodicInfo.exporter.otlp_grpc.temporality_preference =\n ExporterTemporalityPreference.Cumulative;\n break;\n case 'delta':\n readerPeriodicInfo.exporter.otlp_grpc.temporality_preference =\n ExporterTemporalityPreference.Delta;\n break;\n case 'low_memory':\n readerPeriodicInfo.exporter.otlp_grpc.temporality_preference =\n ExporterTemporalityPreference.LowMemory;\n break;\n default:\n readerPeriodicInfo.exporter.otlp_grpc.temporality_preference =\n ExporterTemporalityPreference.Cumulative;\n break;\n }\n }\n if (defaultHistogramAggregation) {\n switch (defaultHistogramAggregation) {\n case 'explicit_bucket_histogram':\n readerPeriodicInfo.exporter.otlp_grpc.default_histogram_aggregation =\n ExporterDefaultHistogramAggregation.ExplicitBucketHistogram;\n break;\n case 'base2_exponential_bucket_histogram':\n readerPeriodicInfo.exporter.otlp_grpc.default_histogram_aggregation =\n ExporterDefaultHistogramAggregation.Base2ExponentialBucketHistogram;\n break;\n default:\n readerPeriodicInfo.exporter.otlp_grpc.default_histogram_aggregation =\n ExporterDefaultHistogramAggregation.ExplicitBucketHistogram;\n break;\n }\n }\n } else {\n if (readerPeriodicInfo.exporter.otlp_http == null) {\n readerPeriodicInfo.exporter.otlp_http = {};\n }\n const endpoint =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_ENDPOINT') ??\n (getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT')\n ? `${getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT')}/v1/metrics`\n : 'http://localhost:4318/v1/metrics');\n if (endpoint) {\n readerPeriodicInfo.exporter.otlp_http.endpoint = endpoint;\n }\n const tls = getHttpTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n if (tls) {\n readerPeriodicInfo.exporter.otlp_http.tls = tls;\n }\n if (compression) {\n readerPeriodicInfo.exporter.otlp_http.compression = compression;\n }\n if (timeoutExporter) {\n readerPeriodicInfo.exporter.otlp_http.timeout = timeoutExporter;\n }\n if (headersList) {\n readerPeriodicInfo.exporter.otlp_http.headers_list = headersList;\n }\n if (temporalityPreference) {\n switch (temporalityPreference) {\n case 'cumulative':\n readerPeriodicInfo.exporter.otlp_http.temporality_preference =\n ExporterTemporalityPreference.Cumulative;\n break;\n case 'delta':\n readerPeriodicInfo.exporter.otlp_http.temporality_preference =\n ExporterTemporalityPreference.Delta;\n break;\n case 'low_memory':\n readerPeriodicInfo.exporter.otlp_http.temporality_preference =\n ExporterTemporalityPreference.LowMemory;\n break;\n default:\n readerPeriodicInfo.exporter.otlp_http.temporality_preference =\n ExporterTemporalityPreference.Cumulative;\n break;\n }\n }\n if (defaultHistogramAggregation) {\n switch (defaultHistogramAggregation) {\n case 'explicit_bucket_histogram':\n readerPeriodicInfo.exporter.otlp_http.default_histogram_aggregation =\n ExporterDefaultHistogramAggregation.ExplicitBucketHistogram;\n break;\n case 'base2_exponential_bucket_histogram':\n readerPeriodicInfo.exporter.otlp_http.default_histogram_aggregation =\n ExporterDefaultHistogramAggregation.Base2ExponentialBucketHistogram;\n break;\n default:\n readerPeriodicInfo.exporter.otlp_http.default_histogram_aggregation =\n ExporterDefaultHistogramAggregation.ExplicitBucketHistogram;\n break;\n }\n }\n if (protocol === 'http/json') {\n readerPeriodicInfo.exporter.otlp_http.encoding =\n OtlpHttpEncoding.JSON;\n } else if (protocol === 'http/protobuf') {\n readerPeriodicInfo.exporter.otlp_http.encoding =\n OtlpHttpEncoding.Protobuf;\n }\n }\n }\n config.meter_provider.readers.push({ periodic: readerPeriodicInfo });\n }\n\n const exemplarFilter =\n getStringFromEnv('OTEL_METRICS_EXEMPLAR_FILTER') ?? 'trace_based';\n if (exemplarFilter) {\n switch (exemplarFilter) {\n case 'trace_based':\n config.meter_provider.exemplar_filter = ExemplarFilter.TraceBased;\n break;\n case 'always_on':\n config.meter_provider.exemplar_filter = ExemplarFilter.AlwaysOn;\n break;\n case 'always_off':\n config.meter_provider.exemplar_filter = ExemplarFilter.AlwaysOff;\n break;\n default:\n config.meter_provider.exemplar_filter = ExemplarFilter.TraceBased;\n break;\n }\n }\n}\n\nexport function setLoggerProvider(config: ConfigurationModel): void {\n const exportersType = Array.from(\n new Set(getStringListFromEnv('OTEL_LOGS_EXPORTER'))\n );\n if (exportersType.length === 0) {\n return;\n }\n if (exportersType.includes('none')) {\n diag.info(\n `OTEL_LOGS_EXPORTER contains \"none\". Logger provider will not be initialized.`\n );\n return;\n }\n config.logger_provider = initializeDefaultLoggerProviderConfiguration();\n\n const attributeValueLengthLimit = getNumberFromEnv(\n 'OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT'\n );\n const attributeCountLimit = getNumberFromEnv(\n 'OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT'\n );\n if (attributeValueLengthLimit || attributeCountLimit) {\n if (attributeValueLengthLimit) {\n config.logger_provider.limits!.attribute_value_length_limit =\n attributeValueLengthLimit;\n }\n\n if (attributeCountLimit) {\n config.logger_provider.limits!.attribute_count_limit =\n attributeCountLimit;\n }\n }\n\n const batch: BatchLogRecordProcessor = { exporter: {} };\n const scheduleDelay = getNumberFromEnv('OTEL_BLRP_SCHEDULE_DELAY') ?? 1000;\n if (scheduleDelay) {\n batch.schedule_delay = scheduleDelay;\n }\n\n const exportTimeout = getNumberFromEnv('OTEL_BLRP_EXPORT_TIMEOUT') ?? 30000;\n if (exportTimeout) {\n batch.export_timeout = exportTimeout;\n }\n\n const maxQueueSize = getNumberFromEnv('OTEL_BLRP_MAX_QUEUE_SIZE') ?? 2048;\n if (maxQueueSize) {\n batch.max_queue_size = maxQueueSize;\n }\n\n const maxExportBatchSize =\n getNumberFromEnv('OTEL_BLRP_MAX_EXPORT_BATCH_SIZE') ?? 512;\n if (maxExportBatchSize) {\n batch.max_export_batch_size = maxExportBatchSize;\n }\n\n for (let i = 0; i < exportersType.length; i++) {\n const exporterType = exportersType[i];\n const batchInfo = { ...batch };\n if (exporterType === 'console') {\n config.logger_provider.processors.push({\n simple: { exporter: { console: {} } },\n });\n } else {\n // 'otlp' and default\n const protocol =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_PROTOCOL') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_PROTOCOL') ??\n 'http/protobuf';\n const certificateFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CERTIFICATE');\n const clientKeyFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CLIENT_KEY');\n const clientCertificateFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE');\n const compression =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_COMPRESSION') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_COMPRESSION');\n const timeout =\n getNumberFromEnv('OTEL_EXPORTER_OTLP_LOGS_TIMEOUT') ??\n getNumberFromEnv('OTEL_EXPORTER_OTLP_TIMEOUT') ??\n 10000;\n const headersList =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_HEADERS') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_HEADERS');\n\n if (protocol === 'grpc') {\n delete batchInfo.exporter.otlp_http;\n batchInfo.exporter.otlp_grpc = {};\n const endpoint =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_ENDPOINT') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT') ??\n 'http://localhost:4317';\n if (endpoint) {\n batchInfo.exporter.otlp_grpc.endpoint = endpoint;\n }\n const tls = getGrpcTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n if (tls) {\n batchInfo.exporter.otlp_grpc.tls = tls;\n }\n if (compression) {\n batchInfo.exporter.otlp_grpc.compression = compression;\n }\n if (timeout) {\n batchInfo.exporter.otlp_grpc.timeout = timeout;\n }\n if (headersList) {\n batchInfo.exporter.otlp_grpc.headers_list = headersList;\n }\n } else {\n if (batchInfo.exporter.otlp_http == null) {\n batchInfo.exporter.otlp_http = {};\n }\n const endpoint =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_ENDPOINT') ??\n (getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT')\n ? `${getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT')}/v1/logs`\n : 'http://localhost:4318/v1/logs');\n if (endpoint) {\n batchInfo.exporter.otlp_http.endpoint = endpoint;\n }\n const tls = getHttpTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n if (tls) {\n batchInfo.exporter.otlp_http.tls = tls;\n }\n if (compression) {\n batchInfo.exporter.otlp_http.compression = compression;\n }\n if (timeout) {\n batchInfo.exporter.otlp_http.timeout = timeout;\n }\n if (headersList) {\n batchInfo.exporter.otlp_http.headers_list = headersList;\n }\n\n if (protocol === 'http/json') {\n batchInfo.exporter.otlp_http.encoding = OtlpHttpEncoding.JSON;\n } else if (protocol === 'http/protobuf') {\n batchInfo.exporter.otlp_http.encoding = OtlpHttpEncoding.Protobuf;\n }\n }\n config.logger_provider.processors.push({ batch: batchInfo });\n }\n }\n}\n"]}
@@ -1,10 +1,11 @@
1
- import { AttributeLimits, Propagator, ConfigurationModel } from './models/configModel';
2
- import { ConfigFactory } from './IConfigFactory';
1
+ import type { AttributeLimits, Propagator, ConfigurationModel } from './models/configModel';
2
+ import type { ConfigFactory } from './IConfigFactory';
3
3
  import { SeverityNumber } from './models/commonModel';
4
- import { TracerProvider } from './models/tracerProviderModel';
5
- import { LoggerProvider } from './models/loggerProviderModel';
6
- import { AttributeNameValue } from './models/resourceModel';
7
- import { ExporterTemporalityPreference, MeterProvider } from './models/meterProviderModel';
4
+ import type { TracerProvider } from './models/tracerProviderModel';
5
+ import type { LoggerProvider } from './models/loggerProviderModel';
6
+ import type { AttributeNameValue } from './models/resourceModel';
7
+ import type { MeterProvider } from './models/meterProviderModel';
8
+ import { ExporterTemporalityPreference } from './models/meterProviderModel';
8
9
  export declare class FileConfigFactory implements ConfigFactory {
9
10
  private _config;
10
11
  constructor();
@@ -27,11 +27,11 @@ class FileConfigFactory {
27
27
  }
28
28
  exports.FileConfigFactory = FileConfigFactory;
29
29
  function hasValidConfigFile() {
30
- const configFile = (0, core_1.getStringFromEnv)('OTEL_EXPERIMENTAL_CONFIG_FILE');
30
+ const configFile = (0, core_1.getStringFromEnv)('OTEL_CONFIG_FILE');
31
31
  if (configFile) {
32
32
  if (!(configFile.endsWith('.yaml') || configFile.endsWith('.yml')) ||
33
33
  !fs.existsSync(configFile)) {
34
- api_1.diag.warn(`Config file ${configFile} set on OTEL_EXPERIMENTAL_CONFIG_FILE is not valid`);
34
+ api_1.diag.warn(`Config file ${configFile} set on OTEL_CONFIG_FILE is not valid`);
35
35
  return false;
36
36
  }
37
37
  return true;
@@ -41,7 +41,7 @@ function hasValidConfigFile() {
41
41
  exports.hasValidConfigFile = hasValidConfigFile;
42
42
  function parseConfigFile(config) {
43
43
  const supportedFileVersions = ['1.0-rc.3'];
44
- const configFile = (0, core_1.getStringFromEnv)('OTEL_EXPERIMENTAL_CONFIG_FILE') || '';
44
+ const configFile = (0, core_1.getStringFromEnv)('OTEL_CONFIG_FILE') || '';
45
45
  const file = fs.readFileSync(configFile, 'utf8');
46
46
  const parsedContent = yaml.parse(file);
47
47
  if (parsedContent['file_format'] &&
@@ -64,6 +64,11 @@ function parseConfigFile(config) {
64
64
  }
65
65
  }
66
66
  setResourceAttributes(config, parsedContent['resource']?.['attributes'], parsedContent['resource']?.['attributes_list']);
67
+ const detectionConfig = parsedContent['resource']?.['detection/development'];
68
+ if (detectionConfig) {
69
+ config.resource['detection/development'] =
70
+ parseDetectionDevelopment(detectionConfig);
71
+ }
67
72
  setAttributeLimits(config, parsedContent['attribute_limits']);
68
73
  setPropagator(config, parsedContent['propagator']);
69
74
  setTracerProvider(config, parsedContent['tracer_provider']);
@@ -138,6 +143,51 @@ function setResourceAttributes(config, attributes, attributeList) {
138
143
  }
139
144
  }
140
145
  exports.setResourceAttributes = setResourceAttributes;
146
+ function parseDetectionDevelopment(
147
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
148
+ detection) {
149
+ const result = {};
150
+ if (detection['attributes']) {
151
+ result.attributes = {};
152
+ const included = detection['attributes']['included'];
153
+ if (Array.isArray(included)) {
154
+ result.attributes.included = included.filter(
155
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
156
+ (v) => typeof v === 'string');
157
+ }
158
+ const excluded = detection['attributes']['excluded'];
159
+ if (Array.isArray(excluded)) {
160
+ result.attributes.excluded = excluded.filter(
161
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
162
+ (v) => typeof v === 'string');
163
+ }
164
+ }
165
+ if (Array.isArray(detection['detectors'])) {
166
+ result.detectors = [];
167
+ for (let i = 0; i < detection['detectors'].length; i++) {
168
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
169
+ const d = detection['detectors'][i];
170
+ if (typeof d !== 'object' || d === null) {
171
+ continue;
172
+ }
173
+ const detector = {};
174
+ if ('container' in d)
175
+ detector.container = d.container ?? {};
176
+ if ('env' in d)
177
+ detector.env = d.env ?? {};
178
+ if ('host' in d)
179
+ detector.host = d.host ?? {};
180
+ if ('os' in d)
181
+ detector.os = d.os ?? {};
182
+ if ('process' in d)
183
+ detector.process = d.process ?? {};
184
+ if ('service' in d)
185
+ detector.service = d.service ?? {};
186
+ result.detectors.push(detector);
187
+ }
188
+ }
189
+ return result;
190
+ }
141
191
  function setAttributeLimits(config, attrLimits) {
142
192
  if (attrLimits) {
143
193
  if (config.attribute_limits == null) {
@@ -192,6 +242,112 @@ function setPropagator(config, propagator) {
192
242
  }
193
243
  }
194
244
  exports.setPropagator = setPropagator;
245
+ function parseComposableSampler(sampler) {
246
+ const samplerType = Object.keys(sampler)[0];
247
+ let parsedSampler = {};
248
+ switch (samplerType) {
249
+ case 'always_on':
250
+ parsedSampler = { always_on: sampler['always_on'] ?? undefined };
251
+ break;
252
+ case 'always_off':
253
+ parsedSampler = { always_off: sampler['always_off'] ?? undefined };
254
+ break;
255
+ case 'parent_threshold': {
256
+ const s = sampler['parent_threshold'];
257
+ if (s?.root) {
258
+ parsedSampler = {
259
+ parent_threshold: { root: parseComposableSampler(s.root) },
260
+ };
261
+ }
262
+ break;
263
+ }
264
+ case 'probability': {
265
+ const s = sampler['probability'];
266
+ parsedSampler = {
267
+ probability: {
268
+ ratio: (0, utils_1.getNumberFromConfigFile)(s?.ratio) ?? 1.0,
269
+ },
270
+ };
271
+ break;
272
+ }
273
+ case 'rule_based': {
274
+ const rb = sampler['rule_based'];
275
+ if (rb) {
276
+ parsedSampler = { rule_based: {} };
277
+ if (rb.rules) {
278
+ parsedSampler.rule_based.rules = rb.rules.map(rule => ({
279
+ ...rule,
280
+ sampler: rule.sampler ? parseComposableSampler(rule.sampler) : {},
281
+ }));
282
+ }
283
+ }
284
+ break;
285
+ }
286
+ }
287
+ return parsedSampler;
288
+ }
289
+ function parseSampler(sampler) {
290
+ const samplerType = Object.keys(sampler)[0];
291
+ let parsedSampler = {};
292
+ switch (samplerType) {
293
+ case 'always_on':
294
+ parsedSampler = { always_on: sampler['always_on'] ?? undefined };
295
+ break;
296
+ case 'always_off':
297
+ parsedSampler = { always_off: sampler['always_off'] ?? undefined };
298
+ break;
299
+ case 'trace_id_ratio_based': {
300
+ const s = sampler['trace_id_ratio_based'];
301
+ parsedSampler = {
302
+ trace_id_ratio_based: {
303
+ ratio: (0, utils_1.getNumberFromConfigFile)(s?.ratio) ?? 1.0,
304
+ },
305
+ };
306
+ break;
307
+ }
308
+ case 'parent_based': {
309
+ const s = sampler['parent_based'];
310
+ if (s) {
311
+ parsedSampler = { parent_based: {} };
312
+ if (s.root) {
313
+ parsedSampler.parent_based.root = parseSampler(s.root);
314
+ }
315
+ if (s.remote_parent_sampled) {
316
+ parsedSampler.parent_based.remote_parent_sampled = parseSampler(s.remote_parent_sampled);
317
+ }
318
+ if (s.remote_parent_not_sampled) {
319
+ parsedSampler.parent_based.remote_parent_not_sampled = parseSampler(s.remote_parent_not_sampled);
320
+ }
321
+ if (s.local_parent_sampled) {
322
+ parsedSampler.parent_based.local_parent_sampled = parseSampler(s.local_parent_sampled);
323
+ }
324
+ if (s.local_parent_not_sampled) {
325
+ parsedSampler.parent_based.local_parent_not_sampled = parseSampler(s.local_parent_not_sampled);
326
+ }
327
+ }
328
+ break;
329
+ }
330
+ case 'probability/development': {
331
+ const s = sampler['probability/development'];
332
+ parsedSampler = {
333
+ 'probability/development': {
334
+ ratio: (0, utils_1.getNumberFromConfigFile)(s?.ratio) ?? 1.0,
335
+ },
336
+ };
337
+ break;
338
+ }
339
+ case 'composite/development': {
340
+ const s = sampler['composite/development'];
341
+ if (s) {
342
+ parsedSampler = {
343
+ 'composite/development': parseComposableSampler(s),
344
+ };
345
+ }
346
+ break;
347
+ }
348
+ }
349
+ return parsedSampler;
350
+ }
195
351
  function getConfigHeaders(h) {
196
352
  if (h) {
197
353
  const headers = [];
@@ -357,6 +513,10 @@ function setTracerProvider(config, tracerProvider) {
357
513
  linkAttributeCountLimit;
358
514
  }
359
515
  }
516
+ // Sampler
517
+ if (tracerProvider['sampler']) {
518
+ config.tracer_provider.sampler = parseSampler(tracerProvider['sampler']);
519
+ }
360
520
  // Processors
361
521
  for (let i = 0; i < tracerProvider['processors'].length; i++) {
362
522
  const processorType = Object.keys(tracerProvider['processors'][i])[0];