@opentelemetry/sdk-node 0.56.0 → 0.57.1

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.
package/README.md CHANGED
@@ -212,6 +212,9 @@ This is an alternative to programmatically configuring an exporter or span proce
212
212
  | OTEL_EXPORTER_OTLP_TRACES_PROTOCOL | The transport protocol to use on OTLP trace requests. Options include `grpc`, `http/protobuf`, and `http/json`. Default is `http/protobuf`. |
213
213
  | OTEL_EXPORTER_OTLP_METRICS_PROTOCOL | The transport protocol to use on OTLP metric requests. Options include `grpc`, `http/protobuf`, and `http/json`. Default is `http/protobuf`. |
214
214
  | OTEL_EXPORTER_OTLP_LOGS_PROTOCOL | The transport protocol to use on OTLP log requests. Options include `grpc`, `http/protobuf`, and `http/json`. Default is `http/protobuf`. |
215
+ | OTEL_METRICS_EXPORTER | Metrics exporter to be used. options are `otlp`, `prometheus`, `console` or `none`. |
216
+ | OTEL_METRIC_EXPORT_INTERVAL | The export interval when using a push Metric Reader. Default is `60000`. |
217
+ | OTEL_METRIC_EXPORT_TIMEOUT | The export timeout when using a push Metric Reader. Default is `30000`. |
215
218
 
216
219
  Additionally, you can specify other applicable environment variables that apply to each exporter such as the following:
217
220
 
package/build/src/sdk.js CHANGED
@@ -24,12 +24,93 @@ const sdk_logs_1 = require("@opentelemetry/sdk-logs");
24
24
  const exporter_logs_otlp_http_1 = require("@opentelemetry/exporter-logs-otlp-http");
25
25
  const exporter_logs_otlp_grpc_1 = require("@opentelemetry/exporter-logs-otlp-grpc");
26
26
  const exporter_logs_otlp_proto_1 = require("@opentelemetry/exporter-logs-otlp-proto");
27
+ const exporter_metrics_otlp_grpc_1 = require("@opentelemetry/exporter-metrics-otlp-grpc");
28
+ const exporter_metrics_otlp_proto_1 = require("@opentelemetry/exporter-metrics-otlp-proto");
29
+ const exporter_metrics_otlp_http_1 = require("@opentelemetry/exporter-metrics-otlp-http");
30
+ const exporter_prometheus_1 = require("@opentelemetry/exporter-prometheus");
27
31
  const sdk_metrics_1 = require("@opentelemetry/sdk-metrics");
28
32
  const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
29
33
  const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
30
34
  const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
31
35
  const core_1 = require("@opentelemetry/core");
32
36
  const utils_1 = require("./utils");
