@opentelemetry/sdk-node 0.219.0 → 0.220.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.
@@ -5,14 +5,14 @@ const configuration_1 = require("@opentelemetry/configuration");
5
5
  const api_1 = require("@opentelemetry/api");
6
6
  const utils_1 = require("./utils");
7
7
  const instrumentation_1 = require("@opentelemetry/instrumentation");
8
- const sdk_logs_1 = require("@opentelemetry/sdk-logs");
9
8
  const sdk_metrics_1 = require("@opentelemetry/sdk-metrics");
9
+ const sdk_trace_1 = require("@opentelemetry/sdk-trace");
10
10
  const api_logs_1 = require("@opentelemetry/api-logs");
11
11
  const resources_1 = require("@opentelemetry/resources");
12
12
  const context_async_hooks_1 = require("@opentelemetry/context-async-hooks");
13
13
  const semconv_1 = require("./semconv");
14
- const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
15
14
  const diag_1 = require("./diag");
15
+ const create_from_config_1 = require("./create-from-config");
16
16
  // Exported for testing.
17
17
  exports.NOOP_SDK = {
18
18
  shutdown: async () => { },
@@ -42,8 +42,17 @@ function startNodeSDK(sdkOptions) {
42
42
  (0, instrumentation_1.registerInstrumentations)({
43
43
  instrumentations: sdkOptions?.instrumentations?.flat() ?? [],
44
44
  });
45
- const components = create(config, sdkOptions);
46
- api_1.context.setGlobalContextManager(components.contextManager);
45
+ let components;
46
+ try {
47
+ components = create(config, sdkOptions);
48
+ }
49
+ catch (createErr) {
50
+ api_1.diag.error(`Could not create OpenTelemetry SDK: ${createErr.message}`);
51
+ return exports.NOOP_SDK;
52
+ }
53
+ if (components.contextManager) {
54
+ api_1.context.setGlobalContextManager(components.contextManager);
55
+ }
47
56
  if (components.loggerProvider) {
48
57
  api_logs_1.logs.setGlobalLoggerProvider(components.loggerProvider);
49
58
  }
@@ -76,55 +85,60 @@ exports.startNodeSDK = startNodeSDK;
76
85
  * Interpret configuration model and return SDK components.
77
86
  */
78
87
  function create(config, sdkOptions) {
79
- const defaultContextManager = new context_async_hooks_1.AsyncLocalStorageContextManager();
80
- defaultContextManager.enable();
81
- const components = {
82
- contextManager: defaultContextManager,
83
- };
84
- const resource = setupResource(config, sdkOptions);
85
- const propagator = sdkOptions?.textMapPropagator === null
86
- ? null
87
- : (sdkOptions?.textMapPropagator ??
88
- (0, utils_1.getPropagatorFromConfiguration)(config));
89
- if (propagator) {
90
- components.propagator = propagator;
91
- }
92
- const logProcessors = (0, utils_1.getLogRecordProcessorsFromConfiguration)(config);
93
- if (logProcessors) {
94
- const loggerProvider = new sdk_logs_1.LoggerProvider({
95
- resource: resource,
96
- processors: logProcessors,
97
- });
98
- components.loggerProvider = loggerProvider;
99
- }
100
- const meterReaders = (0, utils_1.getMeterReadersFromConfiguration)(config);
101
- if (meterReaders) {
102
- const meterViews = (0, utils_1.getMeterViewsFromConfiguration)(config);
103
- const meterProvider = new sdk_metrics_1.MeterProvider({
104
- resource: resource,
105
- readers: meterReaders,
106
- views: meterViews ?? [],
107
- });
108
- components.meterProvider = meterProvider;
88
+ const components = {};
89
+ try {
90
+ components.contextManager = new context_async_hooks_1.AsyncLocalStorageContextManager();
91
+ components.contextManager.enable();
92
+ const resource = setupResource(config, sdkOptions);
93
+ const propagator = sdkOptions?.textMapPropagator === null
94
+ ? null
95
+ : (sdkOptions?.textMapPropagator ??
96
+ (0, utils_1.getPropagatorFromConfiguration)(config));
97
+ if (propagator) {
98
+ components.propagator = propagator;
99
+ }
100
+ if (config.logger_provider) {
101
+ components.loggerProvider = (0, utils_1.createLoggerProviderFromConfig)(resource, config.logger_provider, config.attribute_limits);
102
+ }
103
+ const meterReaders = (0, utils_1.getMeterReadersFromConfiguration)(config);
104
+ if (meterReaders) {
105
+ const meterViews = (0, utils_1.getMeterViewsFromConfiguration)(config);
106
+ const meterProvider = new sdk_metrics_1.MeterProvider({
107
+ resource: resource,
108
+ readers: meterReaders,
109
+ views: meterViews ?? [],
110
+ });
111
+ components.meterProvider = meterProvider;
112
+ }
113
+ const spanProcessors = (0, utils_1.getSpanProcessorsFromConfiguration)(config);
114
+ if (spanProcessors) {
115
+ const idGenerator = (0, utils_1.getIdGeneratorFromConfiguration)(config);
116
+ const sampler = (0, utils_1.getSamplerFromConfiguration)(config);
117
+ const tracerProvider = new sdk_trace_1.TracerProvider({
118
+ resource,
119
+ spanProcessors,
120
+ idGenerator,
121
+ sampler,
122
+ spanLimits: (0, create_from_config_1.createSpanLimitsFromConfig)(config.tracer_provider?.limits, config.attribute_limits),
123
+ // TODO (6624): support for `meterProvider: components.meterProvider`
124
+ });
125
+ components.tracerProvider = tracerProvider;
126
+ }
127
+ return components;
109
128
  }
110
- const spanProcessors = (0, utils_1.getSpanProcessorsFromConfiguration)(config);
111
- if (spanProcessors) {
112
- const spanLimits = (0, utils_1.getSpanLimitsFromConfiguration)(config);
113
- // TODO (6506): support sampler configuration from config
114
- const tracerProvider = new sdk_trace_base_1.BasicTracerProvider({
115
- resource,
116
- spanProcessors,
117
- spanLimits,
118
- generalLimits: {
119
- attributeValueLengthLimit: config.attribute_limits?.attribute_value_length_limit ?? undefined,
120
- attributeCountLimit: config.attribute_limits?.attribute_count_limit ?? undefined,
121
- },
122
- // TODO (6616): support idGenerator configuration from config
123
- // TODO (6624): support for `meterProvider: components.meterProvider`
124
- });
125
- components.tracerProvider = tracerProvider;
129
+ catch (createErr) {
130
+ // Clean up any SDK components that were created before the error.
131
+ if (components.loggerProvider) {
132
+ void components.loggerProvider.shutdown();
133
+ }
134
+ if (components.meterProvider) {
135
+ void components.meterProvider.shutdown();
136
+ }
137
+ if (components.tracerProvider) {
138
+ void components.tracerProvider.shutdown();
139
+ }
140
+ throw createErr;
126
141
  }
127
- return components;
128
142
  }
129
143
  function setupResource(config, sdkOptions) {
130
144
  let resource = (0, utils_1.getResourceFromConfiguration)(config) ?? (0, resources_1.defaultResource)();
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/start.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type {\n ConfigFactory,\n ConfigurationModel,\n} from '@opentelemetry/configuration';\nimport { createConfigFactory } from '@opentelemetry/configuration';\nimport {\n context,\n diag,\n DiagConsoleLogger,\n metrics,\n trace,\n propagation,\n} from '@opentelemetry/api';\nimport {\n getInstanceID,\n getLogRecordProcessorsFromConfiguration,\n getMeterReadersFromConfiguration,\n getMeterViewsFromConfiguration,\n getPropagatorFromConfiguration,\n getResourceDetectorsFromConfiguration,\n getResourceFromConfiguration,\n getSpanLimitsFromConfiguration,\n getSpanProcessorsFromConfiguration,\n} from './utils';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport type { SDKComponents, SDKOptions } from './types';\nimport { LoggerProvider } from '@opentelemetry/sdk-logs';\nimport { MeterProvider } from '@opentelemetry/sdk-metrics';\nimport { logs } from '@opentelemetry/api-logs';\nimport type {\n Resource,\n ResourceDetectionConfig,\n ResourceDetector,\n} from '@opentelemetry/resources';\nimport {\n defaultResource,\n detectResources,\n resourceFromAttributes,\n} from '@opentelemetry/resources';\nimport { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';\nimport { ATTR_SERVICE_INSTANCE_ID } from './semconv';\nimport { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';\nimport { diagLogLevelFromSeverityNumberConfig } from './diag';\n\n// Exported for testing.\nexport const NOOP_SDK = {\n shutdown: async () => {},\n};\n\n/**\n * @experimental Function to start the OpenTelemetry Node SDK\n * @param sdkOptions\n */\nexport function startNodeSDK(sdkOptions?: SDKOptions): {\n shutdown: () => Promise<void>;\n} {\n let config: ConfigurationModel;\n try {\n const configFactory: ConfigFactory = createConfigFactory();\n config = configFactory.getConfigModel();\n } catch (configErr) {\n // Set the diag logger, otherwise the diag.error will typically not be shown.\n const logLevel = diagLogLevelFromSeverityNumberConfig();\n diag.setLogger(new DiagConsoleLogger(), { logLevel });\n diag.error(\n `Could not load OpenTelemetry configuration, SDK will not be setup: ${configErr.message}`\n );\n return NOOP_SDK;\n }\n\n if (config.disabled) {\n return NOOP_SDK;\n }\n\n const logLevel = diagLogLevelFromSeverityNumberConfig(config.log_level);\n diag.setLogger(new DiagConsoleLogger(), { logLevel });\n\n registerInstrumentations({\n instrumentations: sdkOptions?.instrumentations?.flat() ?? [],\n });\n\n const components = create(config, sdkOptions);\n context.setGlobalContextManager(components.contextManager);\n if (components.loggerProvider) {\n logs.setGlobalLoggerProvider(components.loggerProvider);\n }\n if (components.meterProvider) {\n metrics.setGlobalMeterProvider(components.meterProvider);\n }\n if (components.tracerProvider) {\n trace.setGlobalTracerProvider(components.tracerProvider);\n }\n if (components.propagator) {\n propagation.setGlobalPropagator(components.propagator);\n }\n\n const shutdownFn = async () => {\n const promises: Promise<unknown>[] = [];\n if (components.loggerProvider) {\n promises.push(components.loggerProvider.shutdown());\n }\n if (components.meterProvider) {\n promises.push(components.meterProvider.shutdown());\n }\n if (components.tracerProvider) {\n promises.push(components.tracerProvider.shutdown());\n }\n await Promise.all(promises);\n };\n return { shutdown: shutdownFn };\n}\n\n/**\n * Interpret configuration model and return SDK components.\n */\nfunction create(\n config: ConfigurationModel,\n sdkOptions?: SDKOptions\n): SDKComponents {\n const defaultContextManager = new AsyncLocalStorageContextManager();\n defaultContextManager.enable();\n const components: SDKComponents = {\n contextManager: defaultContextManager,\n };\n const resource = setupResource(config, sdkOptions);\n\n const propagator =\n sdkOptions?.textMapPropagator === null\n ? null\n : (sdkOptions?.textMapPropagator ??\n getPropagatorFromConfiguration(config));\n if (propagator) {\n components.propagator = propagator;\n }\n\n const logProcessors = getLogRecordProcessorsFromConfiguration(config);\n if (logProcessors) {\n const loggerProvider = new LoggerProvider({\n resource: resource,\n processors: logProcessors,\n });\n components.loggerProvider = loggerProvider;\n }\n\n const meterReaders = getMeterReadersFromConfiguration(config);\n if (meterReaders) {\n const meterViews = getMeterViewsFromConfiguration(config);\n const meterProvider = new MeterProvider({\n resource: resource,\n readers: meterReaders,\n views: meterViews ?? [],\n });\n components.meterProvider = meterProvider;\n }\n\n const spanProcessors = getSpanProcessorsFromConfiguration(config);\n if (spanProcessors) {\n const spanLimits = getSpanLimitsFromConfiguration(config);\n // TODO (6506): support sampler configuration from config\n const tracerProvider = new BasicTracerProvider({\n resource,\n spanProcessors,\n spanLimits,\n generalLimits: {\n attributeValueLengthLimit:\n config.attribute_limits?.attribute_value_length_limit ?? undefined,\n attributeCountLimit:\n config.attribute_limits?.attribute_count_limit ?? undefined,\n },\n // TODO (6616): support idGenerator configuration from config\n // TODO (6624): support for `meterProvider: components.meterProvider`\n });\n components.tracerProvider = tracerProvider;\n }\n\n return components;\n}\n\nexport function setupResource(\n config: ConfigurationModel,\n sdkOptions?: SDKOptions\n): Resource {\n let resource: Resource =\n getResourceFromConfiguration(config) ?? defaultResource();\n let resourceDetectors: ResourceDetector[] = [];\n\n if (sdkOptions?.resourceDetectors != null) {\n resourceDetectors = sdkOptions.resourceDetectors;\n } else if (config.resource?.['detection/development']?.detectors) {\n resourceDetectors = getResourceDetectorsFromConfiguration(config);\n }\n\n if (resourceDetectors.length > 0) {\n const internalConfig: ResourceDetectionConfig = {\n detectors: resourceDetectors,\n };\n resource = resource.merge(detectResources(internalConfig));\n }\n\n const instanceId = getInstanceID(config);\n resource =\n instanceId === undefined\n ? resource\n : resource.merge(\n resourceFromAttributes({\n [ATTR_SERVICE_INSTANCE_ID]: instanceId,\n })\n );\n\n return resource;\n}\n"]}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/start.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type {\n ConfigFactory,\n ConfigurationModel,\n} from '@opentelemetry/configuration';\nimport { createConfigFactory } from '@opentelemetry/configuration';\nimport {\n context,\n diag,\n DiagConsoleLogger,\n metrics,\n trace,\n propagation,\n} from '@opentelemetry/api';\nimport {\n getIdGeneratorFromConfiguration,\n getSamplerFromConfiguration,\n getInstanceID,\n createLoggerProviderFromConfig,\n getMeterReadersFromConfiguration,\n getMeterViewsFromConfiguration,\n getPropagatorFromConfiguration,\n getResourceDetectorsFromConfiguration,\n getResourceFromConfiguration,\n getSpanProcessorsFromConfiguration,\n} from './utils';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport type { SDKComponents, SDKOptions } from './types';\nimport { MeterProvider } from '@opentelemetry/sdk-metrics';\nimport { TracerProvider } from '@opentelemetry/sdk-trace';\nimport { logs } from '@opentelemetry/api-logs';\nimport type {\n Resource,\n ResourceDetectionConfig,\n ResourceDetector,\n} from '@opentelemetry/resources';\nimport {\n defaultResource,\n detectResources,\n resourceFromAttributes,\n} from '@opentelemetry/resources';\nimport { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';\nimport { ATTR_SERVICE_INSTANCE_ID } from './semconv';\nimport { diagLogLevelFromSeverityNumberConfig } from './diag';\nimport { createSpanLimitsFromConfig } from './create-from-config';\n\n// Exported for testing.\nexport const NOOP_SDK = {\n shutdown: async () => {},\n};\n\n/**\n * @experimental Function to start the OpenTelemetry Node SDK\n * @param sdkOptions\n */\nexport function startNodeSDK(sdkOptions?: SDKOptions): {\n shutdown: () => Promise<void>;\n} {\n let config: ConfigurationModel;\n try {\n const configFactory: ConfigFactory = createConfigFactory();\n config = configFactory.getConfigModel();\n } catch (configErr) {\n // Set the diag logger, otherwise the diag.error will typically not be shown.\n const logLevel = diagLogLevelFromSeverityNumberConfig();\n diag.setLogger(new DiagConsoleLogger(), { logLevel });\n diag.error(\n `Could not load OpenTelemetry configuration, SDK will not be setup: ${configErr.message}`\n );\n return NOOP_SDK;\n }\n\n if (config.disabled) {\n return NOOP_SDK;\n }\n\n const logLevel = diagLogLevelFromSeverityNumberConfig(config.log_level);\n diag.setLogger(new DiagConsoleLogger(), { logLevel });\n\n registerInstrumentations({\n instrumentations: sdkOptions?.instrumentations?.flat() ?? [],\n });\n\n let components: SDKComponents;\n try {\n components = create(config, sdkOptions);\n } catch (createErr) {\n diag.error(`Could not create OpenTelemetry SDK: ${createErr.message}`);\n return NOOP_SDK;\n }\n if (components.contextManager) {\n context.setGlobalContextManager(components.contextManager);\n }\n if (components.loggerProvider) {\n logs.setGlobalLoggerProvider(components.loggerProvider);\n }\n if (components.meterProvider) {\n metrics.setGlobalMeterProvider(components.meterProvider);\n }\n if (components.tracerProvider) {\n trace.setGlobalTracerProvider(components.tracerProvider);\n }\n if (components.propagator) {\n propagation.setGlobalPropagator(components.propagator);\n }\n\n const shutdownFn = async () => {\n const promises: Promise<unknown>[] = [];\n if (components.loggerProvider) {\n promises.push(components.loggerProvider.shutdown());\n }\n if (components.meterProvider) {\n promises.push(components.meterProvider.shutdown());\n }\n if (components.tracerProvider) {\n promises.push(components.tracerProvider.shutdown());\n }\n await Promise.all(promises);\n };\n return { shutdown: shutdownFn };\n}\n\n/**\n * Interpret configuration model and return SDK components.\n */\nfunction create(\n config: ConfigurationModel,\n sdkOptions?: SDKOptions\n): SDKComponents {\n const components: SDKComponents = {};\n\n try {\n components.contextManager = new AsyncLocalStorageContextManager();\n components.contextManager.enable();\n\n const resource = setupResource(config, sdkOptions);\n\n const propagator =\n sdkOptions?.textMapPropagator === null\n ? null\n : (sdkOptions?.textMapPropagator ??\n getPropagatorFromConfiguration(config));\n if (propagator) {\n components.propagator = propagator;\n }\n\n if (config.logger_provider) {\n components.loggerProvider = createLoggerProviderFromConfig(\n resource,\n config.logger_provider,\n config.attribute_limits\n );\n }\n\n const meterReaders = getMeterReadersFromConfiguration(config);\n if (meterReaders) {\n const meterViews = getMeterViewsFromConfiguration(config);\n const meterProvider = new MeterProvider({\n resource: resource,\n readers: meterReaders,\n views: meterViews ?? [],\n });\n components.meterProvider = meterProvider;\n }\n\n const spanProcessors = getSpanProcessorsFromConfiguration(config);\n if (spanProcessors) {\n const idGenerator = getIdGeneratorFromConfiguration(config);\n const sampler = getSamplerFromConfiguration(config);\n const tracerProvider = new TracerProvider({\n resource,\n spanProcessors,\n idGenerator,\n sampler,\n spanLimits: createSpanLimitsFromConfig(\n config.tracer_provider?.limits,\n config.attribute_limits\n ),\n // TODO (6624): support for `meterProvider: components.meterProvider`\n });\n components.tracerProvider = tracerProvider;\n }\n\n return components;\n } catch (createErr) {\n // Clean up any SDK components that were created before the error.\n if (components.loggerProvider) {\n void components.loggerProvider.shutdown();\n }\n if (components.meterProvider) {\n void components.meterProvider.shutdown();\n }\n if (components.tracerProvider) {\n void components.tracerProvider.shutdown();\n }\n\n throw createErr;\n }\n}\n\nexport function setupResource(\n config: ConfigurationModel,\n sdkOptions?: SDKOptions\n): Resource {\n let resource: Resource =\n getResourceFromConfiguration(config) ?? defaultResource();\n let resourceDetectors: ResourceDetector[] = [];\n\n if (sdkOptions?.resourceDetectors != null) {\n resourceDetectors = sdkOptions.resourceDetectors;\n } else if (config.resource?.['detection/development']?.detectors) {\n resourceDetectors = getResourceDetectorsFromConfiguration(config);\n }\n\n if (resourceDetectors.length > 0) {\n const internalConfig: ResourceDetectionConfig = {\n detectors: resourceDetectors,\n };\n resource = resource.merge(detectResources(internalConfig));\n }\n\n const instanceId = getInstanceID(config);\n resource =\n instanceId === undefined\n ? resource\n : resource.merge(\n resourceFromAttributes({\n [ATTR_SERVICE_INSTANCE_ID]: instanceId,\n })\n );\n\n return resource;\n}\n"]}
@@ -5,8 +5,8 @@ import type { Resource, ResourceDetector } from '@opentelemetry/resources';
5
5
  import type { LoggerProvider, LogRecordProcessor } from '@opentelemetry/sdk-logs';
6
6
  import type { MeterProvider } from '@opentelemetry/sdk-metrics';
7
7
  import type { IMetricReader, ViewOptions } from '@opentelemetry/sdk-metrics';
8
- import type { Sampler, SpanExporter, SpanLimits, SpanProcessor, IdGenerator } from '@opentelemetry/sdk-trace-base';
9
- import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';
8
+ import type { Sampler, SpanExporter, SpanLimits, SpanProcessor, IdGenerator } from '@opentelemetry/sdk-trace';
9
+ import type { TracerProvider } from '@opentelemetry/sdk-trace';
10
10
  export interface NodeSDKConfiguration {
11
11
  autoDetectResources: boolean;
12
12
  contextManager: ContextManager;
@@ -19,6 +19,14 @@ export interface NodeSDKConfiguration {
19
19
  metricReaders?: IMetricReader[];
20
20
  views: ViewOptions[];
21
21
  instrumentations: (Instrumentation | Instrumentation[])[];
22
+ /**
23
+ * Custom resource to attach to telemetry.
24
+ * It is recommended to merge with the default resource via:
25
+ *
26
+ * resource: defaultResource().merge(
27
+ * resourceFromAttributes({ foo: 'bar' })
28
+ * )
29
+ */
22
30
  resource: Resource;
23
31
  resourceDetectors: Array<ResourceDetector>;
24
32
  sampler: Sampler;
@@ -39,10 +47,10 @@ export interface SDKOptions {
39
47
  textMapPropagator?: TextMapPropagator | null;
40
48
  }
41
49
  export interface SDKComponents {
42
- contextManager: ContextManager;
50
+ contextManager?: ContextManager;
43
51
  loggerProvider?: LoggerProvider;
44
52
  meterProvider?: MeterProvider;
45
- tracerProvider?: BasicTracerProvider;
53
+ tracerProvider?: TracerProvider;
46
54
  propagator?: TextMapPropagator;
47
55
  }
48
56
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ContextManager } from '@opentelemetry/api';\nimport type { TextMapPropagator } from '@opentelemetry/api';\nimport type { Instrumentation } from '@opentelemetry/instrumentation';\nimport type { Resource, ResourceDetector } from '@opentelemetry/resources';\nimport type {\n LoggerProvider,\n LogRecordProcessor,\n} from '@opentelemetry/sdk-logs';\nimport type { MeterProvider } from '@opentelemetry/sdk-metrics';\nimport type { IMetricReader, ViewOptions } from '@opentelemetry/sdk-metrics';\nimport type {\n Sampler,\n SpanExporter,\n SpanLimits,\n SpanProcessor,\n IdGenerator,\n} from '@opentelemetry/sdk-trace-base';\nimport type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';\n\nexport interface NodeSDKConfiguration {\n autoDetectResources: boolean;\n contextManager: ContextManager;\n textMapPropagator: TextMapPropagator | null;\n /** @deprecated use logRecordProcessors instead*/\n logRecordProcessor: LogRecordProcessor;\n logRecordProcessors?: LogRecordProcessor[];\n /** @deprecated use metricReaders instead*/\n metricReader: IMetricReader;\n metricReaders?: IMetricReader[];\n views: ViewOptions[];\n instrumentations: (Instrumentation | Instrumentation[])[];\n resource: Resource;\n resourceDetectors: Array<ResourceDetector>;\n sampler: Sampler;\n serviceName?: string;\n /** @deprecated use spanProcessors instead*/\n spanProcessor?: SpanProcessor;\n spanProcessors?: SpanProcessor[];\n traceExporter: SpanExporter;\n spanLimits: SpanLimits;\n idGenerator: IdGenerator;\n}\n/**\n * @experimental Options for new experimental SDK setup\n */\nexport interface SDKOptions {\n instrumentations?: (Instrumentation | Instrumentation[])[];\n resourceDetectors?: ResourceDetector[];\n textMapPropagator?: TextMapPropagator | null;\n}\n\nexport interface SDKComponents {\n contextManager: ContextManager;\n loggerProvider?: LoggerProvider;\n meterProvider?: MeterProvider;\n tracerProvider?: BasicTracerProvider;\n propagator?: TextMapPropagator;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ContextManager } from '@opentelemetry/api';\nimport type { TextMapPropagator } from '@opentelemetry/api';\nimport type { Instrumentation } from '@opentelemetry/instrumentation';\nimport type { Resource, ResourceDetector } from '@opentelemetry/resources';\nimport type {\n LoggerProvider,\n LogRecordProcessor,\n} from '@opentelemetry/sdk-logs';\nimport type { MeterProvider } from '@opentelemetry/sdk-metrics';\nimport type { IMetricReader, ViewOptions } from '@opentelemetry/sdk-metrics';\nimport type {\n Sampler,\n SpanExporter,\n SpanLimits,\n SpanProcessor,\n IdGenerator,\n} from '@opentelemetry/sdk-trace';\nimport type { TracerProvider } from '@opentelemetry/sdk-trace';\n\nexport interface NodeSDKConfiguration {\n autoDetectResources: boolean;\n contextManager: ContextManager;\n textMapPropagator: TextMapPropagator | null;\n /** @deprecated use logRecordProcessors instead*/\n logRecordProcessor: LogRecordProcessor;\n logRecordProcessors?: LogRecordProcessor[];\n /** @deprecated use metricReaders instead*/\n metricReader: IMetricReader;\n metricReaders?: IMetricReader[];\n views: ViewOptions[];\n instrumentations: (Instrumentation | Instrumentation[])[];\n /**\n * Custom resource to attach to telemetry.\n * It is recommended to merge with the default resource via:\n *\n * resource: defaultResource().merge(\n * resourceFromAttributes({ foo: 'bar' })\n * )\n */\n resource: Resource;\n resourceDetectors: Array<ResourceDetector>;\n sampler: Sampler;\n serviceName?: string;\n /** @deprecated use spanProcessors instead*/\n spanProcessor?: SpanProcessor;\n spanProcessors?: SpanProcessor[];\n traceExporter: SpanExporter;\n spanLimits: SpanLimits;\n idGenerator: IdGenerator;\n}\n/**\n * @experimental Options for new experimental SDK setup\n */\nexport interface SDKOptions {\n instrumentations?: (Instrumentation | Instrumentation[])[];\n resourceDetectors?: ResourceDetector[];\n textMapPropagator?: TextMapPropagator | null;\n}\n\nexport interface SDKComponents {\n contextManager?: ContextManager;\n loggerProvider?: LoggerProvider;\n meterProvider?: MeterProvider;\n tracerProvider?: TracerProvider;\n propagator?: TextMapPropagator;\n}\n"]}
@@ -1,18 +1,18 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
- import type { ContextManager, TextMapPropagator } from '@opentelemetry/api';
3
+ import type { ContextManager, MeterProvider, TextMapPropagator } from '@opentelemetry/api';
4
4
  import type { Resource, ResourceDetector } from '@opentelemetry/resources';
5
- import type { Sampler, SpanExporter, SpanLimits, SpanProcessor } from '@opentelemetry/sdk-trace-base';
6
- import type { ConfigurationModel, LogRecordExporterConfigModel, InstrumentTypeConfigModel, AggregationConfigModel, PeriodicMetricReaderConfigModel, SpanExporterConfigModel, SamplerConfigModel, NameStringValuePairConfigModel, HttpTlsConfigModel } from '@opentelemetry/configuration';
5
+ import type { IdGenerator, Sampler, SpanExporter, SpanProcessor } from '@opentelemetry/sdk-trace';
6
+ import type { ConfigurationModel, LogRecordExporterConfigModel, InstrumentTypeConfigModel, AggregationConfigModel, PeriodicMetricReaderConfigModel, PushMetricExporterConfigModel, SpanExporterConfigModel, SamplerConfigModel, NameStringValuePairConfigModel, HttpTlsConfigModel, AttributeLimitsConfigModel, LoggerProviderConfigModel, LogRecordProcessorConfigModel } from '@opentelemetry/configuration';
7
7
  import type { AggregationOption, IMetricReader, PushMetricExporter, ViewOptions } from '@opentelemetry/sdk-metrics';
8
8
  import { InstrumentType } from '@opentelemetry/sdk-metrics';
9
- import type { BufferConfig, LogRecordExporter, LoggerProviderOptions, LogRecordProcessor } from '@opentelemetry/sdk-logs';
10
- import { BatchLogRecordProcessor } from '@opentelemetry/sdk-logs';
9
+ import type { BatchLogRecordProcessorOptions, LogRecordExporter, LoggerProviderOptions, LogRecordProcessor } from '@opentelemetry/sdk-logs';
10
+ import { BatchLogRecordProcessor, LoggerProvider } from '@opentelemetry/sdk-logs';
11
11
  export declare function getResourceFromConfiguration(config: ConfigurationModel): Resource | undefined;
12
12
  export declare function getResourceDetectorsFromEnv(): Array<ResourceDetector>;
13
13
  export declare function getResourceDetectorsFromConfiguration(config: ConfigurationModel): Array<ResourceDetector>;
14
14
  export declare function getOtlpProtocolFromEnv(): string;
15
- export declare function getSpanProcessorsFromEnv(): SpanProcessor[];
15
+ export declare function getSpanProcessorsFromEnv(selfObsMeterProvider: MeterProvider | undefined): SpanProcessor[];
16
16
  /**
17
17
  * Get a propagator as defined by environment variables
18
18
  */
@@ -20,13 +20,14 @@ export declare function getPropagatorFromEnv(): TextMapPropagator | null | undef
20
20
  /**
21
21
  * Get a propagator as defined by configuration model from configuration
22
22
  */
23
- export declare function getPropagatorFromConfiguration(config: ConfigurationModel): TextMapPropagator | null | undefined;
23
+ export declare function getPropagatorFromConfiguration(config: ConfigurationModel): TextMapPropagator | undefined;
24
24
  export declare function setupContextManager(contextManager: ContextManager | null | undefined): void;
25
25
  export declare function setupPropagator(propagator: TextMapPropagator | null | undefined): void;
26
26
  export declare function getKeyListFromObjectArray(obj: object[] | undefined): string[] | undefined;
27
27
  export declare function getNonNegativeNumberFromEnv(envVarName: string): number | undefined;
28
28
  export declare function getPeriodicExportingMetricReaderFromEnv(exporter: PushMetricExporter): IMetricReader;
29
29
  export declare function getOtlpMetricExporterFromEnv(): PushMetricExporter;
30
+ export declare function getMetricExporter(exporter: PushMetricExporterConfigModel): PushMetricExporter | undefined;
30
31
  export declare function getPeriodicMetricReaderFromConfiguration(periodic: PeriodicMetricReaderConfigModel): IMetricReader | undefined;
31
32
  /**
32
33
  * Get LoggerProviderConfig from environment variables.
@@ -35,10 +36,11 @@ export declare function getLoggerProviderConfigFromEnv(): LoggerProviderOptions;
35
36
  /**
36
37
  * Get configuration for BatchLogRecordProcessor from environment variables.
37
38
  */
38
- export declare function getBatchLogRecordProcessorConfigFromEnv(): BufferConfig;
39
+ export declare function getBatchLogRecordProcessorConfigFromEnv(): Omit<BatchLogRecordProcessorOptions, 'exporter'>;
39
40
  export declare function getBatchLogRecordProcessorFromEnv(exporter: LogRecordExporter): BatchLogRecordProcessor;
40
- export declare function getLogRecordExporter(exporter: LogRecordExporterConfigModel): LogRecordExporter | undefined;
41
- export declare function getLogRecordProcessorsFromConfiguration(config: ConfigurationModel): LogRecordProcessor[] | undefined;
41
+ export declare function createLoggerProviderFromConfig(resource: Resource, logger_provider: LoggerProviderConfigModel, attribute_limits?: AttributeLimitsConfigModel): LoggerProvider;
42
+ export declare function createLogRecordExporterFromConfig(exporter: LogRecordExporterConfigModel): LogRecordExporter;
43
+ export declare function createLogRecordProcessorFromConfig(processor: LogRecordProcessorConfigModel): LogRecordProcessor;
42
44
  export declare function getHeadersFromConfiguration(headers: NameStringValuePairConfigModel[] | undefined): Record<string, string> | undefined;
43
45
  export declare function getHttpAgentOptionsFromTls(tls: HttpTlsConfigModel | undefined): {
44
46
  ca?: Buffer;
@@ -47,12 +49,18 @@ export declare function getHttpAgentOptionsFromTls(tls: HttpTlsConfigModel | und
47
49
  } | undefined;
48
50
  export declare function getSpanExporter(exporter: SpanExporterConfigModel): SpanExporter | undefined;
49
51
  export declare function getSpanProcessorsFromConfiguration(config: ConfigurationModel): SpanProcessor[] | undefined;
50
- export declare function getSpanLimitsFromConfiguration(config: ConfigurationModel): SpanLimits | undefined;
52
+ export declare function getIdGeneratorFromConfiguration(config: ConfigurationModel): IdGenerator | undefined;
51
53
  export declare function getMeterReadersFromConfiguration(config: ConfigurationModel): IMetricReader[] | undefined;
52
54
  export declare function getInstrumentType(instrument: InstrumentTypeConfigModel): InstrumentType | undefined;
53
55
  export declare function getAggregationType(aggregation: AggregationConfigModel): AggregationOption | undefined;
54
56
  export declare function getMeterViewsFromConfiguration(config: ConfigurationModel): ViewOptions[] | undefined;
55
57
  export declare function getInstanceID(config: ConfigurationModel): string | undefined;
58
+ /**
59
+ * Returns the {@link Sampler} configured under `tracer_provider.sampler` in
60
+ * the declarative configuration, or `undefined` if none is set (in which case
61
+ * the SDK applies its default sampler).
62
+ */
63
+ export declare function getSamplerFromConfiguration(config: ConfigurationModel): Sampler | undefined;
56
64
  /**
57
65
  * Builds a {@link Sampler} from a {@link SamplerConfigModel} data model.
58
66
  * This allows sampler construction from declarative configuration.