@opentelemetry/configuration 0.222.0 → 0.300.0-development.0

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.
Files changed (83) hide show
  1. package/dist/ConfigFactory.cjs +12 -0
  2. package/dist/ConfigFactory.cjs.map +1 -0
  3. package/dist/ConfigFactory.d.cts +6 -0
  4. package/dist/ConfigFactory.d.cts.map +1 -0
  5. package/dist/ConfigFactory.d.mts +6 -0
  6. package/dist/ConfigFactory.d.mts.map +1 -0
  7. package/dist/ConfigFactory.mjs +12 -0
  8. package/dist/ConfigFactory.mjs.map +1 -0
  9. package/dist/EnvDefinition.cjs +34 -0
  10. package/dist/EnvDefinition.cjs.map +1 -0
  11. package/dist/EnvDefinition.mjs +33 -0
  12. package/dist/EnvDefinition.mjs.map +1 -0
  13. package/dist/EnvReader.cjs +37 -0
  14. package/dist/EnvReader.cjs.map +1 -0
  15. package/dist/EnvReader.mjs +36 -0
  16. package/dist/EnvReader.mjs.map +1 -0
  17. package/dist/EnvironmentConfigFactory.cjs +354 -0
  18. package/dist/EnvironmentConfigFactory.cjs.map +1 -0
  19. package/dist/EnvironmentConfigFactory.mjs +347 -0
  20. package/dist/EnvironmentConfigFactory.mjs.map +1 -0
  21. package/dist/FileConfigFactory.cjs +141 -0
  22. package/dist/FileConfigFactory.cjs.map +1 -0
  23. package/{build/src/FileConfigFactory.d.ts → dist/FileConfigFactory.d.cts} +8 -12
  24. package/dist/FileConfigFactory.d.cts.map +1 -0
  25. package/dist/FileConfigFactory.d.mts +28 -0
  26. package/dist/FileConfigFactory.d.mts.map +1 -0
  27. package/dist/FileConfigFactory.mjs +134 -0
  28. package/dist/FileConfigFactory.mjs.map +1 -0
  29. package/dist/IConfigFactory.d.cts +13 -0
  30. package/dist/IConfigFactory.d.cts.map +1 -0
  31. package/dist/IConfigFactory.d.mts +13 -0
  32. package/dist/IConfigFactory.d.mts.map +1 -0
  33. package/dist/_virtual/_rolldown/runtime.cjs +25 -0
  34. package/dist/_virtual/_rolldown/runtime.mjs +4 -0
  35. package/dist/generated/types.d.cts +1662 -0
  36. package/dist/generated/types.d.cts.map +1 -0
  37. package/dist/generated/types.d.mts +1662 -0
  38. package/dist/generated/types.d.mts.map +1 -0
  39. package/dist/generated/validator.cjs +14385 -0
  40. package/dist/generated/validator.cjs.map +1 -0
  41. package/dist/generated/validator.mjs +14381 -0
  42. package/dist/generated/validator.mjs.map +1 -0
  43. package/dist/index.cjs +7 -0
  44. package/dist/index.d.cts +5 -0
  45. package/dist/index.d.mts +5 -0
  46. package/dist/index.mjs +3 -0
  47. package/dist/utils.cjs +137 -0
  48. package/dist/utils.cjs.map +1 -0
  49. package/dist/utils.mjs +129 -0
  50. package/dist/utils.mjs.map +1 -0
  51. package/package.json +25 -16
  52. package/build/src/ConfigFactory.d.ts +0 -3
  53. package/build/src/ConfigFactory.js +0 -19
  54. package/build/src/ConfigFactory.js.map +0 -1
  55. package/build/src/EnvDefinition.d.ts +0 -15
  56. package/build/src/EnvDefinition.js +0 -36
  57. package/build/src/EnvDefinition.js.map +0 -1
  58. package/build/src/EnvReader.d.ts +0 -24
  59. package/build/src/EnvReader.js +0 -60
  60. package/build/src/EnvReader.js.map +0 -1
  61. package/build/src/EnvironmentConfigFactory.d.ts +0 -19
  62. package/build/src/EnvironmentConfigFactory.js +0 -540
  63. package/build/src/EnvironmentConfigFactory.js.map +0 -1
  64. package/build/src/FileConfigFactory.js +0 -177
  65. package/build/src/FileConfigFactory.js.map +0 -1
  66. package/build/src/IConfigFactory.d.ts +0 -10
  67. package/build/src/IConfigFactory.js +0 -7
  68. package/build/src/IConfigFactory.js.map +0 -1
  69. package/build/src/generated/types.d.ts +0 -1659
  70. package/build/src/generated/types.js +0 -13
  71. package/build/src/generated/types.js.map +0 -1
  72. package/build/src/generated/validator.d.ts +0 -17
  73. package/build/src/generated/validator.js +0 -8533
  74. package/build/src/generated/validator.js.map +0 -1
  75. package/build/src/index.d.ts +0 -5
  76. package/build/src/index.js +0 -14
  77. package/build/src/index.js.map +0 -1
  78. package/build/src/utils.d.ts +0 -20
  79. package/build/src/utils.js +0 -188
  80. package/build/src/utils.js.map +0 -1
  81. package/build/src/version.d.ts +0 -2
  82. package/build/src/version.js +0 -10
  83. package/build/src/version.js.map +0 -1
