@opentelemetry/configuration 0.300.0 → 0.301.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/README.md +23 -136
- package/dist/index.cjs +5 -6
- package/dist/index.d.cts +2 -4
- package/dist/index.d.mts +2 -4
- package/dist/index.mjs +2 -3
- package/dist/{FileConfigFactory.cjs → parse.cjs} +23 -26
- package/dist/parse.cjs.map +1 -0
- package/dist/{FileConfigFactory.d.cts → parse.d.cts} +5 -4
- package/dist/parse.d.cts.map +1 -0
- package/dist/{FileConfigFactory.d.mts → parse.d.mts} +5 -4
- package/dist/parse.d.mts.map +1 -0
- package/dist/{FileConfigFactory.mjs → parse.mjs} +22 -25
- package/dist/parse.mjs.map +1 -0
- package/dist/utils.cjs +0 -60
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.mjs +1 -55
- package/dist/utils.mjs.map +1 -1
- package/package.json +5 -5
- package/dist/ConfigFactory.cjs +0 -12
- package/dist/ConfigFactory.cjs.map +0 -1
- package/dist/ConfigFactory.d.cts +0 -6
- package/dist/ConfigFactory.d.cts.map +0 -1
- package/dist/ConfigFactory.d.mts +0 -6
- package/dist/ConfigFactory.d.mts.map +0 -1
- package/dist/ConfigFactory.mjs +0 -12
- package/dist/ConfigFactory.mjs.map +0 -1
- package/dist/EnvDefinition.cjs +0 -34
- package/dist/EnvDefinition.cjs.map +0 -1
- package/dist/EnvDefinition.mjs +0 -33
- package/dist/EnvDefinition.mjs.map +0 -1
- package/dist/EnvReader.cjs +0 -37
- package/dist/EnvReader.cjs.map +0 -1
- package/dist/EnvReader.mjs +0 -36
- package/dist/EnvReader.mjs.map +0 -1
- package/dist/EnvironmentConfigFactory.cjs +0 -354
- package/dist/EnvironmentConfigFactory.cjs.map +0 -1
- package/dist/EnvironmentConfigFactory.mjs +0 -347
- package/dist/EnvironmentConfigFactory.mjs.map +0 -1
- package/dist/FileConfigFactory.cjs.map +0 -1
- package/dist/FileConfigFactory.d.cts.map +0 -1
- package/dist/FileConfigFactory.d.mts.map +0 -1
- package/dist/FileConfigFactory.mjs.map +0 -1
- package/dist/IConfigFactory.d.cts +0 -13
- package/dist/IConfigFactory.d.cts.map +0 -1
- package/dist/IConfigFactory.d.mts +0 -13
- package/dist/IConfigFactory.d.mts.map +0 -1
|
@@ -1,354 +0,0 @@
|
|
|
1
|
-
const require_utils = require("./utils.cjs");
|
|
2
|
-
require("./EnvDefinition.cjs");
|
|
3
|
-
const require_EnvReader = require("./EnvReader.cjs");
|
|
4
|
-
let _opentelemetry_core = require("@opentelemetry/core");
|
|
5
|
-
let _opentelemetry_api = require("@opentelemetry/api");
|
|
6
|
-
//#region src/EnvironmentConfigFactory.ts
|
|
7
|
-
/**
|
|
8
|
-
* EnvironmentConfigProvider provides a configuration based on environment variables.
|
|
9
|
-
*/
|
|
10
|
-
var EnvironmentConfigFactory = class {
|
|
11
|
-
_config;
|
|
12
|
-
constructor() {
|
|
13
|
-
this._config = require_utils.initializeDefaultConfiguration();
|
|
14
|
-
const envValues = require_EnvReader.readAllEnvVars();
|
|
15
|
-
this._config.disabled = envValues.OTEL_SDK_DISABLED;
|
|
16
|
-
const logLevelString = (0, _opentelemetry_core.getStringFromEnv)("OTEL_LOG_LEVEL");
|
|
17
|
-
if (logLevelString) this._config.log_level = severityNumberConfigFromLogLevelString(logLevelString);
|
|
18
|
-
setResources(this._config);
|
|
19
|
-
setAttributeLimits(this._config);
|
|
20
|
-
setPropagators(this._config);
|
|
21
|
-
setTracerProvider(this._config, envValues);
|
|
22
|
-
setMeterProvider(this._config);
|
|
23
|
-
setLoggerProvider(this._config);
|
|
24
|
-
}
|
|
25
|
-
getConfigModel() {
|
|
26
|
-
return this._config;
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
const SEV_NUM_CONFIG_FROM_LOG_LEVEL = {
|
|
30
|
-
NONE: "fatal",
|
|
31
|
-
ERROR: "error",
|
|
32
|
-
WARN: "warn",
|
|
33
|
-
INFO: "info",
|
|
34
|
-
DEBUG: "debug",
|
|
35
|
-
VERBOSE: "trace2",
|
|
36
|
-
ALL: "trace"
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* Return a declarative config SeverityNumberConfig value (as used for
|
|
40
|
-
* `log_level`) for the given `OTEL_LOG_LEVEL` string value.
|
|
41
|
-
*
|
|
42
|
-
* See notes at "opentelemetr-sdk-node/src/diag.ts".
|
|
43
|
-
*/
|
|
44
|
-
function severityNumberConfigFromLogLevelString(str) {
|
|
45
|
-
if (!str) return;
|
|
46
|
-
const sevNumConfig = SEV_NUM_CONFIG_FROM_LOG_LEVEL[str.toUpperCase()];
|
|
47
|
-
if (!sevNumConfig) {
|
|
48
|
-
_opentelemetry_api.diag.warn(`Unknown log level "${str}", expected one of ${Object.keys(SEV_NUM_CONFIG_FROM_LOG_LEVEL)}, using default info`);
|
|
49
|
-
return "info";
|
|
50
|
-
}
|
|
51
|
-
return sevNumConfig;
|
|
52
|
-
}
|
|
53
|
-
function setResources(config) {
|
|
54
|
-
if (config.resource == null) config.resource = {};
|
|
55
|
-
const resourceAttrList = (0, _opentelemetry_core.getStringFromEnv)("OTEL_RESOURCE_ATTRIBUTES");
|
|
56
|
-
const list = resourceAttrList ? resourceAttrList.split(",").map((s) => s.trim()).filter((s) => s) : [];
|
|
57
|
-
const serviceName = (0, _opentelemetry_core.getStringFromEnv)("OTEL_SERVICE_NAME");
|
|
58
|
-
if (serviceName) config.resource.attributes = [{
|
|
59
|
-
name: "service.name",
|
|
60
|
-
value: serviceName,
|
|
61
|
-
type: "string"
|
|
62
|
-
}];
|
|
63
|
-
if (list.length > 0) {
|
|
64
|
-
config.resource.attributes_list = resourceAttrList;
|
|
65
|
-
if (config.resource.attributes == null) config.resource.attributes = [];
|
|
66
|
-
for (let i = 0; i < list.length; i++) {
|
|
67
|
-
const element = list[i].split("=");
|
|
68
|
-
if (element[0] !== "service.name" || element[0] === "service.name" && serviceName === void 0) config.resource.attributes.push({
|
|
69
|
-
name: element[0],
|
|
70
|
-
value: element[1],
|
|
71
|
-
type: "string"
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
const nodeDetectors = (0, _opentelemetry_core.getStringListFromEnv)("OTEL_NODE_RESOURCE_DETECTORS");
|
|
76
|
-
if (nodeDetectors && nodeDetectors.length > 0 && !nodeDetectors.includes("none")) {
|
|
77
|
-
const all = nodeDetectors.includes("all");
|
|
78
|
-
const detectors = [];
|
|
79
|
-
if (all || nodeDetectors.includes("container")) detectors.push({ container: {} });
|
|
80
|
-
if (all || nodeDetectors.includes("host")) detectors.push({ host: {} });
|
|
81
|
-
if (all || nodeDetectors.includes("os")) detectors.push({ os: {} });
|
|
82
|
-
if (all || nodeDetectors.includes("process")) detectors.push({ process: {} });
|
|
83
|
-
if (all || nodeDetectors.includes("serviceinstance")) detectors.push({ service: {} });
|
|
84
|
-
if (all || nodeDetectors.includes("env")) detectors.push({ env: {} });
|
|
85
|
-
if (detectors.length > 0) {
|
|
86
|
-
if (config.resource["detection/development"] == null) config.resource["detection/development"] = {};
|
|
87
|
-
config.resource["detection/development"].detectors = detectors;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
function setAttributeLimits(config) {
|
|
92
|
-
const attributeValueLengthLimit = (0, _opentelemetry_core.getNumberFromEnv)("OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT");
|
|
93
|
-
if (attributeValueLengthLimit !== void 0 && attributeValueLengthLimit >= 0) {
|
|
94
|
-
if (config.attribute_limits == null) config.attribute_limits = { attribute_count_limit: 128 };
|
|
95
|
-
config.attribute_limits.attribute_value_length_limit = attributeValueLengthLimit;
|
|
96
|
-
}
|
|
97
|
-
const attributeCountLimit = (0, _opentelemetry_core.getNumberFromEnv)("OTEL_ATTRIBUTE_COUNT_LIMIT");
|
|
98
|
-
if (attributeCountLimit !== void 0) {
|
|
99
|
-
if (config.attribute_limits == null) config.attribute_limits = { attribute_count_limit: attributeCountLimit };
|
|
100
|
-
else config.attribute_limits.attribute_count_limit = attributeCountLimit;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
function setPropagators(config) {
|
|
104
|
-
if (config.propagator == null) config.propagator = {};
|
|
105
|
-
const compositeList = (0, _opentelemetry_core.getStringFromEnv)("OTEL_PROPAGATORS");
|
|
106
|
-
if (compositeList) {
|
|
107
|
-
config.propagator.composite_list = compositeList;
|
|
108
|
-
const names = compositeList.split(",").map((s) => s.trim()).filter((s) => s);
|
|
109
|
-
if (names.length > 0) {
|
|
110
|
-
config.propagator.composite = [];
|
|
111
|
-
for (const name of names) config.propagator.composite.push({ [name]: {} });
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
function setSampler(config, env) {
|
|
116
|
-
const sampler = env.OTEL_TRACES_SAMPLER;
|
|
117
|
-
const arg = env.OTEL_TRACES_SAMPLER_ARG;
|
|
118
|
-
if (!sampler || !config.tracer_provider) return;
|
|
119
|
-
const ratio = arg ? parseFloat(arg) : 1;
|
|
120
|
-
switch (sampler) {
|
|
121
|
-
case "always_on":
|
|
122
|
-
config.tracer_provider.sampler = { always_on: {} };
|
|
123
|
-
break;
|
|
124
|
-
case "always_off":
|
|
125
|
-
config.tracer_provider.sampler = { always_off: {} };
|
|
126
|
-
break;
|
|
127
|
-
case "traceidratio":
|
|
128
|
-
config.tracer_provider.sampler = { trace_id_ratio_based: { ratio } };
|
|
129
|
-
break;
|
|
130
|
-
case "parentbased_always_on":
|
|
131
|
-
config.tracer_provider.sampler = { parent_based: { root: { always_on: {} } } };
|
|
132
|
-
break;
|
|
133
|
-
case "parentbased_always_off":
|
|
134
|
-
config.tracer_provider.sampler = { parent_based: { root: { always_off: {} } } };
|
|
135
|
-
break;
|
|
136
|
-
case "parentbased_traceidratio": config.tracer_provider.sampler = { parent_based: { root: { trace_id_ratio_based: { ratio } } } };
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
function setTracerProvider(config, env) {
|
|
140
|
-
const exportersType = Array.from(new Set((0, _opentelemetry_core.getStringListFromEnv)("OTEL_TRACES_EXPORTER")));
|
|
141
|
-
if (exportersType.length === 0) return;
|
|
142
|
-
if (exportersType.includes("none")) {
|
|
143
|
-
_opentelemetry_api.diag.info("OTEL_TRACES_EXPORTER contains \"none\". Tracer provider will not be initialized.");
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
config.tracer_provider = require_utils.initializeDefaultTracerProviderConfiguration();
|
|
147
|
-
setSampler(config, env);
|
|
148
|
-
const attributeValueLengthLimit = (0, _opentelemetry_core.getNumberFromEnv)("OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT");
|
|
149
|
-
if (attributeValueLengthLimit !== void 0) config.tracer_provider.limits.attribute_value_length_limit = attributeValueLengthLimit;
|
|
150
|
-
const attributeCountLimit = (0, _opentelemetry_core.getNumberFromEnv)("OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT");
|
|
151
|
-
if (attributeCountLimit !== void 0) config.tracer_provider.limits.attribute_count_limit = attributeCountLimit;
|
|
152
|
-
const eventCountLimit = (0, _opentelemetry_core.getNumberFromEnv)("OTEL_SPAN_EVENT_COUNT_LIMIT");
|
|
153
|
-
if (eventCountLimit !== void 0) config.tracer_provider.limits.event_count_limit = eventCountLimit;
|
|
154
|
-
const linkCountLimit = (0, _opentelemetry_core.getNumberFromEnv)("OTEL_SPAN_LINK_COUNT_LIMIT");
|
|
155
|
-
if (linkCountLimit !== void 0) config.tracer_provider.limits.link_count_limit = linkCountLimit;
|
|
156
|
-
const eventAttributeCountLimit = (0, _opentelemetry_core.getNumberFromEnv)("OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT");
|
|
157
|
-
if (eventAttributeCountLimit !== void 0) config.tracer_provider.limits.event_attribute_count_limit = eventAttributeCountLimit;
|
|
158
|
-
const linkAttributeCountLimit = (0, _opentelemetry_core.getNumberFromEnv)("OTEL_LINK_ATTRIBUTE_COUNT_LIMIT");
|
|
159
|
-
if (linkAttributeCountLimit !== void 0) config.tracer_provider.limits.link_attribute_count_limit = linkAttributeCountLimit;
|
|
160
|
-
const batch = {
|
|
161
|
-
exporter: {},
|
|
162
|
-
schedule_delay: (0, _opentelemetry_core.getNumberFromEnv)("OTEL_BSP_SCHEDULE_DELAY") ?? 5e3,
|
|
163
|
-
export_timeout: (0, _opentelemetry_core.getNumberFromEnv)("OTEL_BSP_EXPORT_TIMEOUT") ?? 3e4,
|
|
164
|
-
max_queue_size: (0, _opentelemetry_core.getNumberFromEnv)("OTEL_BSP_MAX_QUEUE_SIZE") ?? 2048,
|
|
165
|
-
max_export_batch_size: (0, _opentelemetry_core.getNumberFromEnv)("OTEL_BSP_MAX_EXPORT_BATCH_SIZE") ?? 512
|
|
166
|
-
};
|
|
167
|
-
for (let i = 0; i < exportersType.length; i++) {
|
|
168
|
-
const exporterType = exportersType[i];
|
|
169
|
-
const batchInfo = {
|
|
170
|
-
...batch,
|
|
171
|
-
exporter: {}
|
|
172
|
-
};
|
|
173
|
-
if (exporterType === "console") config.tracer_provider.processors.push({ simple: { exporter: { console: {} } } });
|
|
174
|
-
else {
|
|
175
|
-
const protocol = (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_TRACES_PROTOCOL") ?? (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_PROTOCOL") ?? "http/protobuf";
|
|
176
|
-
const certificateFile = (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE") ?? (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_CERTIFICATE");
|
|
177
|
-
const clientKeyFile = (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY") ?? (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_CLIENT_KEY");
|
|
178
|
-
const clientCertificateFile = (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE") ?? (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE");
|
|
179
|
-
const compression = (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_TRACES_COMPRESSION") ?? (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_COMPRESSION");
|
|
180
|
-
const timeout = (0, _opentelemetry_core.getNumberFromEnv)("OTEL_EXPORTER_OTLP_TRACES_TIMEOUT") ?? (0, _opentelemetry_core.getNumberFromEnv)("OTEL_EXPORTER_OTLP_TIMEOUT") ?? 1e4;
|
|
181
|
-
const headersList = (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_TRACES_HEADERS") ?? (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_HEADERS");
|
|
182
|
-
if (protocol === "grpc") {
|
|
183
|
-
const tls = require_utils.getGrpcTlsConfig(certificateFile, clientKeyFile, clientCertificateFile);
|
|
184
|
-
batchInfo.exporter = { otlp_grpc: {
|
|
185
|
-
endpoint: (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT") ?? (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_ENDPOINT") ?? "http://localhost:4317",
|
|
186
|
-
timeout,
|
|
187
|
-
...tls !== void 0 && { tls },
|
|
188
|
-
...compression !== void 0 && { compression },
|
|
189
|
-
...headersList !== void 0 && { headers_list: headersList }
|
|
190
|
-
} };
|
|
191
|
-
} else {
|
|
192
|
-
const tls = require_utils.getHttpTlsConfig(certificateFile, clientKeyFile, clientCertificateFile);
|
|
193
|
-
const encoding = protocol === "http/json" ? "json" : protocol === "http/protobuf" ? "protobuf" : void 0;
|
|
194
|
-
batchInfo.exporter = { otlp_http: {
|
|
195
|
-
endpoint: (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT") ?? ((0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_ENDPOINT") ? `${(0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_ENDPOINT")}/v1/traces` : "http://localhost:4318/v1/traces"),
|
|
196
|
-
timeout,
|
|
197
|
-
...tls !== void 0 && { tls },
|
|
198
|
-
...compression !== void 0 && { compression },
|
|
199
|
-
...headersList !== void 0 && { headers_list: headersList },
|
|
200
|
-
...encoding !== void 0 && { encoding }
|
|
201
|
-
} };
|
|
202
|
-
}
|
|
203
|
-
const processor = { batch: batchInfo };
|
|
204
|
-
config.tracer_provider.processors.push(processor);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
function setMeterProvider(config) {
|
|
209
|
-
const exportersType = Array.from(new Set((0, _opentelemetry_core.getStringListFromEnv)("OTEL_METRICS_EXPORTER")));
|
|
210
|
-
if (exportersType.length === 0) return;
|
|
211
|
-
if (exportersType.includes("none")) {
|
|
212
|
-
_opentelemetry_api.diag.info("OTEL_METRICS_EXPORTER contains \"none\". Meter provider will not be initialized.");
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
|
-
config.meter_provider = require_utils.initializeDefaultMeterProviderConfiguration();
|
|
216
|
-
const interval = (0, _opentelemetry_core.getNumberFromEnv)("OTEL_METRIC_EXPORT_INTERVAL") ?? 6e4;
|
|
217
|
-
for (let i = 0; i < exportersType.length; i++) {
|
|
218
|
-
const exporterType = exportersType[i];
|
|
219
|
-
if (exporterType === "prometheus") {
|
|
220
|
-
const pullReader = { exporter: { "prometheus/development": {
|
|
221
|
-
host: (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_PROMETHEUS_HOST") ?? "localhost",
|
|
222
|
-
port: (0, _opentelemetry_core.getNumberFromEnv)("OTEL_EXPORTER_PROMETHEUS_PORT") ?? 9464,
|
|
223
|
-
scope_info_enabled: true,
|
|
224
|
-
"target_info_enabled/development": true
|
|
225
|
-
} } };
|
|
226
|
-
config.meter_provider.readers.push({ pull: pullReader });
|
|
227
|
-
continue;
|
|
228
|
-
}
|
|
229
|
-
const readerPeriodicInfo = {
|
|
230
|
-
interval,
|
|
231
|
-
timeout: (0, _opentelemetry_core.getNumberFromEnv)("OTEL_METRIC_EXPORT_TIMEOUT") ?? 3e4,
|
|
232
|
-
exporter: {}
|
|
233
|
-
};
|
|
234
|
-
if (exporterType === "console") readerPeriodicInfo.exporter = { console: {} };
|
|
235
|
-
else {
|
|
236
|
-
const protocol = (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_METRICS_PROTOCOL") ?? (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_PROTOCOL") ?? "http/protobuf";
|
|
237
|
-
const certificateFile = (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE") ?? (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_CERTIFICATE");
|
|
238
|
-
const clientKeyFile = (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY") ?? (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_CLIENT_KEY");
|
|
239
|
-
const clientCertificateFile = (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE") ?? (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE");
|
|
240
|
-
const compression = (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_METRICS_COMPRESSION") ?? (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_COMPRESSION");
|
|
241
|
-
const timeoutExporter = (0, _opentelemetry_core.getNumberFromEnv)("OTEL_EXPORTER_OTLP_METRICS_TIMEOUT") ?? (0, _opentelemetry_core.getNumberFromEnv)("OTEL_EXPORTER_OTLP_TIMEOUT") ?? 1e4;
|
|
242
|
-
const headersList = (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_METRICS_HEADERS") ?? (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_HEADERS");
|
|
243
|
-
const rawTemporality = (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE") ?? "cumulative";
|
|
244
|
-
const temporalityPreference = [
|
|
245
|
-
"cumulative",
|
|
246
|
-
"delta",
|
|
247
|
-
"low_memory"
|
|
248
|
-
].includes(rawTemporality) ? rawTemporality : "cumulative";
|
|
249
|
-
const rawHistogramAgg = (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION") ?? "explicit_bucket_histogram";
|
|
250
|
-
const defaultHistogramAggregation = ["explicit_bucket_histogram", "base2_exponential_bucket_histogram"].includes(rawHistogramAgg) ? rawHistogramAgg : "explicit_bucket_histogram";
|
|
251
|
-
if (protocol === "grpc") {
|
|
252
|
-
const tls = require_utils.getGrpcTlsConfig(certificateFile, clientKeyFile, clientCertificateFile);
|
|
253
|
-
readerPeriodicInfo.exporter = { otlp_grpc: {
|
|
254
|
-
endpoint: (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_METRICS_ENDPOINT") ?? (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_ENDPOINT") ?? "http://localhost:4317",
|
|
255
|
-
timeout: timeoutExporter,
|
|
256
|
-
temporality_preference: temporalityPreference,
|
|
257
|
-
default_histogram_aggregation: defaultHistogramAggregation,
|
|
258
|
-
...tls !== void 0 && { tls },
|
|
259
|
-
...compression !== void 0 && { compression },
|
|
260
|
-
...headersList !== void 0 && { headers_list: headersList }
|
|
261
|
-
} };
|
|
262
|
-
} else {
|
|
263
|
-
const tls = require_utils.getHttpTlsConfig(certificateFile, clientKeyFile, clientCertificateFile);
|
|
264
|
-
const encoding = protocol === "http/json" ? "json" : protocol === "http/protobuf" ? "protobuf" : void 0;
|
|
265
|
-
readerPeriodicInfo.exporter = { otlp_http: {
|
|
266
|
-
endpoint: (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_METRICS_ENDPOINT") ?? ((0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_ENDPOINT") ? `${(0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_ENDPOINT")}/v1/metrics` : "http://localhost:4318/v1/metrics"),
|
|
267
|
-
timeout: timeoutExporter,
|
|
268
|
-
temporality_preference: temporalityPreference,
|
|
269
|
-
default_histogram_aggregation: defaultHistogramAggregation,
|
|
270
|
-
...tls !== void 0 && { tls },
|
|
271
|
-
...compression !== void 0 && { compression },
|
|
272
|
-
...headersList !== void 0 && { headers_list: headersList },
|
|
273
|
-
...encoding !== void 0 && { encoding }
|
|
274
|
-
} };
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
config.meter_provider.readers.push({ periodic: readerPeriodicInfo });
|
|
278
|
-
}
|
|
279
|
-
const rawExemplarFilter = (0, _opentelemetry_core.getStringFromEnv)("OTEL_METRICS_EXEMPLAR_FILTER") ?? "trace_based";
|
|
280
|
-
config.meter_provider.exemplar_filter = rawExemplarFilter === "default" ? "trace_based" : rawExemplarFilter;
|
|
281
|
-
}
|
|
282
|
-
function setLoggerProvider(config) {
|
|
283
|
-
const exportersType = Array.from(new Set((0, _opentelemetry_core.getStringListFromEnv)("OTEL_LOGS_EXPORTER")));
|
|
284
|
-
if (exportersType.length === 0) return;
|
|
285
|
-
if (exportersType.includes("none")) {
|
|
286
|
-
_opentelemetry_api.diag.info("OTEL_LOGS_EXPORTER contains \"none\". Logger provider will not be initialized.");
|
|
287
|
-
return;
|
|
288
|
-
}
|
|
289
|
-
config.logger_provider = require_utils.initializeDefaultLoggerProviderConfiguration();
|
|
290
|
-
const attributeValueLengthLimit = (0, _opentelemetry_core.getNumberFromEnv)("OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT");
|
|
291
|
-
const attributeCountLimit = (0, _opentelemetry_core.getNumberFromEnv)("OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT");
|
|
292
|
-
if (attributeValueLengthLimit !== void 0 || attributeCountLimit !== void 0) {
|
|
293
|
-
if (attributeValueLengthLimit !== void 0) config.logger_provider.limits.attribute_value_length_limit = attributeValueLengthLimit;
|
|
294
|
-
if (attributeCountLimit !== void 0) config.logger_provider.limits.attribute_count_limit = attributeCountLimit;
|
|
295
|
-
}
|
|
296
|
-
const batch = {
|
|
297
|
-
exporter: {},
|
|
298
|
-
schedule_delay: (0, _opentelemetry_core.getNumberFromEnv)("OTEL_BLRP_SCHEDULE_DELAY") ?? 1e3,
|
|
299
|
-
export_timeout: (0, _opentelemetry_core.getNumberFromEnv)("OTEL_BLRP_EXPORT_TIMEOUT") ?? 3e4,
|
|
300
|
-
max_queue_size: (0, _opentelemetry_core.getNumberFromEnv)("OTEL_BLRP_MAX_QUEUE_SIZE") ?? 2048,
|
|
301
|
-
max_export_batch_size: (0, _opentelemetry_core.getNumberFromEnv)("OTEL_BLRP_MAX_EXPORT_BATCH_SIZE") ?? 512
|
|
302
|
-
};
|
|
303
|
-
for (let i = 0; i < exportersType.length; i++) {
|
|
304
|
-
const exporterType = exportersType[i];
|
|
305
|
-
const batchInfo = {
|
|
306
|
-
...batch,
|
|
307
|
-
exporter: {}
|
|
308
|
-
};
|
|
309
|
-
if (exporterType === "console") config.logger_provider.processors.push({ simple: { exporter: { console: {} } } });
|
|
310
|
-
else {
|
|
311
|
-
const protocol = (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_LOGS_PROTOCOL") ?? (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_PROTOCOL") ?? "http/protobuf";
|
|
312
|
-
const certificateFile = (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE") ?? (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_CERTIFICATE");
|
|
313
|
-
const clientKeyFile = (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY") ?? (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_CLIENT_KEY");
|
|
314
|
-
const clientCertificateFile = (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE") ?? (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE");
|
|
315
|
-
const compression = (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_LOGS_COMPRESSION") ?? (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_COMPRESSION");
|
|
316
|
-
const timeout = (0, _opentelemetry_core.getNumberFromEnv)("OTEL_EXPORTER_OTLP_LOGS_TIMEOUT") ?? (0, _opentelemetry_core.getNumberFromEnv)("OTEL_EXPORTER_OTLP_TIMEOUT") ?? 1e4;
|
|
317
|
-
const headersList = (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_LOGS_HEADERS") ?? (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_HEADERS");
|
|
318
|
-
if (protocol === "grpc") {
|
|
319
|
-
const tls = require_utils.getGrpcTlsConfig(certificateFile, clientKeyFile, clientCertificateFile);
|
|
320
|
-
batchInfo.exporter = { otlp_grpc: {
|
|
321
|
-
endpoint: (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_LOGS_ENDPOINT") ?? (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_ENDPOINT") ?? "http://localhost:4317",
|
|
322
|
-
timeout,
|
|
323
|
-
...tls !== void 0 && { tls },
|
|
324
|
-
...compression !== void 0 && { compression },
|
|
325
|
-
...headersList !== void 0 && { headers_list: headersList }
|
|
326
|
-
} };
|
|
327
|
-
} else {
|
|
328
|
-
const tls = require_utils.getHttpTlsConfig(certificateFile, clientKeyFile, clientCertificateFile);
|
|
329
|
-
const encoding = protocol === "http/json" ? "json" : protocol === "http/protobuf" ? "protobuf" : void 0;
|
|
330
|
-
batchInfo.exporter = { otlp_http: {
|
|
331
|
-
endpoint: (0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_LOGS_ENDPOINT") ?? ((0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_ENDPOINT") ? `${(0, _opentelemetry_core.getStringFromEnv)("OTEL_EXPORTER_OTLP_ENDPOINT")}/v1/logs` : "http://localhost:4318/v1/logs"),
|
|
332
|
-
timeout,
|
|
333
|
-
...tls !== void 0 && { tls },
|
|
334
|
-
...compression !== void 0 && { compression },
|
|
335
|
-
...headersList !== void 0 && { headers_list: headersList },
|
|
336
|
-
...encoding !== void 0 && { encoding }
|
|
337
|
-
} };
|
|
338
|
-
}
|
|
339
|
-
const processor = { batch: batchInfo };
|
|
340
|
-
config.logger_provider.processors.push(processor);
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
//#endregion
|
|
345
|
-
exports.EnvironmentConfigFactory = EnvironmentConfigFactory;
|
|
346
|
-
exports.setAttributeLimits = setAttributeLimits;
|
|
347
|
-
exports.setLoggerProvider = setLoggerProvider;
|
|
348
|
-
exports.setMeterProvider = setMeterProvider;
|
|
349
|
-
exports.setPropagators = setPropagators;
|
|
350
|
-
exports.setResources = setResources;
|
|
351
|
-
exports.setSampler = setSampler;
|
|
352
|
-
exports.setTracerProvider = setTracerProvider;
|
|
353
|
-
|
|
354
|
-
//# sourceMappingURL=EnvironmentConfigFactory.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EnvironmentConfigFactory.cjs","names":["initializeDefaultConfiguration","readAllEnvVars","getStringFromEnv","getStringListFromEnv","getNumberFromEnv","initializeDefaultTracerProviderConfiguration","getGrpcTlsConfig","getHttpTlsConfig","initializeDefaultMeterProviderConfiguration","initializeDefaultLoggerProviderConfiguration"],"sources":["../src/EnvironmentConfigFactory.ts"],"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 (\n attributeValueLengthLimit !== undefined &&\n attributeValueLengthLimit >= 0\n ) {\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 !== undefined) {\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 !== undefined) {\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 !== undefined) {\n config.tracer_provider.limits!.attribute_count_limit = attributeCountLimit;\n }\n\n const eventCountLimit = getNumberFromEnv('OTEL_SPAN_EVENT_COUNT_LIMIT');\n if (eventCountLimit !== undefined) {\n config.tracer_provider.limits!.event_count_limit = eventCountLimit;\n }\n\n const linkCountLimit = getNumberFromEnv('OTEL_SPAN_LINK_COUNT_LIMIT');\n if (linkCountLimit !== undefined) {\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 !== undefined) {\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 !== undefined) {\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 (\n attributeValueLengthLimit !== undefined ||\n attributeCountLimit !== undefined\n ) {\n if (attributeValueLengthLimit !== undefined) {\n config.logger_provider.limits!.attribute_value_length_limit =\n attributeValueLengthLimit;\n }\n\n if (attributeCountLimit !== undefined) {\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"],"mappings":"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"}
|