37
+ /**
38
+ * @Returns param value, if set else returns the default value
39
+ */
40
+ function getValueInMillis(envName, defaultValue) {
41
+ return parseInt(process.env[envName] || '') || defaultValue;
42
+ }
43
+ /**
44
+ *
45
+ * @returns MetricReader[] if appropriate environment variables are configured
46
+ */
47
+ function configureMetricProviderFromEnv() {
48
+ var _a;
49
+ const metricReaders = [];
50
+ const metricsExporterList = (_a = process.env.OTEL_METRICS_EXPORTER) === null || _a === void 0 ? void 0 : _a.trim();
51
+ if (!metricsExporterList) {
52
+ return metricReaders;
53
+ }
54
+ const enabledExporters = (0, utils_1.filterBlanksAndNulls)(metricsExporterList.split(','));
55
+ if (enabledExporters.length === 0) {
56
+ api_1.diag.info('OTEL_METRICS_EXPORTER is empty. Using default otlp exporter.');
57
+ }
58
+ if (enabledExporters.includes('none')) {
59
+ api_1.diag.info(`OTEL_METRICS_EXPORTER contains "none". Metric provider will not be initialized.`);
60
+ return metricReaders;
61
+ }
62
+ enabledExporters.forEach(exporter => {
63
+ var _a, _b;
64
+ if (exporter === 'otlp') {
65
+ const protocol = ((_a = process.env.OTEL_EXPORTER_OTLP_METRICS_PROTOCOL) === null || _a === void 0 ? void 0 : _a.trim()) ||
66
+ ((_b = process.env.OTEL_EXPORTER_OTLP_PROTOCOL) === null || _b === void 0 ? void 0 : _b.trim());
67
+ const exportIntervalMillis = getValueInMillis('OTEL_METRIC_EXPORT_INTERVAL', 60000);
68
+ const exportTimeoutMillis = getValueInMillis('OTEL_METRIC_EXPORT_TIMEOUT', 30000);
69
+ switch (protocol) {
70
+ case 'grpc':
71
+ metricReaders.push(new sdk_metrics_1.PeriodicExportingMetricReader({
72
+ exporter: new exporter_metrics_otlp_grpc_1.OTLPMetricExporter(),
73
+ exportIntervalMillis: exportIntervalMillis,
74
+ exportTimeoutMillis: exportTimeoutMillis,
75
+ }));
76
+ break;
77
+ case 'http/json':
78
+ metricReaders.push(new sdk_metrics_1.PeriodicExportingMetricReader({
79
+ exporter: new exporter_metrics_otlp_http_1.OTLPMetricExporter(),
80
+ exportIntervalMillis: exportIntervalMillis,
81
+ exportTimeoutMillis: exportTimeoutMillis,
82
+ }));
83
+ break;
84
+ case 'http/protobuf':
85
+ metricReaders.push(new sdk_metrics_1.PeriodicExportingMetricReader({
86
+ exporter: new exporter_metrics_otlp_proto_1.OTLPMetricExporter(),
87
+ exportIntervalMillis: exportIntervalMillis,
88
+ exportTimeoutMillis: exportTimeoutMillis,
89
+ }));
90
+ break;
91
+ default:
92
+ api_1.diag.warn(`Unsupported OTLP metrics protocol: "${protocol}". Using http/protobuf.`);
93
+ metricReaders.push(new sdk_metrics_1.PeriodicExportingMetricReader({
94
+ exporter: new exporter_metrics_otlp_proto_1.OTLPMetricExporter(),
95
+ exportIntervalMillis: exportIntervalMillis,
96
+ exportTimeoutMillis: exportTimeoutMillis,
97
+ }));
98
+ }
99
+ }
100
+ else if (exporter === 'console') {
101
+ metricReaders.push(new sdk_metrics_1.PeriodicExportingMetricReader({
102
+ exporter: new sdk_metrics_1.ConsoleMetricExporter(),
103
+ }));
104
+ }
105
+ else if (exporter === 'prometheus') {
106
+ metricReaders.push(new exporter_prometheus_1.PrometheusExporter());
107
+ }
108
+ else {
109
+ api_1.diag.warn(`Unsupported OTEL_METRICS_EXPORTER value: "${exporter}". Supported values are: otlp, console, prometheus, none.`);
110
+ }
111
+ });
112
+ return metricReaders;
113
+ }
33
114
  class NodeSDK {
34
115
  /**
35
116
  * Create a new NodeJS SDK instance
@@ -126,7 +207,7 @@ class NodeSDK {
126
207
  * Call this method to construct SDK components and register them with the OpenTelemetry API.
127
208
  */
128
209
  start() {
129
- var _a, _b, _c, _d, _e, _f;
210
+ var _a, _b, _c, _d, _e, _f, _g;
130
211
  if (this._disabled) {
131
212
  return;
132
213
  }
@@ -171,14 +252,18 @@ class NodeSDK {
171
252
  this._loggerProvider = loggerProvider;
172
253
  api_logs_1.logs.setGlobalLoggerProvider(loggerProvider);
173
254
  }
174
- if (this._meterProviderConfig) {
255
+ const metricReadersFromEnv = configureMetricProviderFromEnv();
256
+ if (this._meterProviderConfig || metricReadersFromEnv.length > 0) {
175
257
  const readers = [];
176
- if (this._meterProviderConfig.reader) {
258
+ if ((_e = this._meterProviderConfig) === null || _e === void 0 ? void 0 : _e.reader) {
177
259
  readers.push(this._meterProviderConfig.reader);
178
260
  }
261
+ if (readers.length === 0) {
262
+ metricReadersFromEnv.forEach((r) => readers.push(r));
263
+ }
179
264
  const meterProvider = new sdk_metrics_1.MeterProvider({
180
265
  resource: this._resource,
181
- views: (_f = (_e = this._meterProviderConfig) === null || _e === void 0 ? void 0 : _e.views) !== null && _f !== void 0 ? _f : [],
266
+ views: (_g = (_f = this._meterProviderConfig) === null || _f === void 0 ? void 0 : _f.views) !== null && _g !== void 0 ? _g : [],
182
267
  readers: readers,
183
268
  mergeResourceWithDefaults: this._mergeResourceWithDefaults,
184
269
  });
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAM4B;AAC5B,sDAA+C;AAC/C,oEAGwC;AACxC,wDAUkC;AAClC,sDAOiC;AACjC,oFAAgG;AAChG,oFAAgG;AAChG,sFAAkG;AAClG,4DAA+E;AAC/E,kEAGuC;AACvC,kEAGuC;AACvC,8EAA+E;AAE/E,8CAAoE;AACpE,mCAIiB;AAsBjB,MAAa,OAAO;IAyBlB;;OAEG;IACH,YAAmB,gBAA+C,EAAE;;QAClE,MAAM,GAAG,GAAG,IAAA,aAAM,GAAE,CAAC;QACrB,MAAM,kBAAkB,GAAG,IAAA,4BAAqB,GAAE,CAAC;QAEnD,IAAI,GAAG,CAAC,iBAAiB,EAAE;YACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,+CAA+C;YAC/C,kCAAkC;SACnC;QAED,6DAA6D;QAC7D,uDAAuD;QACvD,IAAI,kBAAkB,CAAC,cAAc,EAAE;YACrC,UAAI,CAAC,SAAS,CAAC,IAAI,uBAAiB,EAAE,EAAE;gBACtC,QAAQ,EAAE,kBAAkB,CAAC,cAAc;aAC5C,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QAEpC,IAAI,CAAC,SAAS,GAAG,MAAA,aAAa,CAAC,QAAQ,mCAAI,IAAI,oBAAQ,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,0BAA0B;YAC7B,MAAA,aAAa,CAAC,yBAAyB,mCAAI,IAAI,CAAC;QAClD,IAAI,CAAC,oBAAoB,GAAG,MAAA,aAAa,CAAC,mBAAmB,mCAAI,IAAI,CAAC;QACtE,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC9B,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;SAC9B;aAAM,IAAI,aAAa,CAAC,iBAAiB,IAAI,IAAI,EAAE;YAClD,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC,iBAAiB,CAAC;SAC3D;aAAM,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,IAAI,EAAE;YAC3D,IAAI,CAAC,kBAAkB,GAAG,IAAA,mCAA2B,GAAE,CAAC;SACzD;aAAM;YACL,IAAI,CAAC,kBAAkB,GAAG,CAAC,uBAAW,EAAE,2BAAe,EAAE,wBAAY,CAAC,CAAC;SACxE;QAED,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC;QAE9C,2EAA2E;QAC3E,IACE,aAAa,CAAC,aAAa;YAC3B,aAAa,CAAC,aAAa;YAC3B,aAAa,CAAC,cAAc,EAC5B;YACA,MAAM,oBAAoB,GAAqB,EAAE,CAAC;YAElD,IAAI,aAAa,CAAC,OAAO,EAAE;gBACzB,oBAAoB,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;aACtD;YACD,IAAI,aAAa,CAAC,UAAU,EAAE;gBAC5B,oBAAoB,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC;aAC5D;YACD,IAAI,aAAa,CAAC,WAAW,EAAE;gBAC7B,oBAAoB,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC;aAC9D;YAED,IAAI,aAAa,CAAC,aAAa,EAAE;gBAC/B,UAAI,CAAC,IAAI,CACP,gFAAgF,CACjF,CAAC;aACH;YAED,MAAM,aAAa,GACjB,MAAA,aAAa,CAAC,aAAa;YAC3B,oEAAoE;YACpE,IAAI,mCAAkB,CAAC,aAAa,CAAC,aAAc,CAAC,CAAC;YAEvD,MAAM,cAAc,GAAG,MAAA,aAAa,CAAC,cAAc,mCAAI,CAAC,aAAa,CAAC,CAAC;YAEvE,IAAI,CAAC,qBAAqB,GAAG;gBAC3B,YAAY,EAAE,oBAAoB;gBAClC,cAAc;gBACd,cAAc,EAAE,aAAa,CAAC,cAAc;gBAC5C,iBAAiB,EAAE,aAAa,CAAC,iBAAiB;aACnD,CAAC;SACH;QAED,IAAI,aAAa,CAAC,mBAAmB,EAAE;YACrC,IAAI,CAAC,qBAAqB,GAAG;gBAC3B,mBAAmB,EAAE,aAAa,CAAC,mBAAmB;aACvD,CAAC;SACH;aAAM,IAAI,aAAa,CAAC,kBAAkB,EAAE;YAC3C,IAAI,CAAC,qBAAqB,GAAG;gBAC3B,mBAAmB,EAAE,CAAC,aAAa,CAAC,kBAAkB,CAAC;aACxD,CAAC;YACF,UAAI,CAAC,IAAI,CACP,0FAA0F,CAC3F,CAAC;SACH;aAAM;YACL,IAAI,CAAC,8BAA8B,EAAE,CAAC;SACvC;QAED,IAAI,aAAa,CAAC,YAAY,IAAI,aAAa,CAAC,KAAK,EAAE;YACrD,MAAM,mBAAmB,GAAwB,EAAE,CAAC;YACpD,IAAI,aAAa,CAAC,YAAY,EAAE;gBAC9B,mBAAmB,CAAC,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC;aACzD;YAED,IAAI,aAAa,CAAC,KAAK,EAAE;gBACvB,mBAAmB,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;aACjD;YAED,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;SACjD;QAED,IAAI,CAAC,iBAAiB,GAAG,MAAA,MAAA,aAAa,CAAC,gBAAgB,0CAAE,IAAI,EAAE,mCAAI,EAAE,CAAC;IACxE,CAAC;IAED;;OAEG;IACI,KAAK;;QACV,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO;SACR;QAED,IAAA,0CAAwB,EAAC;YACvB,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;SACzC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,MAAM,cAAc,GAA4B;gBAC9C,SAAS,EAAE,IAAI,CAAC,kBAAkB;aACnC,CAAC;YAEF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CACnC,IAAA,+BAAmB,EAAC,cAAc,CAAC,CACpC,CAAC;SACH;QAED,IAAI,CAAC,SAAS;YACZ,IAAI,CAAC,YAAY,KAAK,SAAS;gBAC7B,CAAC,CAAC,IAAI,CAAC,SAAS;gBAChB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAClB,IAAI,oBAAQ,CAAC;oBACX,CAAC,+CAAwB,CAAC,EAAE,IAAI,CAAC,YAAY;iBAC9C,CAAC,CACH,CAAC;QAER,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB;YAC/C,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,cAAc;YAC3C,CAAC,CAAC,IAAA,gCAAwB,GAAE,CAAC;QAE/B,gIAAgI;QAChI,IAAI,CAAC,eAAe,GAAG,IAAI,mCAAkB,iCACxC,IAAI,CAAC,cAAc,KACtB,QAAQ,EAAE,IAAI,CAAC,SAAS,EACxB,yBAAyB,EAAE,IAAI,CAAC,0BAA0B,EAC1D,cAAc,IACd,CAAC;QAEH,6CAA6C;QAC7C,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;gBAC5B,cAAc,EACZ,MAAA,MAAA,IAAI,CAAC,qBAAqB,0CAAE,cAAc;gBAC1C,+GAA+G;gBAC/G,MAAA,IAAI,CAAC,cAAc,0CAAE,cAAc;gBACrC,UAAU,EAAE,MAAA,IAAI,CAAC,qBAAqB,0CAAE,iBAAiB;aAC1D,CAAC,CAAC;SACJ;QAED,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC9B,MAAM,cAAc,GAAG,IAAI,yBAAc,CAAC;gBACxC,QAAQ,EAAE,IAAI,CAAC,SAAS;gBACxB,yBAAyB,EAAE,IAAI,CAAC,0BAA0B;aAC3D,CAAC,CAAC;YAEH,KAAK,MAAM,kBAAkB,IAAI,IAAI,CAAC,qBAAqB;iBACxD,mBAAmB,EAAE;gBACtB,cAAc,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;aAC1D;YAED,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;YAEtC,eAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;SAC9C;QAED,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,MAAM,OAAO,GAAmB,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE;gBACpC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;aAChD;YACD,MAAM,aAAa,GAAG,IAAI,2BAAa,CAAC;gBACtC,QAAQ,EAAE,IAAI,CAAC,SAAS;gBACxB,KAAK,EAAE,MAAA,MAAA,IAAI,CAAC,oBAAoB,0CAAE,KAAK,mCAAI,EAAE;gBAC7C,OAAO,EAAE,OAAO;gBAChB,yBAAyB,EAAE,IAAI,CAAC,0BAA0B;aAC3D,CAAC,CAAC;YAEH,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;YAEpC,aAAO,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC;YAE9C,mGAAmG;YACnG,4GAA4G;YAC5G,4GAA4G;YAC5G,KAAK,MAAM,eAAe,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBACpD,eAAe,CAAC,gBAAgB,CAAC,aAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;aAC9D;SACF;IACH,CAAC;IAEM,QAAQ;QACb,MAAM,QAAQ,GAAuB,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;SAChD;QACD,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;SAChD;QACD,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC/C;QAED,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YACnB,oDAAoD;aACnD,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAClB,CAAC;IACJ,CAAC;IAEO,8BAA8B;;QACpC,MAAM,gBAAgB,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,kBAAkB,mCAAI,EAAE,CAAC;QAC9D,MAAM,gBAAgB,GAAG,IAAA,4BAAoB,EAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAE3E,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,UAAI,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;YACvE,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC/B;QAED,IAAI,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACrC,UAAI,CAAC,IAAI,CACP,8EAA8E,CAC/E,CAAC;YACF,OAAO;SACR;QAED,MAAM,SAAS,GAAwB,EAAE,CAAC;QAE1C,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;;YAClC,IAAI,QAAQ,KAAK,MAAM,EAAE;gBACvB,MAAM,QAAQ,GAAG,MAAA,CACf,MAAA,OAAO,CAAC,GAAG,CAAC,gCAAgC,mCAC5C,OAAO,CAAC,GAAG,CAAC,2BAA2B,CACxC,0CAAE,IAAI,EAAE,CAAC;gBAEV,QAAQ,QAAQ,EAAE;oBAChB,KAAK,MAAM;wBACT,SAAS,CAAC,IAAI,CAAC,IAAI,yCAAmB,EAAE,CAAC,CAAC;wBAC1C,MAAM;oBACR,KAAK,WAAW;wBACd,SAAS,CAAC,IAAI,CAAC,IAAI,yCAAmB,EAAE,CAAC,CAAC;wBAC1C,MAAM;oBACR,KAAK,eAAe;wBAClB,SAAS,CAAC,IAAI,CAAC,IAAI,0CAAoB,EAAE,CAAC,CAAC;wBAC3C,MAAM;oBACR,KAAK,SAAS,CAAC;oBACf,KAAK,EAAE;wBACL,SAAS,CAAC,IAAI,CAAC,IAAI,0CAAoB,EAAE,CAAC,CAAC;wBAC3C,MAAM;oBACR;wBACE,UAAI,CAAC,IAAI,CACP,oCAAoC,QAAQ,yBAAyB,CACtE,CAAC;wBACF,SAAS,CAAC,IAAI,CAAC,IAAI,0CAAoB,EAAE,CAAC,CAAC;iBAC9C;aACF;iBAAM,IAAI,QAAQ,KAAK,SAAS,EAAE;gBACjC,SAAS,CAAC,IAAI,CAAC,IAAI,mCAAwB,EAAE,CAAC,CAAC;aAChD;iBAAM;gBACL,UAAI,CAAC,IAAI,CACP,0CAA0C,QAAQ,+CAA+C,CAClG,CAAC;aACH;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,IAAI,CAAC,qBAAqB,GAAG;gBAC3B,mBAAmB,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;oBAC5C,IAAI,QAAQ,YAAY,mCAAwB,EAAE;wBAChD,OAAO,IAAI,mCAAwB,CAAC,QAAQ,CAAC,CAAC;qBAC/C;yBAAM;wBACL,OAAO,IAAI,kCAAuB,CAAC,QAAQ,CAAC,CAAC;qBAC9C;gBACH,CAAC,CAAC;aACH,CAAC;SACH;IACH,CAAC;CACF;AA1TD,0BA0TC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ContextManager,\n TextMapPropagator,\n metrics,\n diag,\n DiagConsoleLogger,\n} from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport {\n Instrumentation,\n registerInstrumentations,\n} from '@opentelemetry/instrumentation';\nimport {\n Detector,\n DetectorSync,\n detectResourcesSync,\n envDetector,\n hostDetector,\n IResource,\n processDetector,\n Resource,\n ResourceDetectionConfig,\n} from '@opentelemetry/resources';\nimport {\n LogRecordProcessor,\n LoggerProvider,\n BatchLogRecordProcessor,\n ConsoleLogRecordExporter,\n LogRecordExporter,\n SimpleLogRecordProcessor,\n} from '@opentelemetry/sdk-logs';\nimport { OTLPLogExporter as OTLPHttpLogExporter } from '@opentelemetry/exporter-logs-otlp-http';\nimport { OTLPLogExporter as OTLPGrpcLogExporter } from '@opentelemetry/exporter-logs-otlp-grpc';\nimport { OTLPLogExporter as OTLPProtoLogExporter } from '@opentelemetry/exporter-logs-otlp-proto';\nimport { MeterProvider, MetricReader, View } from '@opentelemetry/sdk-metrics';\nimport {\n BatchSpanProcessor,\n SpanProcessor,\n} from '@opentelemetry/sdk-trace-base';\nimport {\n NodeTracerConfig,\n NodeTracerProvider,\n} from '@opentelemetry/sdk-trace-node';\nimport { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions';\nimport { NodeSDKConfiguration } from './types';\nimport { getEnv, getEnvWithoutDefaults } from '@opentelemetry/core';\nimport {\n getResourceDetectorsFromEnv,\n getSpanProcessorsFromEnv,\n filterBlanksAndNulls,\n} from './utils';\n\n/** This class represents everything needed to register a fully configured OpenTelemetry Node.js SDK */\n\nexport type MeterProviderConfig = {\n /**\n * Reference to the MetricReader instance by the NodeSDK\n */\n reader?: MetricReader;\n /**\n * List of {@link View}s that should be passed to the MeterProvider\n */\n views?: View[];\n};\n\nexport type LoggerProviderConfig = {\n /**\n * Reference to the LoggerRecordProcessor instance by the NodeSDK\n */\n logRecordProcessors: LogRecordProcessor[];\n};\n\nexport class NodeSDK {\n private _tracerProviderConfig?: {\n tracerConfig: NodeTracerConfig;\n spanProcessors: SpanProcessor[];\n contextManager?: ContextManager;\n textMapPropagator?: TextMapPropagator;\n };\n private _loggerProviderConfig?: LoggerProviderConfig;\n private _meterProviderConfig?: MeterProviderConfig;\n private _instrumentations: Instrumentation[];\n\n private _resource: IResource;\n private _resourceDetectors: Array<Detector | DetectorSync>;\n private _mergeResourceWithDefaults: boolean;\n\n private _autoDetectResources: boolean;\n\n private _tracerProvider?: NodeTracerProvider;\n private _loggerProvider?: LoggerProvider;\n private _meterProvider?: MeterProvider;\n private _serviceName?: string;\n private _configuration?: Partial<NodeSDKConfiguration>;\n\n private _disabled?: boolean;\n\n /**\n * Create a new NodeJS SDK instance\n */\n public constructor(configuration: Partial<NodeSDKConfiguration> = {}) {\n const env = getEnv();\n const envWithoutDefaults = getEnvWithoutDefaults();\n\n if (env.OTEL_SDK_DISABLED) {\n this._disabled = true;\n // Functions with possible side-effects are set\n // to no-op via the _disabled flag\n }\n\n // Default is INFO, use environment without defaults to check\n // if the user originally set the environment variable.\n if (envWithoutDefaults.OTEL_LOG_LEVEL) {\n diag.setLogger(new DiagConsoleLogger(), {\n logLevel: envWithoutDefaults.OTEL_LOG_LEVEL,\n });\n }\n\n this._configuration = configuration;\n\n this._resource = configuration.resource ?? new Resource({});\n this._mergeResourceWithDefaults =\n configuration.mergeResourceWithDefaults ?? true;\n this._autoDetectResources = configuration.autoDetectResources ?? true;\n if (!this._autoDetectResources) {\n this._resourceDetectors = [];\n } else if (configuration.resourceDetectors != null) {\n this._resourceDetectors = configuration.resourceDetectors;\n } else if (process.env.OTEL_NODE_RESOURCE_DETECTORS != null) {\n this._resourceDetectors = getResourceDetectorsFromEnv();\n } else {\n this._resourceDetectors = [envDetector, processDetector, hostDetector];\n }\n\n this._serviceName = configuration.serviceName;\n\n // If a tracer provider can be created from manual configuration, create it\n if (\n configuration.traceExporter ||\n configuration.spanProcessor ||\n configuration.spanProcessors\n ) {\n const tracerProviderConfig: NodeTracerConfig = {};\n\n if (configuration.sampler) {\n tracerProviderConfig.sampler = configuration.sampler;\n }\n if (configuration.spanLimits) {\n tracerProviderConfig.spanLimits = configuration.spanLimits;\n }\n if (configuration.idGenerator) {\n tracerProviderConfig.idGenerator = configuration.idGenerator;\n }\n\n if (configuration.spanProcessor) {\n diag.warn(\n \"The 'spanProcessor' option is deprecated. Please use 'spanProcessors' instead.\"\n );\n }\n\n const spanProcessor =\n configuration.spanProcessor ??\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n new BatchSpanProcessor(configuration.traceExporter!);\n\n const spanProcessors = configuration.spanProcessors ?? [spanProcessor];\n\n this._tracerProviderConfig = {\n tracerConfig: tracerProviderConfig,\n spanProcessors,\n contextManager: configuration.contextManager,\n textMapPropagator: configuration.textMapPropagator,\n };\n }\n\n if (configuration.logRecordProcessors) {\n this._loggerProviderConfig = {\n logRecordProcessors: configuration.logRecordProcessors,\n };\n } else if (configuration.logRecordProcessor) {\n this._loggerProviderConfig = {\n logRecordProcessors: [configuration.logRecordProcessor],\n };\n diag.warn(\n \"The 'logRecordProcessor' option is deprecated. Please use 'logRecordProcessors' instead.\"\n );\n } else {\n this.configureLoggerProviderFromEnv();\n }\n\n if (configuration.metricReader || configuration.views) {\n const meterProviderConfig: MeterProviderConfig = {};\n if (configuration.metricReader) {\n meterProviderConfig.reader = configuration.metricReader;\n }\n\n if (configuration.views) {\n meterProviderConfig.views = configuration.views;\n }\n\n this._meterProviderConfig = meterProviderConfig;\n }\n\n this._instrumentations = configuration.instrumentations?.flat() ?? [];\n }\n\n /**\n * Call this method to construct SDK components and register them with the OpenTelemetry API.\n */\n public start(): void {\n if (this._disabled) {\n return;\n }\n\n registerInstrumentations({\n instrumentations: this._instrumentations,\n });\n\n if (this._autoDetectResources) {\n const internalConfig: ResourceDetectionConfig = {\n detectors: this._resourceDetectors,\n };\n\n this._resource = this._resource.merge(\n detectResourcesSync(internalConfig)\n );\n }\n\n this._resource =\n this._serviceName === undefined\n ? this._resource\n : this._resource.merge(\n new Resource({\n [SEMRESATTRS_SERVICE_NAME]: this._serviceName,\n })\n );\n\n const spanProcessors = this._tracerProviderConfig\n ? this._tracerProviderConfig.spanProcessors\n : getSpanProcessorsFromEnv();\n\n // If the Provider is configured with Env Exporters, we need to check if the SDK had any manual configurations and set them here\n this._tracerProvider = new NodeTracerProvider({\n ...this._configuration,\n resource: this._resource,\n mergeResourceWithDefaults: this._mergeResourceWithDefaults,\n spanProcessors,\n });\n\n // Only register if there is a span processor\n if (spanProcessors.length > 0) {\n this._tracerProvider.register({\n contextManager:\n this._tracerProviderConfig?.contextManager ??\n // _tracerProviderConfig may be undefined if trace-specific settings are not provided - fall back to raw config\n this._configuration?.contextManager,\n propagator: this._tracerProviderConfig?.textMapPropagator,\n });\n }\n\n if (this._loggerProviderConfig) {\n const loggerProvider = new LoggerProvider({\n resource: this._resource,\n mergeResourceWithDefaults: this._mergeResourceWithDefaults,\n });\n\n for (const logRecordProcessor of this._loggerProviderConfig\n .logRecordProcessors) {\n loggerProvider.addLogRecordProcessor(logRecordProcessor);\n }\n\n this._loggerProvider = loggerProvider;\n\n logs.setGlobalLoggerProvider(loggerProvider);\n }\n\n if (this._meterProviderConfig) {\n const readers: MetricReader[] = [];\n if (this._meterProviderConfig.reader) {\n readers.push(this._meterProviderConfig.reader);\n }\n const meterProvider = new MeterProvider({\n resource: this._resource,\n views: this._meterProviderConfig?.views ?? [],\n readers: readers,\n mergeResourceWithDefaults: this._mergeResourceWithDefaults,\n });\n\n this._meterProvider = meterProvider;\n\n metrics.setGlobalMeterProvider(meterProvider);\n\n // TODO: This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/3609\n // If the MeterProvider is not yet registered when instrumentations are registered, all metrics are dropped.\n // This code is obsolete once https://github.com/open-telemetry/opentelemetry-js/issues/3622 is implemented.\n for (const instrumentation of this._instrumentations) {\n instrumentation.setMeterProvider(metrics.getMeterProvider());\n }\n }\n }\n\n public shutdown(): Promise<void> {\n const promises: Promise<unknown>[] = [];\n if (this._tracerProvider) {\n promises.push(this._tracerProvider.shutdown());\n }\n if (this._loggerProvider) {\n promises.push(this._loggerProvider.shutdown());\n }\n if (this._meterProvider) {\n promises.push(this._meterProvider.shutdown());\n }\n\n return (\n Promise.all(promises)\n // return void instead of the array from Promise.all\n .then(() => {})\n );\n }\n\n private configureLoggerProviderFromEnv(): void {\n const logExportersList = process.env.OTEL_LOGS_EXPORTER ?? '';\n const enabledExporters = filterBlanksAndNulls(logExportersList.split(','));\n\n if (enabledExporters.length === 0) {\n diag.info('OTEL_LOGS_EXPORTER is empty. Using default otlp exporter.');\n enabledExporters.push('otlp');\n }\n\n if (enabledExporters.includes('none')) {\n diag.info(\n `OTEL_LOGS_EXPORTER contains \"none\". Logger provider will not be initialized.`\n );\n return;\n }\n\n const exporters: LogRecordExporter[] = [];\n\n enabledExporters.forEach(exporter => {\n if (exporter === 'otlp') {\n const protocol = (\n process.env.OTEL_EXPORTER_OTLP_LOGS_PROTOCOL ??\n process.env.OTEL_EXPORTER_OTLP_PROTOCOL\n )?.trim();\n\n switch (protocol) {\n case 'grpc':\n exporters.push(new OTLPGrpcLogExporter());\n break;\n case 'http/json':\n exporters.push(new OTLPHttpLogExporter());\n break;\n case 'http/protobuf':\n exporters.push(new OTLPProtoLogExporter());\n break;\n case undefined:\n case '':\n exporters.push(new OTLPProtoLogExporter());\n break;\n default:\n diag.warn(\n `Unsupported OTLP logs protocol: \"${protocol}\". Using http/protobuf.`\n );\n exporters.push(new OTLPProtoLogExporter());\n }\n } else if (exporter === 'console') {\n exporters.push(new ConsoleLogRecordExporter());\n } else {\n diag.warn(\n `Unsupported OTEL_LOGS_EXPORTER value: \"${exporter}\". Supported values are: otlp, console, none.`\n );\n }\n });\n\n if (exporters.length > 0) {\n this._loggerProviderConfig = {\n logRecordProcessors: exporters.map(exporter => {\n if (exporter instanceof ConsoleLogRecordExporter) {\n return new SimpleLogRecordProcessor(exporter);\n } else {\n return new BatchLogRecordProcessor(exporter);\n }\n }),\n };\n }\n }\n}\n"]}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ContextManager,\n TextMapPropagator,\n metrics,\n diag,\n DiagConsoleLogger,\n} from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport {\n Instrumentation,\n registerInstrumentations,\n} from '@opentelemetry/instrumentation';\nimport {\n Detector,\n DetectorSync,\n detectResourcesSync,\n envDetector,\n hostDetector,\n IResource,\n processDetector,\n Resource,\n ResourceDetectionConfig,\n} from '@opentelemetry/resources';\nimport {\n LogRecordProcessor,\n LoggerProvider,\n BatchLogRecordProcessor,\n ConsoleLogRecordExporter,\n LogRecordExporter,\n SimpleLogRecordProcessor,\n} from '@opentelemetry/sdk-logs';\nimport { OTLPLogExporter as OTLPHttpLogExporter } from '@opentelemetry/exporter-logs-otlp-http';\nimport { OTLPLogExporter as OTLPGrpcLogExporter } from '@opentelemetry/exporter-logs-otlp-grpc';\nimport { OTLPLogExporter as OTLPProtoLogExporter } from '@opentelemetry/exporter-logs-otlp-proto';\nimport { OTLPMetricExporter as OTLPGrpcMetricExporter } from '@opentelemetry/exporter-metrics-otlp-grpc';\nimport { OTLPMetricExporter as OTLPProtoMetricExporter } from '@opentelemetry/exporter-metrics-otlp-proto';\nimport { OTLPMetricExporter as OTLPHttpMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';\nimport { PrometheusExporter as PrometheusMetricExporter } from '@opentelemetry/exporter-prometheus';\nimport {\n MeterProvider,\n MetricReader,\n View,\n ConsoleMetricExporter,\n PeriodicExportingMetricReader,\n} from '@opentelemetry/sdk-metrics';\nimport {\n BatchSpanProcessor,\n SpanProcessor,\n} from '@opentelemetry/sdk-trace-base';\nimport {\n NodeTracerConfig,\n NodeTracerProvider,\n} from '@opentelemetry/sdk-trace-node';\nimport { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions';\nimport { NodeSDKConfiguration } from './types';\nimport { getEnv, getEnvWithoutDefaults } from '@opentelemetry/core';\nimport {\n getResourceDetectorsFromEnv,\n getSpanProcessorsFromEnv,\n filterBlanksAndNulls,\n} from './utils';\n\n/** This class represents everything needed to register a fully configured OpenTelemetry Node.js SDK */\n\nexport type MeterProviderConfig = {\n /**\n * Reference to the MetricReader instance by the NodeSDK\n */\n reader?: MetricReader;\n /**\n * List of {@link View}s that should be passed to the MeterProvider\n */\n views?: View[];\n};\n\nexport type LoggerProviderConfig = {\n /**\n * Reference to the LoggerRecordProcessor instance by the NodeSDK\n */\n logRecordProcessors: LogRecordProcessor[];\n};\n\n/**\n * @Returns param value, if set else returns the default value\n */\nfunction getValueInMillis(envName: string, defaultValue: number): number {\n return parseInt(process.env[envName] || '') || defaultValue;\n}\n\n/**\n *\n * @returns MetricReader[] if appropriate environment variables are configured\n */\nfunction configureMetricProviderFromEnv(): MetricReader[] {\n const metricReaders: MetricReader[] = [];\n const metricsExporterList = process.env.OTEL_METRICS_EXPORTER?.trim();\n if (!metricsExporterList) {\n return metricReaders;\n }\n const enabledExporters = filterBlanksAndNulls(metricsExporterList.split(','));\n\n if (enabledExporters.length === 0) {\n diag.info('OTEL_METRICS_EXPORTER is empty. Using default otlp exporter.');\n }\n\n if (enabledExporters.includes('none')) {\n diag.info(\n `OTEL_METRICS_EXPORTER contains \"none\". Metric provider will not be initialized.`\n );\n return metricReaders;\n }\n enabledExporters.forEach(exporter => {\n if (exporter === 'otlp') {\n const protocol =\n process.env.OTEL_EXPORTER_OTLP_METRICS_PROTOCOL?.trim() ||\n process.env.OTEL_EXPORTER_OTLP_PROTOCOL?.trim();\n\n const exportIntervalMillis = getValueInMillis(\n 'OTEL_METRIC_EXPORT_INTERVAL',\n 60000\n );\n const exportTimeoutMillis = getValueInMillis(\n 'OTEL_METRIC_EXPORT_TIMEOUT',\n 30000\n );\n\n switch (protocol) {\n case 'grpc':\n metricReaders.push(\n new PeriodicExportingMetricReader({\n exporter: new OTLPGrpcMetricExporter(),\n exportIntervalMillis: exportIntervalMillis,\n exportTimeoutMillis: exportTimeoutMillis,\n })\n );\n break;\n case 'http/json':\n metricReaders.push(\n new PeriodicExportingMetricReader({\n exporter: new OTLPHttpMetricExporter(),\n exportIntervalMillis: exportIntervalMillis,\n exportTimeoutMillis: exportTimeoutMillis,\n })\n );\n break;\n case 'http/protobuf':\n metricReaders.push(\n new PeriodicExportingMetricReader({\n exporter: new OTLPProtoMetricExporter(),\n exportIntervalMillis: exportIntervalMillis,\n exportTimeoutMillis: exportTimeoutMillis,\n })\n );\n break;\n default:\n diag.warn(\n `Unsupported OTLP metrics protocol: \"${protocol}\". Using http/protobuf.`\n );\n metricReaders.push(\n new PeriodicExportingMetricReader({\n exporter: new OTLPProtoMetricExporter(),\n exportIntervalMillis: exportIntervalMillis,\n exportTimeoutMillis: exportTimeoutMillis,\n })\n );\n }\n } else if (exporter === 'console') {\n metricReaders.push(\n new PeriodicExportingMetricReader({\n exporter: new ConsoleMetricExporter(),\n })\n );\n } else if (exporter === 'prometheus') {\n metricReaders.push(new PrometheusMetricExporter());\n } else {\n diag.warn(\n `Unsupported OTEL_METRICS_EXPORTER value: \"${exporter}\". Supported values are: otlp, console, prometheus, none.`\n );\n }\n });\n\n return metricReaders;\n}\nexport class NodeSDK {\n private _tracerProviderConfig?: {\n tracerConfig: NodeTracerConfig;\n spanProcessors: SpanProcessor[];\n contextManager?: ContextManager;\n textMapPropagator?: TextMapPropagator;\n };\n private _loggerProviderConfig?: LoggerProviderConfig;\n private _meterProviderConfig?: MeterProviderConfig;\n private _instrumentations: Instrumentation[];\n\n private _resource: IResource;\n private _resourceDetectors: Array<Detector | DetectorSync>;\n private _mergeResourceWithDefaults: boolean;\n\n private _autoDetectResources: boolean;\n\n private _tracerProvider?: NodeTracerProvider;\n private _loggerProvider?: LoggerProvider;\n private _meterProvider?: MeterProvider;\n private _serviceName?: string;\n private _configuration?: Partial<NodeSDKConfiguration>;\n\n private _disabled?: boolean;\n\n /**\n * Create a new NodeJS SDK instance\n */\n public constructor(configuration: Partial<NodeSDKConfiguration> = {}) {\n const env = getEnv();\n const envWithoutDefaults = getEnvWithoutDefaults();\n\n if (env.OTEL_SDK_DISABLED) {\n this._disabled = true;\n // Functions with possible side-effects are set\n // to no-op via the _disabled flag\n }\n\n // Default is INFO, use environment without defaults to check\n // if the user originally set the environment variable.\n if (envWithoutDefaults.OTEL_LOG_LEVEL) {\n diag.setLogger(new DiagConsoleLogger(), {\n logLevel: envWithoutDefaults.OTEL_LOG_LEVEL,\n });\n }\n\n this._configuration = configuration;\n\n this._resource = configuration.resource ?? new Resource({});\n this._mergeResourceWithDefaults =\n configuration.mergeResourceWithDefaults ?? true;\n this._autoDetectResources = configuration.autoDetectResources ?? true;\n if (!this._autoDetectResources) {\n this._resourceDetectors = [];\n } else if (configuration.resourceDetectors != null) {\n this._resourceDetectors = configuration.resourceDetectors;\n } else if (process.env.OTEL_NODE_RESOURCE_DETECTORS != null) {\n this._resourceDetectors = getResourceDetectorsFromEnv();\n } else {\n this._resourceDetectors = [envDetector, processDetector, hostDetector];\n }\n\n this._serviceName = configuration.serviceName;\n\n // If a tracer provider can be created from manual configuration, create it\n if (\n configuration.traceExporter ||\n configuration.spanProcessor ||\n configuration.spanProcessors\n ) {\n const tracerProviderConfig: NodeTracerConfig = {};\n\n if (configuration.sampler) {\n tracerProviderConfig.sampler = configuration.sampler;\n }\n if (configuration.spanLimits) {\n tracerProviderConfig.spanLimits = configuration.spanLimits;\n }\n if (configuration.idGenerator) {\n tracerProviderConfig.idGenerator = configuration.idGenerator;\n }\n\n if (configuration.spanProcessor) {\n diag.warn(\n \"The 'spanProcessor' option is deprecated. Please use 'spanProcessors' instead.\"\n );\n }\n\n const spanProcessor =\n configuration.spanProcessor ??\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n new BatchSpanProcessor(configuration.traceExporter!);\n\n const spanProcessors = configuration.spanProcessors ?? [spanProcessor];\n\n this._tracerProviderConfig = {\n tracerConfig: tracerProviderConfig,\n spanProcessors,\n contextManager: configuration.contextManager,\n textMapPropagator: configuration.textMapPropagator,\n };\n }\n\n if (configuration.logRecordProcessors) {\n this._loggerProviderConfig = {\n logRecordProcessors: configuration.logRecordProcessors,\n };\n } else if (configuration.logRecordProcessor) {\n this._loggerProviderConfig = {\n logRecordProcessors: [configuration.logRecordProcessor],\n };\n diag.warn(\n \"The 'logRecordProcessor' option is deprecated. Please use 'logRecordProcessors' instead.\"\n );\n } else {\n this.configureLoggerProviderFromEnv();\n }\n\n if (configuration.metricReader || configuration.views) {\n const meterProviderConfig: MeterProviderConfig = {};\n if (configuration.metricReader) {\n meterProviderConfig.reader = configuration.metricReader;\n }\n\n if (configuration.views) {\n meterProviderConfig.views = configuration.views;\n }\n\n this._meterProviderConfig = meterProviderConfig;\n }\n\n this._instrumentations = configuration.instrumentations?.flat() ?? [];\n }\n\n /**\n * Call this method to construct SDK components and register them with the OpenTelemetry API.\n */\n public start(): void {\n if (this._disabled) {\n return;\n }\n\n registerInstrumentations({\n instrumentations: this._instrumentations,\n });\n\n if (this._autoDetectResources) {\n const internalConfig: ResourceDetectionConfig = {\n detectors: this._resourceDetectors,\n };\n\n this._resource = this._resource.merge(\n detectResourcesSync(internalConfig)\n );\n }\n\n this._resource =\n this._serviceName === undefined\n ? this._resource\n : this._resource.merge(\n new Resource({\n [SEMRESATTRS_SERVICE_NAME]: this._serviceName,\n })\n );\n\n const spanProcessors = this._tracerProviderConfig\n ? this._tracerProviderConfig.spanProcessors\n : getSpanProcessorsFromEnv();\n\n // If the Provider is configured with Env Exporters, we need to check if the SDK had any manual configurations and set them here\n this._tracerProvider = new NodeTracerProvider({\n ...this._configuration,\n resource: this._resource,\n mergeResourceWithDefaults: this._mergeResourceWithDefaults,\n spanProcessors,\n });\n\n // Only register if there is a span processor\n if (spanProcessors.length > 0) {\n this._tracerProvider.register({\n contextManager:\n this._tracerProviderConfig?.contextManager ??\n // _tracerProviderConfig may be undefined if trace-specific settings are not provided - fall back to raw config\n this._configuration?.contextManager,\n propagator: this._tracerProviderConfig?.textMapPropagator,\n });\n }\n\n if (this._loggerProviderConfig) {\n const loggerProvider = new LoggerProvider({\n resource: this._resource,\n mergeResourceWithDefaults: this._mergeResourceWithDefaults,\n });\n\n for (const logRecordProcessor of this._loggerProviderConfig\n .logRecordProcessors) {\n loggerProvider.addLogRecordProcessor(logRecordProcessor);\n }\n\n this._loggerProvider = loggerProvider;\n\n logs.setGlobalLoggerProvider(loggerProvider);\n }\n\n const metricReadersFromEnv: MetricReader[] =\n configureMetricProviderFromEnv();\n if (this._meterProviderConfig || metricReadersFromEnv.length > 0) {\n const readers: MetricReader[] = [];\n if (this._meterProviderConfig?.reader) {\n readers.push(this._meterProviderConfig.reader);\n }\n\n if (readers.length === 0) {\n metricReadersFromEnv.forEach((r: MetricReader) => readers.push(r));\n }\n\n const meterProvider = new MeterProvider({\n resource: this._resource,\n views: this._meterProviderConfig?.views ?? [],\n readers: readers,\n mergeResourceWithDefaults: this._mergeResourceWithDefaults,\n });\n\n this._meterProvider = meterProvider;\n metrics.setGlobalMeterProvider(meterProvider);\n\n // TODO: This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/3609\n // If the MeterProvider is not yet registered when instrumentations are registered, all metrics are dropped.\n // This code is obsolete once https://github.com/open-telemetry/opentelemetry-js/issues/3622 is implemented.\n for (const instrumentation of this._instrumentations) {\n instrumentation.setMeterProvider(metrics.getMeterProvider());\n }\n }\n }\n\n public shutdown(): Promise<void> {\n const promises: Promise<unknown>[] = [];\n if (this._tracerProvider) {\n promises.push(this._tracerProvider.shutdown());\n }\n if (this._loggerProvider) {\n promises.push(this._loggerProvider.shutdown());\n }\n if (this._meterProvider) {\n promises.push(this._meterProvider.shutdown());\n }\n\n return (\n Promise.all(promises)\n // return void instead of the array from Promise.all\n .then(() => {})\n );\n }\n\n private configureLoggerProviderFromEnv(): void {\n const logExportersList = process.env.OTEL_LOGS_EXPORTER ?? '';\n const enabledExporters = filterBlanksAndNulls(logExportersList.split(','));\n\n if (enabledExporters.length === 0) {\n diag.info('OTEL_LOGS_EXPORTER is empty. Using default otlp exporter.');\n enabledExporters.push('otlp');\n }\n\n if (enabledExporters.includes('none')) {\n diag.info(\n `OTEL_LOGS_EXPORTER contains \"none\". Logger provider will not be initialized.`\n );\n return;\n }\n\n const exporters: LogRecordExporter[] = [];\n\n enabledExporters.forEach(exporter => {\n if (exporter === 'otlp') {\n const protocol = (\n process.env.OTEL_EXPORTER_OTLP_LOGS_PROTOCOL ??\n process.env.OTEL_EXPORTER_OTLP_PROTOCOL\n )?.trim();\n\n switch (protocol) {\n case 'grpc':\n exporters.push(new OTLPGrpcLogExporter());\n break;\n case 'http/json':\n exporters.push(new OTLPHttpLogExporter());\n break;\n case 'http/protobuf':\n exporters.push(new OTLPProtoLogExporter());\n break;\n case undefined:\n case '':\n exporters.push(new OTLPProtoLogExporter());\n break;\n default:\n diag.warn(\n `Unsupported OTLP logs protocol: \"${protocol}\". Using http/protobuf.`\n );\n exporters.push(new OTLPProtoLogExporter());\n }\n } else if (exporter === 'console') {\n exporters.push(new ConsoleLogRecordExporter());\n } else {\n diag.warn(\n `Unsupported OTEL_LOGS_EXPORTER value: \"${exporter}\". Supported values are: otlp, console, none.`\n );\n }\n });\n\n if (exporters.length > 0) {\n this._loggerProviderConfig = {\n logRecordProcessors: exporters.map(exporter => {\n if (exporter instanceof ConsoleLogRecordExporter) {\n return new SimpleLogRecordProcessor(exporter);\n } else {\n return new BatchLogRecordProcessor(exporter);\n }\n }),\n };\n }\n }\n}\n"]}
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.56.0";
1
+ export declare const VERSION = "0.57.1";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -17,5 +17,5 @@
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.VERSION = void 0;
19
19
  // this is autogenerated file, see scripts/version-update.js
20
- exports.VERSION = '0.56.0';
20
+ exports.VERSION = '0.57.1';
21
21
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.56.0';\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.57.1';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opentelemetry/sdk-node",
3
- "version": "0.56.0",
3
+ "version": "0.57.1",
4
4
  "description": "OpenTelemetry SDK for Node.js",
5
5
  "main": "build/src/index.js",
6
6
  "types": "build/src/index.d.ts",
@@ -44,21 +44,25 @@
44
44
  "access": "public"
45
45
  },
46
46
  "dependencies": {
47
- "@opentelemetry/api-logs": "0.56.0",
48
- "@opentelemetry/core": "1.29.0",
49
- "@opentelemetry/exporter-logs-otlp-grpc": "0.56.0",
50
- "@opentelemetry/exporter-logs-otlp-http": "0.56.0",
51
- "@opentelemetry/exporter-logs-otlp-proto": "0.56.0",
52
- "@opentelemetry/exporter-trace-otlp-grpc": "0.56.0",
53
- "@opentelemetry/exporter-trace-otlp-http": "0.56.0",
54
- "@opentelemetry/exporter-trace-otlp-proto": "0.56.0",
55
- "@opentelemetry/exporter-zipkin": "1.29.0",
56
- "@opentelemetry/instrumentation": "0.56.0",
57
- "@opentelemetry/resources": "1.29.0",
58
- "@opentelemetry/sdk-logs": "0.56.0",
59
- "@opentelemetry/sdk-metrics": "1.29.0",
60
- "@opentelemetry/sdk-trace-base": "1.29.0",
61
- "@opentelemetry/sdk-trace-node": "1.29.0",
47
+ "@opentelemetry/api-logs": "0.57.1",
48
+ "@opentelemetry/core": "1.30.1",
49
+ "@opentelemetry/exporter-logs-otlp-grpc": "0.57.1",
50
+ "@opentelemetry/exporter-logs-otlp-http": "0.57.1",
51
+ "@opentelemetry/exporter-logs-otlp-proto": "0.57.1",
52
+ "@opentelemetry/exporter-metrics-otlp-grpc": "0.57.1",
53
+ "@opentelemetry/exporter-metrics-otlp-http": "0.57.1",
54
+ "@opentelemetry/exporter-metrics-otlp-proto": "0.57.1",
55
+ "@opentelemetry/exporter-prometheus": "0.57.1",
56
+ "@opentelemetry/exporter-trace-otlp-grpc": "0.57.1",
57
+ "@opentelemetry/exporter-trace-otlp-http": "0.57.1",
58
+ "@opentelemetry/exporter-trace-otlp-proto": "0.57.1",
59
+ "@opentelemetry/exporter-zipkin": "1.30.1",
60
+ "@opentelemetry/instrumentation": "0.57.1",
61
+ "@opentelemetry/resources": "1.30.1",
62
+ "@opentelemetry/sdk-logs": "0.57.1",
63
+ "@opentelemetry/sdk-metrics": "1.30.1",
64
+ "@opentelemetry/sdk-trace-base": "1.30.1",
65
+ "@opentelemetry/sdk-trace-node": "1.30.1",
62
66
  "@opentelemetry/semantic-conventions": "1.28.0"
63
67
  },
64
68
  "peerDependencies": {
@@ -66,8 +70,8 @@
66
70
  },
67
71
  "devDependencies": {
68
72
  "@opentelemetry/api": "1.9.0",
69
- "@opentelemetry/context-async-hooks": "1.29.0",
70
- "@opentelemetry/exporter-jaeger": "1.29.0",
73
+ "@opentelemetry/context-async-hooks": "1.30.1",
74
+ "@opentelemetry/exporter-jaeger": "1.30.1",
71
75
  "@types/mocha": "10.0.10",
72
76
  "@types/node": "18.6.5",
73
77
  "@types/semver": "7.5.8",
@@ -83,5 +87,5 @@
83
87
  },
84
88
  "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-sdk-node",
85
89
  "sideEffects": false,
86
- "gitHead": "85dcbc7c55f002837f1bf1bf01145dbb34a55b40"
90
+ "gitHead": "cbc912d67bda462ca00449d7ce7b80052c20a4fc"
87
91
  }