UNPKG

7.73 kBJavaScriptView Raw
1"use strict";
2/*
3 * Copyright The OpenTelemetry Authors
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * https://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17Object.defineProperty(exports, "__esModule", { value: true });
18exports.getEnvWithoutDefaults = exports.parseEnvironment = exports.DEFAULT_ENVIRONMENT = exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT = exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = void 0;
19const api_1 = require("@opentelemetry/api");
20const sampling_1 = require("./sampling");
21const globalThis_1 = require("../platform/browser/globalThis");
22const DEFAULT_LIST_SEPARATOR = ',';
23/**
24 * Environment interface to define all names
25 */
26const ENVIRONMENT_NUMBERS_KEYS = [
27 'OTEL_BSP_EXPORT_TIMEOUT',
28 'OTEL_BSP_MAX_EXPORT_BATCH_SIZE',
29 'OTEL_BSP_MAX_QUEUE_SIZE',
30 'OTEL_BSP_SCHEDULE_DELAY',
31 'OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT',
32 'OTEL_ATTRIBUTE_COUNT_LIMIT',
33 'OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT',
34 'OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT',
35 'OTEL_SPAN_EVENT_COUNT_LIMIT',
36 'OTEL_SPAN_LINK_COUNT_LIMIT',
37 'OTEL_EXPORTER_OTLP_TIMEOUT',
38 'OTEL_EXPORTER_OTLP_TRACES_TIMEOUT',
39 'OTEL_EXPORTER_OTLP_METRICS_TIMEOUT',
40 'OTEL_EXPORTER_JAEGER_AGENT_PORT',
41];
42function isEnvVarANumber(key) {
43 return (ENVIRONMENT_NUMBERS_KEYS.indexOf(key) > -1);
44}
45const ENVIRONMENT_LISTS_KEYS = [
46 'OTEL_NO_PATCH_MODULES',
47 'OTEL_PROPAGATORS',
48];
49function isEnvVarAList(key) {
50 return ENVIRONMENT_LISTS_KEYS.indexOf(key) > -1;
51}
52exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = Infinity;
53exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT = 128;
54/**
55 * Default environment variables
56 */
57exports.DEFAULT_ENVIRONMENT = {
58 CONTAINER_NAME: '',
59 ECS_CONTAINER_METADATA_URI_V4: '',
60 ECS_CONTAINER_METADATA_URI: '',
61 HOSTNAME: '',
62 KUBERNETES_SERVICE_HOST: '',
63 NAMESPACE: '',
64 OTEL_BSP_EXPORT_TIMEOUT: 30000,
65 OTEL_BSP_MAX_EXPORT_BATCH_SIZE: 512,
66 OTEL_BSP_MAX_QUEUE_SIZE: 2048,
67 OTEL_BSP_SCHEDULE_DELAY: 5000,
68 OTEL_EXPORTER_JAEGER_AGENT_HOST: '',
69 OTEL_EXPORTER_JAEGER_AGENT_PORT: 6832,
70 OTEL_EXPORTER_JAEGER_ENDPOINT: '',
71 OTEL_EXPORTER_JAEGER_PASSWORD: '',
72 OTEL_EXPORTER_JAEGER_USER: '',
73 OTEL_EXPORTER_OTLP_ENDPOINT: '',
74 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: '',
75 OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: '',
76 OTEL_EXPORTER_OTLP_HEADERS: '',
77 OTEL_EXPORTER_OTLP_TRACES_HEADERS: '',
78 OTEL_EXPORTER_OTLP_METRICS_HEADERS: '',
79 OTEL_EXPORTER_OTLP_TIMEOUT: 10000,
80 OTEL_EXPORTER_OTLP_TRACES_TIMEOUT: 10000,
81 OTEL_EXPORTER_OTLP_METRICS_TIMEOUT: 10000,
82 OTEL_EXPORTER_ZIPKIN_ENDPOINT: 'http://localhost:9411/api/v2/spans',
83 OTEL_LOG_LEVEL: api_1.DiagLogLevel.INFO,
84 OTEL_NO_PATCH_MODULES: [],
85 OTEL_PROPAGATORS: ['tracecontext', 'baggage'],
86 OTEL_RESOURCE_ATTRIBUTES: '',
87 OTEL_SERVICE_NAME: '',
88 OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT: exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT,
89 OTEL_ATTRIBUTE_COUNT_LIMIT: exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT,
90 OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT: exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT,
91 OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT: exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT,
92 OTEL_SPAN_EVENT_COUNT_LIMIT: 128,
93 OTEL_SPAN_LINK_COUNT_LIMIT: 128,
94 OTEL_TRACES_EXPORTER: 'otlp',
95 OTEL_TRACES_SAMPLER: sampling_1.TracesSamplerValues.ParentBasedAlwaysOn,
96 OTEL_TRACES_SAMPLER_ARG: '',
97 OTEL_EXPORTER_OTLP_INSECURE: '',
98 OTEL_EXPORTER_OTLP_TRACES_INSECURE: '',
99 OTEL_EXPORTER_OTLP_METRICS_INSECURE: '',
100 OTEL_EXPORTER_OTLP_CERTIFICATE: '',
101 OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE: '',
102 OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE: '',
103 OTEL_EXPORTER_OTLP_COMPRESSION: '',
104 OTEL_EXPORTER_OTLP_TRACES_COMPRESSION: '',
105 OTEL_EXPORTER_OTLP_METRICS_COMPRESSION: '',
106 OTEL_EXPORTER_OTLP_CLIENT_KEY: '',
107 OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY: '',
108 OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY: '',
109 OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE: '',
110 OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE: '',
111 OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE: '',
112 OTEL_EXPORTER_OTLP_PROTOCOL: 'http/protobuf',
113 OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: 'http/protobuf',
114 OTEL_EXPORTER_OTLP_METRICS_PROTOCOL: 'http/protobuf',
115 OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: 'cumulative'
116};
117/**
118 * Parses a variable as number with number validation
119 * @param name
120 * @param environment
121 * @param values
122 * @param min
123 * @param max
124 */
125function parseNumber(name, environment, values, min = -Infinity, max = Infinity) {
126 if (typeof values[name] !== 'undefined') {
127 const value = Number(values[name]);
128 if (!isNaN(value)) {
129 if (value < min) {
130 environment[name] = min;
131 }
132 else if (value > max) {
133 environment[name] = max;
134 }
135 else {
136 environment[name] = value;
137 }
138 }
139 }
140}
141/**
142 * Parses list-like strings from input into output.
143 * @param name
144 * @param environment
145 * @param values
146 * @param separator
147 */
148function parseStringList(name, output, input, separator = DEFAULT_LIST_SEPARATOR) {
149 const givenValue = input[name];
150 if (typeof givenValue === 'string') {
151 output[name] = givenValue.split(separator).map(v => v.trim());
152 }
153}
154// The support string -> DiagLogLevel mappings
155const logLevelMap = {
156 ALL: api_1.DiagLogLevel.ALL,
157 VERBOSE: api_1.DiagLogLevel.VERBOSE,
158 DEBUG: api_1.DiagLogLevel.DEBUG,
159 INFO: api_1.DiagLogLevel.INFO,
160 WARN: api_1.DiagLogLevel.WARN,
161 ERROR: api_1.DiagLogLevel.ERROR,
162 NONE: api_1.DiagLogLevel.NONE,
163};
164/**
165 * Environmentally sets log level if valid log level string is provided
166 * @param key
167 * @param environment
168 * @param values
169 */
170function setLogLevelFromEnv(key, environment, values) {
171 const value = values[key];
172 if (typeof value === 'string') {
173 const theLevel = logLevelMap[value.toUpperCase()];
174 if (theLevel != null) {
175 environment[key] = theLevel;
176 }
177 }
178}
179/**
180 * Parses environment values
181 * @param values
182 */
183function parseEnvironment(values) {
184 const environment = {};
185 for (const env in exports.DEFAULT_ENVIRONMENT) {
186 const key = env;
187 switch (key) {
188 case 'OTEL_LOG_LEVEL':
189 setLogLevelFromEnv(key, environment, values);
190 break;
191 default:
192 if (isEnvVarANumber(key)) {
193 parseNumber(key, environment, values);
194 }
195 else if (isEnvVarAList(key)) {
196 parseStringList(key, environment, values);
197 }
198 else {
199 const value = values[key];
200 if (typeof value !== 'undefined' && value !== null) {
201 environment[key] = String(value);
202 }
203 }
204 }
205 }
206 return environment;
207}
208exports.parseEnvironment = parseEnvironment;
209/**
210 * Get environment in node or browser without
211 * populating default values.
212 */
213function getEnvWithoutDefaults() {
214 return typeof process !== 'undefined' ?
215 parseEnvironment(process.env) :
216 parseEnvironment(globalThis_1._globalThis);
217}
218exports.getEnvWithoutDefaults = getEnvWithoutDefaults;
219//# sourceMappingURL=environment.js.map
\No newline at end of file