UNPKG

@opentelemetry/core

Version:

OpenTelemetry Core provides constants and utilities shared by all OpenTelemetry SDK packages.

258 lines 9.5 kB
"use strict"; /* * Copyright The OpenTelemetry Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.parseEnvironment = exports.DEFAULT_ENVIRONMENT = exports.DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT = exports.DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT = exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT = exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = void 0; const api_1 = require("@opentelemetry/api"); const sampling_1 = require("./sampling"); const DEFAULT_LIST_SEPARATOR = ','; /** * Environment interface to define all names */ const ENVIRONMENT_BOOLEAN_KEYS = ['OTEL_SDK_DISABLED']; function isEnvVarABoolean(key) { return (ENVIRONMENT_BOOLEAN_KEYS.indexOf(key) > -1); } const ENVIRONMENT_NUMBERS_KEYS = [ 'OTEL_BSP_EXPORT_TIMEOUT', 'OTEL_BSP_MAX_EXPORT_BATCH_SIZE', 'OTEL_BSP_MAX_QUEUE_SIZE', 'OTEL_BSP_SCHEDULE_DELAY', 'OTEL_BLRP_EXPORT_TIMEOUT', 'OTEL_BLRP_MAX_EXPORT_BATCH_SIZE', 'OTEL_BLRP_MAX_QUEUE_SIZE', 'OTEL_BLRP_SCHEDULE_DELAY', 'OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT', 'OTEL_ATTRIBUTE_COUNT_LIMIT', 'OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT', 'OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT', 'OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT', 'OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT', 'OTEL_SPAN_EVENT_COUNT_LIMIT', 'OTEL_SPAN_LINK_COUNT_LIMIT', 'OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT', 'OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT', 'OTEL_EXPORTER_OTLP_TIMEOUT', 'OTEL_EXPORTER_OTLP_TRACES_TIMEOUT', 'OTEL_EXPORTER_OTLP_METRICS_TIMEOUT', 'OTEL_EXPORTER_OTLP_LOGS_TIMEOUT', 'OTEL_EXPORTER_JAEGER_AGENT_PORT', ]; function isEnvVarANumber(key) { return (ENVIRONMENT_NUMBERS_KEYS.indexOf(key) > -1); } const ENVIRONMENT_LISTS_KEYS = [ 'OTEL_NO_PATCH_MODULES', 'OTEL_PROPAGATORS', ]; function isEnvVarAList(key) { return ENVIRONMENT_LISTS_KEYS.indexOf(key) > -1; } exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = Infinity; exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT = 128; exports.DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT = 128; exports.DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT = 128; /** * Default environment variables */ exports.DEFAULT_ENVIRONMENT = { OTEL_SDK_DISABLED: false, CONTAINER_NAME: '', ECS_CONTAINER_METADATA_URI_V4: '', ECS_CONTAINER_METADATA_URI: '', HOSTNAME: '', KUBERNETES_SERVICE_HOST: '', NAMESPACE: '', OTEL_BSP_EXPORT_TIMEOUT: 30000, OTEL_BSP_MAX_EXPORT_BATCH_SIZE: 512, OTEL_BSP_MAX_QUEUE_SIZE: 2048, OTEL_BSP_SCHEDULE_DELAY: 5000, OTEL_BLRP_EXPORT_TIMEOUT: 30000, OTEL_BLRP_MAX_EXPORT_BATCH_SIZE: 512, OTEL_BLRP_MAX_QUEUE_SIZE: 2048, OTEL_BLRP_SCHEDULE_DELAY: 5000, OTEL_EXPORTER_JAEGER_AGENT_HOST: '', OTEL_EXPORTER_JAEGER_AGENT_PORT: 6832, OTEL_EXPORTER_JAEGER_ENDPOINT: '', OTEL_EXPORTER_JAEGER_PASSWORD: '', OTEL_EXPORTER_JAEGER_USER: '', OTEL_EXPORTER_OTLP_ENDPOINT: '', OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: '', OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: '', OTEL_EXPORTER_OTLP_LOGS_ENDPOINT: '', OTEL_EXPORTER_OTLP_HEADERS: '', OTEL_EXPORTER_OTLP_TRACES_HEADERS: '', OTEL_EXPORTER_OTLP_METRICS_HEADERS: '', OTEL_EXPORTER_OTLP_LOGS_HEADERS: '', OTEL_EXPORTER_OTLP_TIMEOUT: 10000, OTEL_EXPORTER_OTLP_TRACES_TIMEOUT: 10000, OTEL_EXPORTER_OTLP_METRICS_TIMEOUT: 10000, OTEL_EXPORTER_OTLP_LOGS_TIMEOUT: 10000, OTEL_EXPORTER_ZIPKIN_ENDPOINT: 'http://localhost:9411/api/v2/spans', OTEL_LOG_LEVEL: api_1.DiagLogLevel.INFO, OTEL_NO_PATCH_MODULES: [], OTEL_PROPAGATORS: ['tracecontext', 'baggage'], OTEL_RESOURCE_ATTRIBUTES: '', OTEL_SERVICE_NAME: '', OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT: exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT, OTEL_ATTRIBUTE_COUNT_LIMIT: exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT, OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT: exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT, OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT: exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT, OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT: exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT, OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT: exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT, OTEL_SPAN_EVENT_COUNT_LIMIT: 128, OTEL_SPAN_LINK_COUNT_LIMIT: 128, OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT: exports.DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT, OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT: exports.DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT, OTEL_TRACES_EXPORTER: '', OTEL_TRACES_SAMPLER: sampling_1.TracesSamplerValues.ParentBasedAlwaysOn, OTEL_TRACES_SAMPLER_ARG: '', OTEL_LOGS_EXPORTER: '', OTEL_EXPORTER_OTLP_INSECURE: '', OTEL_EXPORTER_OTLP_TRACES_INSECURE: '', OTEL_EXPORTER_OTLP_METRICS_INSECURE: '', OTEL_EXPORTER_OTLP_LOGS_INSECURE: '', OTEL_EXPORTER_OTLP_CERTIFICATE: '', OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE: '', OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE: '', OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE: '', OTEL_EXPORTER_OTLP_COMPRESSION: '', OTEL_EXPORTER_OTLP_TRACES_COMPRESSION: '', OTEL_EXPORTER_OTLP_METRICS_COMPRESSION: '', OTEL_EXPORTER_OTLP_LOGS_COMPRESSION: '', OTEL_EXPORTER_OTLP_CLIENT_KEY: '', OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY: '', OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY: '', OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY: '', OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE: '', OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE: '', OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE: '', OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE: '', OTEL_EXPORTER_OTLP_PROTOCOL: 'http/protobuf', OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: 'http/protobuf', OTEL_EXPORTER_OTLP_METRICS_PROTOCOL: 'http/protobuf', OTEL_EXPORTER_OTLP_LOGS_PROTOCOL: 'http/protobuf', OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: 'cumulative', }; /** * @param key * @param environment * @param values */ function parseBoolean(key, environment, values) { if (typeof values[key] === 'undefined') { return; } const value = String(values[key]); // support case-insensitive "true" environment[key] = value.toLowerCase() === 'true'; } /** * Parses a variable as number with number validation * @param name * @param environment * @param values * @param min * @param max */ function parseNumber(name, environment, values, min = -Infinity, max = Infinity) { if (typeof values[name] !== 'undefined') { const value = Number(values[name]); if (!isNaN(value)) { if (value < min) { environment[name] = min; } else if (value > max) { environment[name] = max; } else { environment[name] = value; } } } } /** * Parses list-like strings from input into output. * @param name * @param environment * @param values * @param separator */ function parseStringList(name, output, input, separator = DEFAULT_LIST_SEPARATOR) { const givenValue = input[name]; if (typeof givenValue === 'string') { output[name] = givenValue.split(separator).map(v => v.trim()); } } // The support string -> DiagLogLevel mappings const logLevelMap = { ALL: api_1.DiagLogLevel.ALL, VERBOSE: api_1.DiagLogLevel.VERBOSE, DEBUG: api_1.DiagLogLevel.DEBUG, INFO: api_1.DiagLogLevel.INFO, WARN: api_1.DiagLogLevel.WARN, ERROR: api_1.DiagLogLevel.ERROR, NONE: api_1.DiagLogLevel.NONE, }; /** * Environmentally sets log level if valid log level string is provided * @param key * @param environment * @param values */ function setLogLevelFromEnv(key, environment, values) { const value = values[key]; if (typeof value === 'string') { const theLevel = logLevelMap[value.toUpperCase()]; if (theLevel != null) { environment[key] = theLevel; } } } /** * Parses environment values * @param values */ function parseEnvironment(values) { const environment = {}; for (const env in exports.DEFAULT_ENVIRONMENT) { const key = env; switch (key) { case 'OTEL_LOG_LEVEL': setLogLevelFromEnv(key, environment, values); break; default: if (isEnvVarABoolean(key)) { parseBoolean(key, environment, values); } else if (isEnvVarANumber(key)) { parseNumber(key, environment, values); } else if (isEnvVarAList(key)) { parseStringList(key, environment, values); } else { const value = values[key]; if (typeof value !== 'undefined' && value !== null) { environment[key] = String(value); } } } } return environment; } exports.parseEnvironment = parseEnvironment; //# sourceMappingURL=environment.js.map