@@ -0,0 +1 @@
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 (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"],"mappings":"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"}
@@ -0,0 +1,347 @@
1
+ import { getGrpcTlsConfig, getHttpTlsConfig, initializeDefaultConfiguration, initializeDefaultLoggerProviderConfiguration, initializeDefaultMeterProviderConfiguration, initializeDefaultTracerProviderConfiguration } from "./utils.mjs";
2
+ import "./EnvDefinition.mjs";
3
+ import { readAllEnvVars } from "./EnvReader.mjs";
4
+ import { getNumberFromEnv, getStringFromEnv, getStringListFromEnv } from "@opentelemetry/core";
5
+ import { diag } from "@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 = initializeDefaultConfiguration();
14
+ const envValues = readAllEnvVars();
15
+ this._config.disabled = envValues.OTEL_SDK_DISABLED;
16
+ const logLevelString = 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
+ 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 = getStringFromEnv("OTEL_RESOURCE_ATTRIBUTES");
56
+ const list = resourceAttrList ? resourceAttrList.split(",").map((s) => s.trim()).filter((s) => s) : [];
57
+ const serviceName = 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 = 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 = getNumberFromEnv("OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT");
93
+ if (attributeValueLengthLimit && 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 = getNumberFromEnv("OTEL_ATTRIBUTE_COUNT_LIMIT");
98
+ if (attributeCountLimit) {
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 = 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(getStringListFromEnv("OTEL_TRACES_EXPORTER")));
141
+ if (exportersType.length === 0) return;
142
+ if (exportersType.includes("none")) {
143
+ diag.info("OTEL_TRACES_EXPORTER contains \"none\". Tracer provider will not be initialized.");
144
+ return;
145
+ }
146
+ config.tracer_provider = initializeDefaultTracerProviderConfiguration();
147
+ setSampler(config, env);
148
+ const attributeValueLengthLimit = getNumberFromEnv("OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT");
149
+ if (attributeValueLengthLimit) config.tracer_provider.limits.attribute_value_length_limit = attributeValueLengthLimit;
150
+ const attributeCountLimit = getNumberFromEnv("OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT");
151
+ if (attributeCountLimit) config.tracer_provider.limits.attribute_count_limit = attributeCountLimit;
152
+ const eventCountLimit = getNumberFromEnv("OTEL_SPAN_EVENT_COUNT_LIMIT");
153
+ if (eventCountLimit) config.tracer_provider.limits.event_count_limit = eventCountLimit;
154
+ const linkCountLimit = getNumberFromEnv("OTEL_SPAN_LINK_COUNT_LIMIT");
155
+ if (linkCountLimit) config.tracer_provider.limits.link_count_limit = linkCountLimit;
156
+ const eventAttributeCountLimit = getNumberFromEnv("OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT");
157
+ if (eventAttributeCountLimit) config.tracer_provider.limits.event_attribute_count_limit = eventAttributeCountLimit;
158
+ const linkAttributeCountLimit = getNumberFromEnv("OTEL_LINK_ATTRIBUTE_COUNT_LIMIT");
159
+ if (linkAttributeCountLimit) config.tracer_provider.limits.link_attribute_count_limit = linkAttributeCountLimit;
160
+ const batch = {
161
+ exporter: {},
162
+ schedule_delay: getNumberFromEnv("OTEL_BSP_SCHEDULE_DELAY") ?? 5e3,
163
+ export_timeout: getNumberFromEnv("OTEL_BSP_EXPORT_TIMEOUT") ?? 3e4,
164
+ max_queue_size: getNumberFromEnv("OTEL_BSP_MAX_QUEUE_SIZE") ?? 2048,
165
+ max_export_batch_size: 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 = getStringFromEnv("OTEL_EXPORTER_OTLP_TRACES_PROTOCOL") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_PROTOCOL") ?? "http/protobuf";
176
+ const certificateFile = getStringFromEnv("OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_CERTIFICATE");
177
+ const clientKeyFile = getStringFromEnv("OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_CLIENT_KEY");
178
+ const clientCertificateFile = getStringFromEnv("OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE");
179
+ const compression = getStringFromEnv("OTEL_EXPORTER_OTLP_TRACES_COMPRESSION") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_COMPRESSION");
180
+ const timeout = getNumberFromEnv("OTEL_EXPORTER_OTLP_TRACES_TIMEOUT") ?? getNumberFromEnv("OTEL_EXPORTER_OTLP_TIMEOUT") ?? 1e4;
181
+ const headersList = getStringFromEnv("OTEL_EXPORTER_OTLP_TRACES_HEADERS") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_HEADERS");
182
+ if (protocol === "grpc") {
183
+ const tls = getGrpcTlsConfig(certificateFile, clientKeyFile, clientCertificateFile);
184
+ batchInfo.exporter = { otlp_grpc: {
185
+ endpoint: getStringFromEnv("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT") ?? 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 = getHttpTlsConfig(certificateFile, clientKeyFile, clientCertificateFile);
193
+ const encoding = protocol === "http/json" ? "json" : protocol === "http/protobuf" ? "protobuf" : void 0;
194
+ batchInfo.exporter = { otlp_http: {
195
+ endpoint: getStringFromEnv("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT") ?? (getStringFromEnv("OTEL_EXPORTER_OTLP_ENDPOINT") ? `${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(getStringListFromEnv("OTEL_METRICS_EXPORTER")));
210
+ if (exportersType.length === 0) return;
211
+ if (exportersType.includes("none")) {
212
+ diag.info("OTEL_METRICS_EXPORTER contains \"none\". Meter provider will not be initialized.");
213
+ return;
214
+ }
215
+ config.meter_provider = initializeDefaultMeterProviderConfiguration();
216
+ const interval = 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: getStringFromEnv("OTEL_EXPORTER_PROMETHEUS_HOST") ?? "localhost",
222
+ port: 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: getNumberFromEnv("OTEL_METRIC_EXPORT_TIMEOUT") ?? 3e4,
232
+ exporter: {}
233
+ };
234
+ if (exporterType === "console") readerPeriodicInfo.exporter = { console: {} };
235
+ else {
236
+ const protocol = getStringFromEnv("OTEL_EXPORTER_OTLP_METRICS_PROTOCOL") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_PROTOCOL") ?? "http/protobuf";
237
+ const certificateFile = getStringFromEnv("OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_CERTIFICATE");
238
+ const clientKeyFile = getStringFromEnv("OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_CLIENT_KEY");
239
+ const clientCertificateFile = getStringFromEnv("OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE");
240
+ const compression = getStringFromEnv("OTEL_EXPORTER_OTLP_METRICS_COMPRESSION") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_COMPRESSION");
241
+ const timeoutExporter = getNumberFromEnv("OTEL_EXPORTER_OTLP_METRICS_TIMEOUT") ?? getNumberFromEnv("OTEL_EXPORTER_OTLP_TIMEOUT") ?? 1e4;
242
+ const headersList = getStringFromEnv("OTEL_EXPORTER_OTLP_METRICS_HEADERS") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_HEADERS");
243
+ const rawTemporality = 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 = 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 = getGrpcTlsConfig(certificateFile, clientKeyFile, clientCertificateFile);
253
+ readerPeriodicInfo.exporter = { otlp_grpc: {
254
+ endpoint: getStringFromEnv("OTEL_EXPORTER_OTLP_METRICS_ENDPOINT") ?? 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 = getHttpTlsConfig(certificateFile, clientKeyFile, clientCertificateFile);
264
+ const encoding = protocol === "http/json" ? "json" : protocol === "http/protobuf" ? "protobuf" : void 0;
265
+ readerPeriodicInfo.exporter = { otlp_http: {
266
+ endpoint: getStringFromEnv("OTEL_EXPORTER_OTLP_METRICS_ENDPOINT") ?? (getStringFromEnv("OTEL_EXPORTER_OTLP_ENDPOINT") ? `${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 = 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(getStringListFromEnv("OTEL_LOGS_EXPORTER")));
284
+ if (exportersType.length === 0) return;
285
+ if (exportersType.includes("none")) {
286
+ diag.info("OTEL_LOGS_EXPORTER contains \"none\". Logger provider will not be initialized.");
287
+ return;
288
+ }
289
+ config.logger_provider = initializeDefaultLoggerProviderConfiguration();
290
+ const attributeValueLengthLimit = getNumberFromEnv("OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT");
291
+ const attributeCountLimit = getNumberFromEnv("OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT");
292
+ if (attributeValueLengthLimit || attributeCountLimit) {
293
+ if (attributeValueLengthLimit) config.logger_provider.limits.attribute_value_length_limit = attributeValueLengthLimit;
294
+ if (attributeCountLimit) config.logger_provider.limits.attribute_count_limit = attributeCountLimit;
295
+ }
296
+ const batch = {
297
+ exporter: {},
298
+ schedule_delay: getNumberFromEnv("OTEL_BLRP_SCHEDULE_DELAY") ?? 1e3,
299
+ export_timeout: getNumberFromEnv("OTEL_BLRP_EXPORT_TIMEOUT") ?? 3e4,
300
+ max_queue_size: getNumberFromEnv("OTEL_BLRP_MAX_QUEUE_SIZE") ?? 2048,
301
+ max_export_batch_size: 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 = getStringFromEnv("OTEL_EXPORTER_OTLP_LOGS_PROTOCOL") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_PROTOCOL") ?? "http/protobuf";
312
+ const certificateFile = getStringFromEnv("OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_CERTIFICATE");
313
+ const clientKeyFile = getStringFromEnv("OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_CLIENT_KEY");
314
+ const clientCertificateFile = getStringFromEnv("OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE");
315
+ const compression = getStringFromEnv("OTEL_EXPORTER_OTLP_LOGS_COMPRESSION") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_COMPRESSION");
316
+ const timeout = getNumberFromEnv("OTEL_EXPORTER_OTLP_LOGS_TIMEOUT") ?? getNumberFromEnv("OTEL_EXPORTER_OTLP_TIMEOUT") ?? 1e4;
317
+ const headersList = getStringFromEnv("OTEL_EXPORTER_OTLP_LOGS_HEADERS") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_HEADERS");
318
+ if (protocol === "grpc") {
319
+ const tls = getGrpcTlsConfig(certificateFile, clientKeyFile, clientCertificateFile);
320
+ batchInfo.exporter = { otlp_grpc: {
321
+ endpoint: getStringFromEnv("OTEL_EXPORTER_OTLP_LOGS_ENDPOINT") ?? 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 = getHttpTlsConfig(certificateFile, clientKeyFile, clientCertificateFile);
329
+ const encoding = protocol === "http/json" ? "json" : protocol === "http/protobuf" ? "protobuf" : void 0;
330
+ batchInfo.exporter = { otlp_http: {
331
+ endpoint: getStringFromEnv("OTEL_EXPORTER_OTLP_LOGS_ENDPOINT") ?? (getStringFromEnv("OTEL_EXPORTER_OTLP_ENDPOINT") ? `${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
+ export { EnvironmentConfigFactory, setAttributeLimits, setLoggerProvider, setMeterProvider, setPropagators, setResources, setSampler, setTracerProvider };
346
+
347
+ //# sourceMappingURL=EnvironmentConfigFactory.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvironmentConfigFactory.mjs","names":[],"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 (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"],"mappings":"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"}