UNPKG

6.29 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.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 DEFAULT_LIST_SEPARATOR = ',';
22/**
23 * Environment interface to define all names
24 */
25const ENVIRONMENT_NUMBERS_KEYS = [
26 'OTEL_BSP_EXPORT_TIMEOUT',
27 'OTEL_BSP_MAX_EXPORT_BATCH_SIZE',
28 'OTEL_BSP_MAX_QUEUE_SIZE',
29 'OTEL_BSP_SCHEDULE_DELAY',
30 'OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT',
31 'OTEL_ATTRIBUTE_COUNT_LIMIT',
32 'OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT',
33 'OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT',
34 'OTEL_SPAN_EVENT_COUNT_LIMIT',
35 'OTEL_SPAN_LINK_COUNT_LIMIT',
36 'OTEL_EXPORTER_JAEGER_AGENT_PORT',
37];
38function isEnvVarANumber(key) {
39 return (ENVIRONMENT_NUMBERS_KEYS.indexOf(key) > -1);
40}
41const ENVIRONMENT_LISTS_KEYS = [
42 'OTEL_NO_PATCH_MODULES',
43 'OTEL_PROPAGATORS',
44];
45function isEnvVarAList(key) {
46 return ENVIRONMENT_LISTS_KEYS.indexOf(key) > -1;
47}
48exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = Infinity;
49exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT = 128;
50/**
51 * Default environment variables
52 */
53exports.DEFAULT_ENVIRONMENT = {
54 CONTAINER_NAME: '',
55 ECS_CONTAINER_METADATA_URI_V4: '',
56 ECS_CONTAINER_METADATA_URI: '',
57 HOSTNAME: '',
58 KUBERNETES_SERVICE_HOST: '',
59 NAMESPACE: '',
60 OTEL_BSP_EXPORT_TIMEOUT: 30000,
61 OTEL_BSP_MAX_EXPORT_BATCH_SIZE: 512,
62 OTEL_BSP_MAX_QUEUE_SIZE: 2048,
63 OTEL_BSP_SCHEDULE_DELAY: 5000,
64 OTEL_EXPORTER_JAEGER_AGENT_HOST: '',
65 OTEL_EXPORTER_JAEGER_AGENT_PORT: 6832,
66 OTEL_EXPORTER_JAEGER_ENDPOINT: '',
67 OTEL_EXPORTER_JAEGER_PASSWORD: '',
68 OTEL_EXPORTER_JAEGER_USER: '',
69 OTEL_EXPORTER_OTLP_ENDPOINT: '',
70 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: '',
71 OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: '',
72 OTEL_EXPORTER_OTLP_HEADERS: '',
73 OTEL_EXPORTER_OTLP_TRACES_HEADERS: '',
74 OTEL_EXPORTER_OTLP_METRICS_HEADERS: '',
75 OTEL_EXPORTER_ZIPKIN_ENDPOINT: 'http://localhost:9411/api/v2/spans',
76 OTEL_LOG_LEVEL: api_1.DiagLogLevel.INFO,
77 OTEL_NO_PATCH_MODULES: [],
78 OTEL_PROPAGATORS: ['tracecontext', 'baggage'],
79 OTEL_RESOURCE_ATTRIBUTES: '',
80 OTEL_SERVICE_NAME: '',
81 OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT: exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT,
82 OTEL_ATTRIBUTE_COUNT_LIMIT: exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT,
83 OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT: exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT,
84 OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT: exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT,
85 OTEL_SPAN_EVENT_COUNT_LIMIT: 128,
86 OTEL_SPAN_LINK_COUNT_LIMIT: 128,
87 OTEL_TRACES_EXPORTER: 'none',
88 OTEL_TRACES_SAMPLER: sampling_1.TracesSamplerValues.ParentBasedAlwaysOn,
89 OTEL_TRACES_SAMPLER_ARG: '',
90 OTEL_EXPORTER_OTLP_COMPRESSION: '',
91 OTEL_EXPORTER_OTLP_TRACES_COMPRESSION: '',
92 OTEL_EXPORTER_OTLP_METRICS_COMPRESSION: ''
93};
94/**
95 * Parses a variable as number with number validation
96 * @param name
97 * @param environment
98 * @param values
99 * @param min
100 * @param max
101 */
102function parseNumber(name, environment, values, min = -Infinity, max = Infinity) {
103 if (typeof values[name] !== 'undefined') {
104 const value = Number(values[name]);
105 if (!isNaN(value)) {
106 if (value < min) {
107 environment[name] = min;
108 }
109 else if (value > max) {
110 environment[name] = max;
111 }
112 else {
113 environment[name] = value;
114 }
115 }
116 }
117}
118/**
119 * Parses list-like strings from input into output.
120 * @param name
121 * @param environment
122 * @param values
123 * @param separator
124 */
125function parseStringList(name, output, input, separator = DEFAULT_LIST_SEPARATOR) {
126 const givenValue = input[name];
127 if (typeof givenValue === 'string') {
128 output[name] = givenValue.split(separator).map(v => v.trim());
129 }
130}
131// The support string -> DiagLogLevel mappings
132const logLevelMap = {
133 ALL: api_1.DiagLogLevel.ALL,
134 VERBOSE: api_1.DiagLogLevel.VERBOSE,
135 DEBUG: api_1.DiagLogLevel.DEBUG,
136 INFO: api_1.DiagLogLevel.INFO,
137 WARN: api_1.DiagLogLevel.WARN,
138 ERROR: api_1.DiagLogLevel.ERROR,
139 NONE: api_1.DiagLogLevel.NONE,
140};
141/**
142 * Environmentally sets log level if valid log level string is provided
143 * @param key
144 * @param environment
145 * @param values
146 */
147function setLogLevelFromEnv(key, environment, values) {
148 const value = values[key];
149 if (typeof value === 'string') {
150 const theLevel = logLevelMap[value.toUpperCase()];
151 if (theLevel != null) {
152 environment[key] = theLevel;
153 }
154 }
155}
156/**
157 * Parses environment values
158 * @param values
159 */
160function parseEnvironment(values) {
161 const environment = {};
162 for (const env in exports.DEFAULT_ENVIRONMENT) {
163 const key = env;
164 switch (key) {
165 case 'OTEL_LOG_LEVEL':
166 setLogLevelFromEnv(key, environment, values);
167 break;
168 default:
169 if (isEnvVarANumber(key)) {
170 parseNumber(key, environment, values);
171 }
172 else if (isEnvVarAList(key)) {
173 parseStringList(key, environment, values);
174 }
175 else {
176 const value = values[key];
177 if (typeof value !== 'undefined' && value !== null) {
178 environment[key] = String(value);
179 }
180 }
181 }
182 }
183 return environment;
184}
185exports.parseEnvironment = parseEnvironment;
186//# sourceMappingURL=environment.js.map
\No newline at end of file