@opentelemetry/configuration 0.222.0 → 0.300.0-development.1
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/dist/ConfigFactory.cjs +12 -0
- package/dist/ConfigFactory.cjs.map +1 -0
- package/dist/ConfigFactory.d.cts +6 -0
- package/dist/ConfigFactory.d.cts.map +1 -0
- package/dist/ConfigFactory.d.mts +6 -0
- package/dist/ConfigFactory.d.mts.map +1 -0
- package/dist/ConfigFactory.mjs +12 -0
- package/dist/ConfigFactory.mjs.map +1 -0
- package/dist/EnvDefinition.cjs +34 -0
- package/dist/EnvDefinition.cjs.map +1 -0
- package/dist/EnvDefinition.mjs +33 -0
- package/dist/EnvDefinition.mjs.map +1 -0
- package/dist/EnvReader.cjs +37 -0
- package/dist/EnvReader.cjs.map +1 -0
- package/dist/EnvReader.mjs +36 -0
- package/dist/EnvReader.mjs.map +1 -0
- package/dist/EnvironmentConfigFactory.cjs +354 -0
- package/dist/EnvironmentConfigFactory.cjs.map +1 -0
- package/dist/EnvironmentConfigFactory.mjs +347 -0
- package/dist/EnvironmentConfigFactory.mjs.map +1 -0
- package/dist/FileConfigFactory.cjs +141 -0
- package/dist/FileConfigFactory.cjs.map +1 -0
- package/{build/src/FileConfigFactory.d.ts → dist/FileConfigFactory.d.cts} +8 -12
- package/dist/FileConfigFactory.d.cts.map +1 -0
- package/dist/FileConfigFactory.d.mts +28 -0
- package/dist/FileConfigFactory.d.mts.map +1 -0
- package/dist/FileConfigFactory.mjs +134 -0
- package/dist/FileConfigFactory.mjs.map +1 -0
- package/dist/IConfigFactory.d.cts +13 -0
- package/dist/IConfigFactory.d.cts.map +1 -0
- package/dist/IConfigFactory.d.mts +13 -0
- package/dist/IConfigFactory.d.mts.map +1 -0
- package/dist/_virtual/_rolldown/runtime.cjs +25 -0
- package/dist/_virtual/_rolldown/runtime.mjs +4 -0
- package/dist/generated/types.d.cts +1662 -0
- package/dist/generated/types.d.cts.map +1 -0
- package/dist/generated/types.d.mts +1662 -0
- package/dist/generated/types.d.mts.map +1 -0
- package/dist/generated/validator.cjs +14385 -0
- package/dist/generated/validator.cjs.map +1 -0
- package/dist/generated/validator.mjs +14381 -0
- package/dist/generated/validator.mjs.map +1 -0
- package/dist/index.cjs +7 -0
- package/dist/index.d.cts +5 -0
- package/dist/index.d.mts +5 -0
- package/dist/index.mjs +3 -0
- package/dist/utils.cjs +137 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.mjs +129 -0
- package/dist/utils.mjs.map +1 -0
- package/package.json +28 -19
- package/build/src/ConfigFactory.d.ts +0 -3
- package/build/src/ConfigFactory.js +0 -19
- package/build/src/ConfigFactory.js.map +0 -1
- package/build/src/EnvDefinition.d.ts +0 -15
- package/build/src/EnvDefinition.js +0 -36
- package/build/src/EnvDefinition.js.map +0 -1
- package/build/src/EnvReader.d.ts +0 -24
- package/build/src/EnvReader.js +0 -60
- package/build/src/EnvReader.js.map +0 -1
- package/build/src/EnvironmentConfigFactory.d.ts +0 -19
- package/build/src/EnvironmentConfigFactory.js +0 -540
- package/build/src/EnvironmentConfigFactory.js.map +0 -1
- package/build/src/FileConfigFactory.js +0 -177
- package/build/src/FileConfigFactory.js.map +0 -1
- package/build/src/IConfigFactory.d.ts +0 -10
- package/build/src/IConfigFactory.js +0 -7
- package/build/src/IConfigFactory.js.map +0 -1
- package/build/src/generated/types.d.ts +0 -1659
- package/build/src/generated/types.js +0 -13
- package/build/src/generated/types.js.map +0 -1
- package/build/src/generated/validator.d.ts +0 -17
- package/build/src/generated/validator.js +0 -8533
- package/build/src/generated/validator.js.map +0 -1
- package/build/src/index.d.ts +0 -5
- package/build/src/index.js +0 -14
- package/build/src/index.js.map +0 -1
- package/build/src/utils.d.ts +0 -20
- package/build/src/utils.js +0 -188
- package/build/src/utils.js.map +0 -1
- package/build/src/version.d.ts +0 -2
- package/build/src/version.js +0 -10
- package/build/src/version.js.map +0 -1
|
@@ -1,540 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright The OpenTelemetry Authors
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.setLoggerProvider = exports.setMeterProvider = exports.setTracerProvider = exports.setSampler = exports.setPropagators = exports.setAttributeLimits = exports.setResources = exports.EnvironmentConfigFactory = void 0;
|
|
8
|
-
const core_1 = require("@opentelemetry/core");
|
|
9
|
-
const api_1 = require("@opentelemetry/api");
|
|
10
|
-
const utils_1 = require("./utils");
|
|
11
|
-
const EnvReader_1 = require("./EnvReader");
|
|
12
|
-
const EnvDefinition_1 = require("./EnvDefinition");
|
|
13
|
-
/**
|
|
14
|
-
* EnvironmentConfigProvider provides a configuration based on environment variables.
|
|
15
|
-
*/
|
|
16
|
-
class EnvironmentConfigFactory {
|
|
17
|
-
_config;
|
|
18
|
-
constructor() {
|
|
19
|
-
this._config = (0, utils_1.initializeDefaultConfiguration)();
|
|
20
|
-
const envValues = (0, EnvReader_1.readAllEnvVars)();
|
|
21
|
-
this._config.disabled = envValues.OTEL_SDK_DISABLED;
|
|
22
|
-
const logLevelString = (0, core_1.getStringFromEnv)('OTEL_LOG_LEVEL');
|
|
23
|
-
if (logLevelString) {
|
|
24
|
-
this._config.log_level =
|
|
25
|
-
severityNumberConfigFromLogLevelString(logLevelString);
|
|
26
|
-
}
|
|
27
|
-
setResources(this._config);
|
|
28
|
-
setAttributeLimits(this._config);
|
|
29
|
-
setPropagators(this._config);
|
|
30
|
-
setTracerProvider(this._config, envValues);
|
|
31
|
-
setMeterProvider(this._config);
|
|
32
|
-
setLoggerProvider(this._config);
|
|
33
|
-
}
|
|
34
|
-
getConfigModel() {
|
|
35
|
-
return this._config;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
exports.EnvironmentConfigFactory = EnvironmentConfigFactory;
|
|
39
|
-
const SEV_NUM_CONFIG_FROM_LOG_LEVEL = {
|
|
40
|
-
// Declarative config `log_level` has no "NONE". Using 'fatal' is
|
|
41
|
-
// equivalent, because the OTel JS diag API does not have a "fatal" level.
|
|
42
|
-
NONE: 'fatal',
|
|
43
|
-
ERROR: 'error',
|
|
44
|
-
WARN: 'warn',
|
|
45
|
-
INFO: 'info',
|
|
46
|
-
DEBUG: 'debug',
|
|
47
|
-
VERBOSE: 'trace2',
|
|
48
|
-
// Declarative config `log_level` has no "ALL". Using 'trace' is
|
|
49
|
-
// equivalent, because that is the lowest SeverityNumber level.
|
|
50
|
-
ALL: 'trace',
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* Return a declarative config SeverityNumberConfig value (as used for
|
|
54
|
-
* `log_level`) for the given `OTEL_LOG_LEVEL` string value.
|
|
55
|
-
*
|
|
56
|
-
* See notes at "opentelemetr-sdk-node/src/diag.ts".
|
|
57
|
-
*/
|
|
58
|
-
function severityNumberConfigFromLogLevelString(str) {
|
|
59
|
-
if (!str) {
|
|
60
|
-
return undefined;
|
|
61
|
-
}
|
|
62
|
-
const sevNumConfig = SEV_NUM_CONFIG_FROM_LOG_LEVEL[str.toUpperCase()];
|
|
63
|
-
if (!sevNumConfig) {
|
|
64
|
-
api_1.diag.warn(`Unknown log level "${str}", expected one of ${Object.keys(SEV_NUM_CONFIG_FROM_LOG_LEVEL)}, using default info`);
|
|
65
|
-
return 'info';
|
|
66
|
-
}
|
|
67
|
-
return sevNumConfig;
|
|
68
|
-
}
|
|
69
|
-
function setResources(config) {
|
|
70
|
-
if (config.resource == null) {
|
|
71
|
-
config.resource = {};
|
|
72
|
-
}
|
|
73
|
-
const resourceAttrList = (0, core_1.getStringFromEnv)('OTEL_RESOURCE_ATTRIBUTES');
|
|
74
|
-
const list = resourceAttrList
|
|
75
|
-
? resourceAttrList
|
|
76
|
-
.split(',')
|
|
77
|
-
.map(s => s.trim())
|
|
78
|
-
.filter(s => s)
|
|
79
|
-
: [];
|
|
80
|
-
const serviceName = (0, core_1.getStringFromEnv)('OTEL_SERVICE_NAME');
|
|
81
|
-
if (serviceName) {
|
|
82
|
-
config.resource.attributes = [
|
|
83
|
-
{
|
|
84
|
-
name: 'service.name',
|
|
85
|
-
value: serviceName,
|
|
86
|
-
type: 'string',
|
|
87
|
-
},
|
|
88
|
-
];
|
|
89
|
-
}
|
|
90
|
-
if (list.length > 0) {
|
|
91
|
-
config.resource.attributes_list = resourceAttrList;
|
|
92
|
-
if (config.resource.attributes == null) {
|
|
93
|
-
config.resource.attributes = [];
|
|
94
|
-
}
|
|
95
|
-
for (let i = 0; i < list.length; i++) {
|
|
96
|
-
const element = list[i].split('=');
|
|
97
|
-
if (element[0] !== 'service.name' ||
|
|
98
|
-
(element[0] === 'service.name' && serviceName === undefined)) {
|
|
99
|
-
config.resource.attributes.push({
|
|
100
|
-
name: element[0],
|
|
101
|
-
value: element[1],
|
|
102
|
-
type: 'string',
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
const nodeDetectors = (0, core_1.getStringListFromEnv)('OTEL_NODE_RESOURCE_DETECTORS');
|
|
108
|
-
if (nodeDetectors &&
|
|
109
|
-
nodeDetectors.length > 0 &&
|
|
110
|
-
!nodeDetectors.includes('none')) {
|
|
111
|
-
const all = nodeDetectors.includes('all');
|
|
112
|
-
const detectors = [];
|
|
113
|
-
if (all || nodeDetectors.includes('container'))
|
|
114
|
-
detectors.push({ container: {} });
|
|
115
|
-
if (all || nodeDetectors.includes('host'))
|
|
116
|
-
detectors.push({ host: {} });
|
|
117
|
-
if (all || nodeDetectors.includes('os'))
|
|
118
|
-
detectors.push({ os: {} });
|
|
119
|
-
if (all || nodeDetectors.includes('process'))
|
|
120
|
-
detectors.push({ process: {} });
|
|
121
|
-
if (all || nodeDetectors.includes('serviceinstance'))
|
|
122
|
-
detectors.push({ service: {} });
|
|
123
|
-
if (all || nodeDetectors.includes('env'))
|
|
124
|
-
detectors.push({ env: {} });
|
|
125
|
-
if (detectors.length > 0) {
|
|
126
|
-
if (config.resource['detection/development'] == null) {
|
|
127
|
-
config.resource['detection/development'] = {};
|
|
128
|
-
}
|
|
129
|
-
config.resource['detection/development'].detectors = detectors;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
exports.setResources = setResources;
|
|
134
|
-
function setAttributeLimits(config) {
|
|
135
|
-
const attributeValueLengthLimit = (0, core_1.getNumberFromEnv)('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT');
|
|
136
|
-
if (attributeValueLengthLimit && attributeValueLengthLimit > 0) {
|
|
137
|
-
if (config.attribute_limits == null) {
|
|
138
|
-
config.attribute_limits = { attribute_count_limit: 128 };
|
|
139
|
-
}
|
|
140
|
-
config.attribute_limits.attribute_value_length_limit =
|
|
141
|
-
attributeValueLengthLimit;
|
|
142
|
-
}
|
|
143
|
-
const attributeCountLimit = (0, core_1.getNumberFromEnv)('OTEL_ATTRIBUTE_COUNT_LIMIT');
|
|
144
|
-
if (attributeCountLimit) {
|
|
145
|
-
if (config.attribute_limits == null) {
|
|
146
|
-
config.attribute_limits = { attribute_count_limit: attributeCountLimit };
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
config.attribute_limits.attribute_count_limit = attributeCountLimit;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
exports.setAttributeLimits = setAttributeLimits;
|
|
154
|
-
function setPropagators(config) {
|
|
155
|
-
if (config.propagator == null) {
|
|
156
|
-
config.propagator = {};
|
|
157
|
-
}
|
|
158
|
-
const compositeList = (0, core_1.getStringFromEnv)('OTEL_PROPAGATORS');
|
|
159
|
-
if (compositeList) {
|
|
160
|
-
config.propagator.composite_list = compositeList;
|
|
161
|
-
const names = compositeList
|
|
162
|
-
.split(',')
|
|
163
|
-
.map(s => s.trim())
|
|
164
|
-
.filter(s => s);
|
|
165
|
-
if (names.length > 0) {
|
|
166
|
-
config.propagator.composite = [];
|
|
167
|
-
// Store each propagator name as a type-discriminator key. The config
|
|
168
|
-
// model doesn't validate names here — known vs third-party propagators
|
|
169
|
-
// are resolved when the SDK instantiates from the model.
|
|
170
|
-
for (const name of names) {
|
|
171
|
-
config.propagator.composite.push({ [name]: {} });
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
exports.setPropagators = setPropagators;
|
|
177
|
-
function setSampler(config, env) {
|
|
178
|
-
const sampler = env.OTEL_TRACES_SAMPLER;
|
|
179
|
-
const arg = env.OTEL_TRACES_SAMPLER_ARG;
|
|
180
|
-
if (!sampler || !config.tracer_provider) {
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
const ratio = arg ? parseFloat(arg) : 1.0;
|
|
184
|
-
switch (sampler) {
|
|
185
|
-
case EnvDefinition_1.SamplerType.AlwaysOn:
|
|
186
|
-
config.tracer_provider.sampler = { always_on: {} };
|
|
187
|
-
break;
|
|
188
|
-
case EnvDefinition_1.SamplerType.AlwaysOff:
|
|
189
|
-
config.tracer_provider.sampler = { always_off: {} };
|
|
190
|
-
break;
|
|
191
|
-
case EnvDefinition_1.SamplerType.TraceIdRatio:
|
|
192
|
-
config.tracer_provider.sampler = {
|
|
193
|
-
trace_id_ratio_based: { ratio },
|
|
194
|
-
};
|
|
195
|
-
break;
|
|
196
|
-
case EnvDefinition_1.SamplerType.ParentBasedAlwaysOn:
|
|
197
|
-
config.tracer_provider.sampler = {
|
|
198
|
-
parent_based: { root: { always_on: {} } },
|
|
199
|
-
};
|
|
200
|
-
break;
|
|
201
|
-
case EnvDefinition_1.SamplerType.ParentBasedAlwaysOff:
|
|
202
|
-
config.tracer_provider.sampler = {
|
|
203
|
-
parent_based: { root: { always_off: {} } },
|
|
204
|
-
};
|
|
205
|
-
break;
|
|
206
|
-
case EnvDefinition_1.SamplerType.ParentBasedTraceIdRatio:
|
|
207
|
-
config.tracer_provider.sampler = {
|
|
208
|
-
parent_based: { root: { trace_id_ratio_based: { ratio } } },
|
|
209
|
-
};
|
|
210
|
-
break;
|
|
211
|
-
default:
|
|
212
|
-
// readEnvVar already warns for invalid values via allowedValues
|
|
213
|
-
break;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
exports.setSampler = setSampler;
|
|
217
|
-
function setTracerProvider(config, env) {
|
|
218
|
-
const exportersType = Array.from(new Set((0, core_1.getStringListFromEnv)('OTEL_TRACES_EXPORTER')));
|
|
219
|
-
if (exportersType.length === 0) {
|
|
220
|
-
return;
|
|
221
|
-
}
|
|
222
|
-
if (exportersType.includes('none')) {
|
|
223
|
-
api_1.diag.info('OTEL_TRACES_EXPORTER contains "none". Tracer provider will not be initialized.');
|
|
224
|
-
return;
|
|
225
|
-
}
|
|
226
|
-
config.tracer_provider = (0, utils_1.initializeDefaultTracerProviderConfiguration)();
|
|
227
|
-
setSampler(config, env);
|
|
228
|
-
const attributeValueLengthLimit = (0, core_1.getNumberFromEnv)('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT');
|
|
229
|
-
if (attributeValueLengthLimit) {
|
|
230
|
-
config.tracer_provider.limits.attribute_value_length_limit =
|
|
231
|
-
attributeValueLengthLimit;
|
|
232
|
-
}
|
|
233
|
-
const attributeCountLimit = (0, core_1.getNumberFromEnv)('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT');
|
|
234
|
-
if (attributeCountLimit) {
|
|
235
|
-
config.tracer_provider.limits.attribute_count_limit = attributeCountLimit;
|
|
236
|
-
}
|
|
237
|
-
const eventCountLimit = (0, core_1.getNumberFromEnv)('OTEL_SPAN_EVENT_COUNT_LIMIT');
|
|
238
|
-
if (eventCountLimit) {
|
|
239
|
-
config.tracer_provider.limits.event_count_limit = eventCountLimit;
|
|
240
|
-
}
|
|
241
|
-
const linkCountLimit = (0, core_1.getNumberFromEnv)('OTEL_SPAN_LINK_COUNT_LIMIT');
|
|
242
|
-
if (linkCountLimit) {
|
|
243
|
-
config.tracer_provider.limits.link_count_limit = linkCountLimit;
|
|
244
|
-
}
|
|
245
|
-
const eventAttributeCountLimit = (0, core_1.getNumberFromEnv)('OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT');
|
|
246
|
-
if (eventAttributeCountLimit) {
|
|
247
|
-
config.tracer_provider.limits.event_attribute_count_limit =
|
|
248
|
-
eventAttributeCountLimit;
|
|
249
|
-
}
|
|
250
|
-
const linkAttributeCountLimit = (0, core_1.getNumberFromEnv)('OTEL_LINK_ATTRIBUTE_COUNT_LIMIT');
|
|
251
|
-
if (linkAttributeCountLimit) {
|
|
252
|
-
config.tracer_provider.limits.link_attribute_count_limit =
|
|
253
|
-
linkAttributeCountLimit;
|
|
254
|
-
}
|
|
255
|
-
const batch = {
|
|
256
|
-
exporter: {},
|
|
257
|
-
schedule_delay: (0, core_1.getNumberFromEnv)('OTEL_BSP_SCHEDULE_DELAY') ?? 5000,
|
|
258
|
-
export_timeout: (0, core_1.getNumberFromEnv)('OTEL_BSP_EXPORT_TIMEOUT') ?? 30000,
|
|
259
|
-
max_queue_size: (0, core_1.getNumberFromEnv)('OTEL_BSP_MAX_QUEUE_SIZE') ?? 2048,
|
|
260
|
-
max_export_batch_size: (0, core_1.getNumberFromEnv)('OTEL_BSP_MAX_EXPORT_BATCH_SIZE') ?? 512,
|
|
261
|
-
};
|
|
262
|
-
for (let i = 0; i < exportersType.length; i++) {
|
|
263
|
-
const exporterType = exportersType[i];
|
|
264
|
-
const batchInfo = {
|
|
265
|
-
...batch,
|
|
266
|
-
exporter: {},
|
|
267
|
-
};
|
|
268
|
-
if (exporterType === 'console') {
|
|
269
|
-
const processor = {
|
|
270
|
-
simple: { exporter: { console: {} } },
|
|
271
|
-
};
|
|
272
|
-
config.tracer_provider.processors.push(processor);
|
|
273
|
-
}
|
|
274
|
-
else {
|
|
275
|
-
const protocol = (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_TRACES_PROTOCOL') ??
|
|
276
|
-
(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_PROTOCOL') ??
|
|
277
|
-
'http/protobuf';
|
|
278
|
-
const certificateFile = (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE') ??
|
|
279
|
-
(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_CERTIFICATE');
|
|
280
|
-
const clientKeyFile = (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY') ??
|
|
281
|
-
(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_CLIENT_KEY');
|
|
282
|
-
const clientCertificateFile = (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE') ??
|
|
283
|
-
(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE');
|
|
284
|
-
const compression = (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_TRACES_COMPRESSION') ??
|
|
285
|
-
(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_COMPRESSION');
|
|
286
|
-
const timeout = (0, core_1.getNumberFromEnv)('OTEL_EXPORTER_OTLP_TRACES_TIMEOUT') ??
|
|
287
|
-
(0, core_1.getNumberFromEnv)('OTEL_EXPORTER_OTLP_TIMEOUT') ??
|
|
288
|
-
10000;
|
|
289
|
-
const headersList = (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_TRACES_HEADERS') ??
|
|
290
|
-
(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_HEADERS');
|
|
291
|
-
if (protocol === 'grpc') {
|
|
292
|
-
const tls = (0, utils_1.getGrpcTlsConfig)(certificateFile, clientKeyFile, clientCertificateFile);
|
|
293
|
-
const otlpGrpc = {
|
|
294
|
-
endpoint: (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_TRACES_ENDPOINT') ??
|
|
295
|
-
(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_ENDPOINT') ??
|
|
296
|
-
'http://localhost:4317',
|
|
297
|
-
timeout,
|
|
298
|
-
...(tls !== undefined && { tls }),
|
|
299
|
-
...(compression !== undefined && { compression }),
|
|
300
|
-
...(headersList !== undefined && { headers_list: headersList }),
|
|
301
|
-
};
|
|
302
|
-
batchInfo.exporter = { otlp_grpc: otlpGrpc };
|
|
303
|
-
}
|
|
304
|
-
else {
|
|
305
|
-
const tls = (0, utils_1.getHttpTlsConfig)(certificateFile, clientKeyFile, clientCertificateFile);
|
|
306
|
-
const encoding = protocol === 'http/json'
|
|
307
|
-
? 'json'
|
|
308
|
-
: protocol === 'http/protobuf'
|
|
309
|
-
? 'protobuf'
|
|
310
|
-
: undefined;
|
|
311
|
-
const otlpHttp = {
|
|
312
|
-
endpoint: (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_TRACES_ENDPOINT') ??
|
|
313
|
-
((0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_ENDPOINT')
|
|
314
|
-
? `${(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_ENDPOINT')}/v1/traces`
|
|
315
|
-
: 'http://localhost:4318/v1/traces'),
|
|
316
|
-
timeout,
|
|
317
|
-
...(tls !== undefined && { tls }),
|
|
318
|
-
...(compression !== undefined && { compression }),
|
|
319
|
-
...(headersList !== undefined && { headers_list: headersList }),
|
|
320
|
-
...(encoding !== undefined && { encoding }),
|
|
321
|
-
};
|
|
322
|
-
batchInfo.exporter = { otlp_http: otlpHttp };
|
|
323
|
-
}
|
|
324
|
-
const processor = { batch: batchInfo };
|
|
325
|
-
config.tracer_provider.processors.push(processor);
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
exports.setTracerProvider = setTracerProvider;
|
|
330
|
-
function setMeterProvider(config) {
|
|
331
|
-
const exportersType = Array.from(new Set((0, core_1.getStringListFromEnv)('OTEL_METRICS_EXPORTER')));
|
|
332
|
-
if (exportersType.length === 0) {
|
|
333
|
-
return;
|
|
334
|
-
}
|
|
335
|
-
if (exportersType.includes('none')) {
|
|
336
|
-
api_1.diag.info('OTEL_METRICS_EXPORTER contains "none". Meter provider will not be initialized.');
|
|
337
|
-
return;
|
|
338
|
-
}
|
|
339
|
-
config.meter_provider = (0, utils_1.initializeDefaultMeterProviderConfiguration)();
|
|
340
|
-
const interval = (0, core_1.getNumberFromEnv)('OTEL_METRIC_EXPORT_INTERVAL') ?? 60000;
|
|
341
|
-
for (let i = 0; i < exportersType.length; i++) {
|
|
342
|
-
const exporterType = exportersType[i];
|
|
343
|
-
if (exporterType === 'prometheus') {
|
|
344
|
-
const pullReader = {
|
|
345
|
-
exporter: {
|
|
346
|
-
'prometheus/development': {
|
|
347
|
-
host: (0, core_1.getStringFromEnv)('OTEL_EXPORTER_PROMETHEUS_HOST') ?? 'localhost',
|
|
348
|
-
port: (0, core_1.getNumberFromEnv)('OTEL_EXPORTER_PROMETHEUS_PORT') ?? 9464,
|
|
349
|
-
scope_info_enabled: true,
|
|
350
|
-
'target_info_enabled/development': true,
|
|
351
|
-
},
|
|
352
|
-
},
|
|
353
|
-
};
|
|
354
|
-
config.meter_provider.readers.push({ pull: pullReader });
|
|
355
|
-
continue;
|
|
356
|
-
}
|
|
357
|
-
const readerPeriodicInfo = {
|
|
358
|
-
interval,
|
|
359
|
-
timeout: (0, core_1.getNumberFromEnv)('OTEL_METRIC_EXPORT_TIMEOUT') ?? 30000,
|
|
360
|
-
exporter: {},
|
|
361
|
-
};
|
|
362
|
-
if (exporterType === 'console') {
|
|
363
|
-
readerPeriodicInfo.exporter = { console: {} };
|
|
364
|
-
}
|
|
365
|
-
else {
|
|
366
|
-
const protocol = (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_METRICS_PROTOCOL') ??
|
|
367
|
-
(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_PROTOCOL') ??
|
|
368
|
-
'http/protobuf';
|
|
369
|
-
const certificateFile = (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE') ??
|
|
370
|
-
(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_CERTIFICATE');
|
|
371
|
-
const clientKeyFile = (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY') ??
|
|
372
|
-
(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_CLIENT_KEY');
|
|
373
|
-
const clientCertificateFile = (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE') ??
|
|
374
|
-
(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE');
|
|
375
|
-
const compression = (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_METRICS_COMPRESSION') ??
|
|
376
|
-
(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_COMPRESSION');
|
|
377
|
-
const timeoutExporter = (0, core_1.getNumberFromEnv)('OTEL_EXPORTER_OTLP_METRICS_TIMEOUT') ??
|
|
378
|
-
(0, core_1.getNumberFromEnv)('OTEL_EXPORTER_OTLP_TIMEOUT') ??
|
|
379
|
-
10000;
|
|
380
|
-
const headersList = (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_METRICS_HEADERS') ??
|
|
381
|
-
(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_HEADERS');
|
|
382
|
-
const rawTemporality = (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE') ??
|
|
383
|
-
'cumulative';
|
|
384
|
-
const validTemporalities = ['cumulative', 'delta', 'low_memory'];
|
|
385
|
-
const temporalityPreference = validTemporalities.includes(rawTemporality)
|
|
386
|
-
? rawTemporality
|
|
387
|
-
: 'cumulative';
|
|
388
|
-
const rawHistogramAgg = (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION') ?? 'explicit_bucket_histogram';
|
|
389
|
-
const validHistogramAggs = [
|
|
390
|
-
'explicit_bucket_histogram',
|
|
391
|
-
'base2_exponential_bucket_histogram',
|
|
392
|
-
];
|
|
393
|
-
const defaultHistogramAggregation = validHistogramAggs.includes(rawHistogramAgg)
|
|
394
|
-
? rawHistogramAgg
|
|
395
|
-
: 'explicit_bucket_histogram';
|
|
396
|
-
if (protocol === 'grpc') {
|
|
397
|
-
const tls = (0, utils_1.getGrpcTlsConfig)(certificateFile, clientKeyFile, clientCertificateFile);
|
|
398
|
-
const otlpGrpc = {
|
|
399
|
-
endpoint: (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_METRICS_ENDPOINT') ??
|
|
400
|
-
(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_ENDPOINT') ??
|
|
401
|
-
'http://localhost:4317',
|
|
402
|
-
timeout: timeoutExporter,
|
|
403
|
-
temporality_preference: temporalityPreference,
|
|
404
|
-
default_histogram_aggregation: defaultHistogramAggregation,
|
|
405
|
-
...(tls !== undefined && { tls }),
|
|
406
|
-
...(compression !== undefined && { compression }),
|
|
407
|
-
...(headersList !== undefined && { headers_list: headersList }),
|
|
408
|
-
};
|
|
409
|
-
readerPeriodicInfo.exporter = { otlp_grpc: otlpGrpc };
|
|
410
|
-
}
|
|
411
|
-
else {
|
|
412
|
-
const tls = (0, utils_1.getHttpTlsConfig)(certificateFile, clientKeyFile, clientCertificateFile);
|
|
413
|
-
const encoding = protocol === 'http/json'
|
|
414
|
-
? 'json'
|
|
415
|
-
: protocol === 'http/protobuf'
|
|
416
|
-
? 'protobuf'
|
|
417
|
-
: undefined;
|
|
418
|
-
const otlpHttp = {
|
|
419
|
-
endpoint: (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_METRICS_ENDPOINT') ??
|
|
420
|
-
((0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_ENDPOINT')
|
|
421
|
-
? `${(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_ENDPOINT')}/v1/metrics`
|
|
422
|
-
: 'http://localhost:4318/v1/metrics'),
|
|
423
|
-
timeout: timeoutExporter,
|
|
424
|
-
temporality_preference: temporalityPreference,
|
|
425
|
-
default_histogram_aggregation: defaultHistogramAggregation,
|
|
426
|
-
...(tls !== undefined && { tls }),
|
|
427
|
-
...(compression !== undefined && { compression }),
|
|
428
|
-
...(headersList !== undefined && { headers_list: headersList }),
|
|
429
|
-
...(encoding !== undefined && { encoding }),
|
|
430
|
-
};
|
|
431
|
-
readerPeriodicInfo.exporter = { otlp_http: otlpHttp };
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
config.meter_provider.readers.push({ periodic: readerPeriodicInfo });
|
|
435
|
-
}
|
|
436
|
-
const rawExemplarFilter = (0, core_1.getStringFromEnv)('OTEL_METRICS_EXEMPLAR_FILTER') ?? 'trace_based';
|
|
437
|
-
config.meter_provider.exemplar_filter =
|
|
438
|
-
rawExemplarFilter === 'default'
|
|
439
|
-
? 'trace_based'
|
|
440
|
-
: rawExemplarFilter;
|
|
441
|
-
}
|
|
442
|
-
exports.setMeterProvider = setMeterProvider;
|
|
443
|
-
function setLoggerProvider(config) {
|
|
444
|
-
const exportersType = Array.from(new Set((0, core_1.getStringListFromEnv)('OTEL_LOGS_EXPORTER')));
|
|
445
|
-
if (exportersType.length === 0) {
|
|
446
|
-
return;
|
|
447
|
-
}
|
|
448
|
-
if (exportersType.includes('none')) {
|
|
449
|
-
api_1.diag.info('OTEL_LOGS_EXPORTER contains "none". Logger provider will not be initialized.');
|
|
450
|
-
return;
|
|
451
|
-
}
|
|
452
|
-
config.logger_provider = (0, utils_1.initializeDefaultLoggerProviderConfiguration)();
|
|
453
|
-
const attributeValueLengthLimit = (0, core_1.getNumberFromEnv)('OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT');
|
|
454
|
-
const attributeCountLimit = (0, core_1.getNumberFromEnv)('OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT');
|
|
455
|
-
if (attributeValueLengthLimit || attributeCountLimit) {
|
|
456
|
-
if (attributeValueLengthLimit) {
|
|
457
|
-
config.logger_provider.limits.attribute_value_length_limit =
|
|
458
|
-
attributeValueLengthLimit;
|
|
459
|
-
}
|
|
460
|
-
if (attributeCountLimit) {
|
|
461
|
-
config.logger_provider.limits.attribute_count_limit =
|
|
462
|
-
attributeCountLimit;
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
const batch = {
|
|
466
|
-
exporter: {},
|
|
467
|
-
schedule_delay: (0, core_1.getNumberFromEnv)('OTEL_BLRP_SCHEDULE_DELAY') ?? 1000,
|
|
468
|
-
export_timeout: (0, core_1.getNumberFromEnv)('OTEL_BLRP_EXPORT_TIMEOUT') ?? 30000,
|
|
469
|
-
max_queue_size: (0, core_1.getNumberFromEnv)('OTEL_BLRP_MAX_QUEUE_SIZE') ?? 2048,
|
|
470
|
-
max_export_batch_size: (0, core_1.getNumberFromEnv)('OTEL_BLRP_MAX_EXPORT_BATCH_SIZE') ?? 512,
|
|
471
|
-
};
|
|
472
|
-
for (let i = 0; i < exportersType.length; i++) {
|
|
473
|
-
const exporterType = exportersType[i];
|
|
474
|
-
const batchInfo = {
|
|
475
|
-
...batch,
|
|
476
|
-
exporter: {},
|
|
477
|
-
};
|
|
478
|
-
if (exporterType === 'console') {
|
|
479
|
-
const processor = {
|
|
480
|
-
simple: { exporter: { console: {} } },
|
|
481
|
-
};
|
|
482
|
-
config.logger_provider.processors.push(processor);
|
|
483
|
-
}
|
|
484
|
-
else {
|
|
485
|
-
const protocol = (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_LOGS_PROTOCOL') ??
|
|
486
|
-
(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_PROTOCOL') ??
|
|
487
|
-
'http/protobuf';
|
|
488
|
-
const certificateFile = (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE') ??
|
|
489
|
-
(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_CERTIFICATE');
|
|
490
|
-
const clientKeyFile = (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY') ??
|
|
491
|
-
(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_CLIENT_KEY');
|
|
492
|
-
const clientCertificateFile = (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE') ??
|
|
493
|
-
(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE');
|
|
494
|
-
const compression = (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_LOGS_COMPRESSION') ??
|
|
495
|
-
(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_COMPRESSION');
|
|
496
|
-
const timeout = (0, core_1.getNumberFromEnv)('OTEL_EXPORTER_OTLP_LOGS_TIMEOUT') ??
|
|
497
|
-
(0, core_1.getNumberFromEnv)('OTEL_EXPORTER_OTLP_TIMEOUT') ??
|
|
498
|
-
10000;
|
|
499
|
-
const headersList = (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_LOGS_HEADERS') ??
|
|
500
|
-
(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_HEADERS');
|
|
501
|
-
if (protocol === 'grpc') {
|
|
502
|
-
const tls = (0, utils_1.getGrpcTlsConfig)(certificateFile, clientKeyFile, clientCertificateFile);
|
|
503
|
-
const otlpGrpc = {
|
|
504
|
-
endpoint: (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_LOGS_ENDPOINT') ??
|
|
505
|
-
(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_ENDPOINT') ??
|
|
506
|
-
'http://localhost:4317',
|
|
507
|
-
timeout,
|
|
508
|
-
...(tls !== undefined && { tls }),
|
|
509
|
-
...(compression !== undefined && { compression }),
|
|
510
|
-
...(headersList !== undefined && { headers_list: headersList }),
|
|
511
|
-
};
|
|
512
|
-
batchInfo.exporter = { otlp_grpc: otlpGrpc };
|
|
513
|
-
}
|
|
514
|
-
else {
|
|
515
|
-
const tls = (0, utils_1.getHttpTlsConfig)(certificateFile, clientKeyFile, clientCertificateFile);
|
|
516
|
-
const encoding = protocol === 'http/json'
|
|
517
|
-
? 'json'
|
|
518
|
-
: protocol === 'http/protobuf'
|
|
519
|
-
? 'protobuf'
|
|
520
|
-
: undefined;
|
|
521
|
-
const otlpHttp = {
|
|
522
|
-
endpoint: (0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_LOGS_ENDPOINT') ??
|
|
523
|
-
((0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_ENDPOINT')
|
|
524
|
-
? `${(0, core_1.getStringFromEnv)('OTEL_EXPORTER_OTLP_ENDPOINT')}/v1/logs`
|
|
525
|
-
: 'http://localhost:4318/v1/logs'),
|
|
526
|
-
timeout,
|
|
527
|
-
...(tls !== undefined && { tls }),
|
|
528
|
-
...(compression !== undefined && { compression }),
|
|
529
|
-
...(headersList !== undefined && { headers_list: headersList }),
|
|
530
|
-
...(encoding !== undefined && { encoding }),
|
|
531
|
-
};
|
|
532
|
-
batchInfo.exporter = { otlp_http: otlpHttp };
|
|
533
|
-
}
|
|
534
|
-
const processor = { batch: batchInfo };
|
|
535
|
-
config.logger_provider.processors.push(processor);
|
|
536
|
-
}
|
|
537
|
-
}
|
|
538
|
-
}
|
|
539
|
-
exports.setLoggerProvider = setLoggerProvider;
|
|
540
|
-
//# sourceMappingURL=EnvironmentConfigFactory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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 getStringFromEnv,\n getStringListFromEnv,\n getNumberFromEnv,\n} from '@opentelemetry/core';\nimport type { ConfigFactory } from './IConfigFactory';\nimport type {\n ExemplarFilter,\n BatchLogRecordProcessor,\n BatchSpanProcessor,\n ConfigurationModel,\n ExporterDefaultHistogramAggregation,\n ExporterTemporalityPreference,\n LogRecordExporter,\n LogRecordProcessor,\n PeriodicMetricReader,\n PushMetricExporter,\n SeverityNumber,\n SpanExporter,\n SpanProcessor,\n} from './generated/types';\nimport { diag } from '@opentelemetry/api';\nimport {\n getGrpcTlsConfig,\n getHttpTlsConfig,\n initializeDefaultConfiguration,\n initializeDefaultTracerProviderConfiguration,\n initializeDefaultMeterProviderConfiguration,\n initializeDefaultLoggerProviderConfiguration,\n} from './utils';\nimport type { EnvValues } from './EnvReader';\nimport { readAllEnvVars } from './EnvReader';\nimport { SamplerType } from './EnvDefinition';\n\ntype ExperimentalResourceDetector = NonNullable<\n NonNullable<\n NonNullable<ConfigurationModel['resource']>['detection/development']\n >['detectors']\n>[number];\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 const envValues = readAllEnvVars();\n this._config.disabled = envValues.OTEL_SDK_DISABLED;\n\n const logLevelString = getStringFromEnv('OTEL_LOG_LEVEL');\n if (logLevelString) {\n this._config.log_level =\n severityNumberConfigFromLogLevelString(logLevelString);\n }\n\n setResources(this._config);\n setAttributeLimits(this._config);\n setPropagators(this._config);\n setTracerProvider(this._config, envValues);\n setMeterProvider(this._config);\n setLoggerProvider(this._config);\n }\n\n getConfigModel(): ConfigurationModel {\n return this._config;\n }\n}\n\nconst SEV_NUM_CONFIG_FROM_LOG_LEVEL: { [key: string]: SeverityNumber } = {\n // Declarative config `log_level` has no \"NONE\". Using 'fatal' is\n // equivalent, because the OTel JS diag API does not have a \"fatal\" level.\n NONE: 'fatal',\n ERROR: 'error',\n WARN: 'warn',\n INFO: 'info',\n DEBUG: 'debug',\n VERBOSE: 'trace2',\n // Declarative config `log_level` has no \"ALL\". Using 'trace' is\n // equivalent, because that is the lowest SeverityNumber level.\n ALL: 'trace',\n};\n\n/**\n * Return a declarative config SeverityNumberConfig value (as used for\n * `log_level`) for the given `OTEL_LOG_LEVEL` string value.\n *\n * See notes at \"opentelemetr-sdk-node/src/diag.ts\".\n */\nfunction severityNumberConfigFromLogLevelString(\n str?: string\n): SeverityNumber | undefined {\n if (!str) {\n return undefined;\n }\n const sevNumConfig = SEV_NUM_CONFIG_FROM_LOG_LEVEL[str.toUpperCase()];\n if (!sevNumConfig) {\n diag.warn(\n `Unknown log level \"${str}\", expected one of ${Object.keys(SEV_NUM_CONFIG_FROM_LOG_LEVEL)}, using default info`\n );\n return 'info';\n }\n return sevNumConfig;\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 = resourceAttrList\n ? resourceAttrList\n .split(',')\n .map(s => s.trim())\n .filter(s => s)\n : [];\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.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 compositeList = getStringFromEnv('OTEL_PROPAGATORS');\n if (compositeList) {\n config.propagator.composite_list = compositeList;\n const names = compositeList\n .split(',')\n .map(s => s.trim())\n .filter(s => s);\n if (names.length > 0) {\n config.propagator.composite = [];\n // Store each propagator name as a type-discriminator key. The config\n // model doesn't validate names here — known vs third-party propagators\n // are resolved when the SDK instantiates from the model.\n for (const name of names) {\n config.propagator.composite.push({ [name]: {} });\n }\n }\n }\n}\n\nexport function setSampler(config: ConfigurationModel, env: EnvValues): void {\n const sampler = env.OTEL_TRACES_SAMPLER;\n const arg = env.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 SamplerType.AlwaysOn:\n config.tracer_provider.sampler = { always_on: {} };\n break;\n\n case SamplerType.AlwaysOff:\n config.tracer_provider.sampler = { always_off: {} };\n break;\n\n case SamplerType.TraceIdRatio:\n config.tracer_provider.sampler = {\n trace_id_ratio_based: { ratio },\n };\n break;\n\n case SamplerType.ParentBasedAlwaysOn:\n config.tracer_provider.sampler = {\n parent_based: { root: { always_on: {} } },\n };\n break;\n\n case SamplerType.ParentBasedAlwaysOff:\n config.tracer_provider.sampler = {\n parent_based: { root: { always_off: {} } },\n };\n break;\n\n case SamplerType.ParentBasedTraceIdRatio:\n config.tracer_provider.sampler = {\n parent_based: { root: { trace_id_ratio_based: { ratio } } },\n };\n break;\n\n default:\n // readEnvVar already warns for invalid values via allowedValues\n break;\n }\n}\n\nexport function setTracerProvider(\n config: ConfigurationModel,\n env: EnvValues\n): 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, env);\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 = {\n exporter: {},\n schedule_delay: getNumberFromEnv('OTEL_BSP_SCHEDULE_DELAY') ?? 5000,\n export_timeout: getNumberFromEnv('OTEL_BSP_EXPORT_TIMEOUT') ?? 30000,\n max_queue_size: getNumberFromEnv('OTEL_BSP_MAX_QUEUE_SIZE') ?? 2048,\n max_export_batch_size:\n getNumberFromEnv('OTEL_BSP_MAX_EXPORT_BATCH_SIZE') ?? 512,\n };\n\n for (let i = 0; i < exportersType.length; i++) {\n const exporterType = exportersType[i];\n const batchInfo: BatchSpanProcessor = {\n ...batch,\n exporter: {},\n };\n if (exporterType === 'console') {\n const processor: SpanProcessor = {\n simple: { exporter: { console: {} } },\n };\n config.tracer_provider.processors!.push(processor);\n } else {\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 const tls = getGrpcTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n const otlpGrpc: NonNullable<SpanExporter['otlp_grpc']> = {\n endpoint:\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_ENDPOINT') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT') ??\n 'http://localhost:4317',\n timeout,\n ...(tls !== undefined && { tls }),\n ...(compression !== undefined && { compression }),\n ...(headersList !== undefined && { headers_list: headersList }),\n };\n batchInfo.exporter = { otlp_grpc: otlpGrpc };\n } else {\n const tls = getHttpTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n const encoding =\n protocol === 'http/json'\n ? 'json'\n : protocol === 'http/protobuf'\n ? 'protobuf'\n : undefined;\n const otlpHttp: NonNullable<SpanExporter['otlp_http']> = {\n 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 timeout,\n ...(tls !== undefined && { tls }),\n ...(compression !== undefined && { compression }),\n ...(headersList !== undefined && { headers_list: headersList }),\n ...(encoding !== undefined && { encoding }),\n };\n batchInfo.exporter = { otlp_http: otlpHttp };\n }\n\n const processor: SpanProcessor = { batch: batchInfo };\n config.tracer_provider.processors!.push(processor);\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 interval = getNumberFromEnv('OTEL_METRIC_EXPORT_INTERVAL') ?? 60000;\n for (let i = 0; i < exportersType.length; i++) {\n const exporterType = exportersType[i];\n if (exporterType === 'prometheus') {\n const pullReader = {\n exporter: {\n 'prometheus/development': {\n host:\n getStringFromEnv('OTEL_EXPORTER_PROMETHEUS_HOST') ?? 'localhost',\n port: getNumberFromEnv('OTEL_EXPORTER_PROMETHEUS_PORT') ?? 9464,\n scope_info_enabled: true,\n 'target_info_enabled/development': true,\n },\n },\n };\n config.meter_provider.readers!.push({ pull: pullReader });\n continue;\n }\n\n const readerPeriodicInfo: PeriodicMetricReader = {\n interval,\n timeout: getNumberFromEnv('OTEL_METRIC_EXPORT_TIMEOUT') ?? 30000,\n exporter: {},\n };\n\n if (exporterType === 'console') {\n readerPeriodicInfo.exporter = { console: {} };\n } else {\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 rawTemporality =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE') ??\n 'cumulative';\n const validTemporalities = ['cumulative', 'delta', 'low_memory'];\n const temporalityPreference = validTemporalities.includes(rawTemporality)\n ? rawTemporality\n : 'cumulative';\n const rawHistogramAgg =\n getStringFromEnv(\n 'OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION'\n ) ?? 'explicit_bucket_histogram';\n const validHistogramAggs = [\n 'explicit_bucket_histogram',\n 'base2_exponential_bucket_histogram',\n ];\n const defaultHistogramAggregation = validHistogramAggs.includes(\n rawHistogramAgg\n )\n ? rawHistogramAgg\n : 'explicit_bucket_histogram';\n\n if (protocol === 'grpc') {\n const tls = getGrpcTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n const otlpGrpc: NonNullable<PushMetricExporter['otlp_grpc']> = {\n endpoint:\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_ENDPOINT') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT') ??\n 'http://localhost:4317',\n timeout: timeoutExporter,\n temporality_preference:\n temporalityPreference as ExporterTemporalityPreference,\n default_histogram_aggregation:\n defaultHistogramAggregation as ExporterDefaultHistogramAggregation,\n ...(tls !== undefined && { tls }),\n ...(compression !== undefined && { compression }),\n ...(headersList !== undefined && { headers_list: headersList }),\n };\n readerPeriodicInfo.exporter = { otlp_grpc: otlpGrpc };\n } else {\n const tls = getHttpTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n const encoding =\n protocol === 'http/json'\n ? 'json'\n : protocol === 'http/protobuf'\n ? 'protobuf'\n : undefined;\n const otlpHttp: NonNullable<PushMetricExporter['otlp_http']> = {\n 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 timeout: timeoutExporter,\n temporality_preference:\n temporalityPreference as ExporterTemporalityPreference,\n default_histogram_aggregation:\n defaultHistogramAggregation as ExporterDefaultHistogramAggregation,\n ...(tls !== undefined && { tls }),\n ...(compression !== undefined && { compression }),\n ...(headersList !== undefined && { headers_list: headersList }),\n ...(encoding !== undefined && { encoding }),\n };\n readerPeriodicInfo.exporter = { otlp_http: otlpHttp };\n }\n }\n config.meter_provider.readers!.push({ periodic: readerPeriodicInfo });\n }\n\n const rawExemplarFilter =\n getStringFromEnv('OTEL_METRICS_EXEMPLAR_FILTER') ?? 'trace_based';\n config.meter_provider.exemplar_filter =\n rawExemplarFilter === 'default'\n ? 'trace_based'\n : (rawExemplarFilter as ExemplarFilter);\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 = {\n exporter: {},\n schedule_delay: getNumberFromEnv('OTEL_BLRP_SCHEDULE_DELAY') ?? 1000,\n export_timeout: getNumberFromEnv('OTEL_BLRP_EXPORT_TIMEOUT') ?? 30000,\n max_queue_size: getNumberFromEnv('OTEL_BLRP_MAX_QUEUE_SIZE') ?? 2048,\n max_export_batch_size:\n getNumberFromEnv('OTEL_BLRP_MAX_EXPORT_BATCH_SIZE') ?? 512,\n };\n\n for (let i = 0; i < exportersType.length; i++) {\n const exporterType = exportersType[i];\n const batchInfo: BatchLogRecordProcessor = {\n ...batch,\n exporter: {},\n };\n if (exporterType === 'console') {\n const processor: LogRecordProcessor = {\n simple: { exporter: { console: {} } },\n };\n config.logger_provider.processors!.push(processor);\n } else {\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 const tls = getGrpcTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n const otlpGrpc: NonNullable<LogRecordExporter['otlp_grpc']> = {\n endpoint:\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_ENDPOINT') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT') ??\n 'http://localhost:4317',\n timeout,\n ...(tls !== undefined && { tls }),\n ...(compression !== undefined && { compression }),\n ...(headersList !== undefined && { headers_list: headersList }),\n };\n batchInfo.exporter = { otlp_grpc: otlpGrpc };\n } else {\n const tls = getHttpTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n const encoding =\n protocol === 'http/json'\n ? 'json'\n : protocol === 'http/protobuf'\n ? 'protobuf'\n : undefined;\n const otlpHttp: NonNullable<LogRecordExporter['otlp_http']> = {\n 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 timeout,\n ...(tls !== undefined && { tls }),\n ...(compression !== undefined && { compression }),\n ...(headersList !== undefined && { headers_list: headersList }),\n ...(encoding !== undefined && { encoding }),\n };\n batchInfo.exporter = { otlp_http: otlpHttp };\n }\n const processor: LogRecordProcessor = { batch: batchInfo };\n config.logger_provider.processors!.push(processor);\n }\n }\n}\n"]}
|