@codefresh-io/cf-telemetry 3.12.0-alpha.2 → 4.0.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.
package/README.md CHANGED
@@ -23,24 +23,11 @@ import '@codefresh-io/cf-telemetry/init'
23
23
  // ↓ Keep one blank line below to prevent automatic import reordering
24
24
  ```
25
25
 
26
- ### Lifecycle notices
26
+ ### Lifecycle notice
27
27
 
28
- > [!IMPORTANT]
29
- > Please read this section carefully to understand how this library handles application lifecycle events and how it affects application lifecycle.
28
+ This library only registers terminate listener `beforeExit` event to gracefully terminate instrumentation, which may include flushing logs, metrics, and profiles.
30
29
 
31
- This library registers listeners for `SIGINT`, `SIGTERM` and `beforeExit` events to gracefully terminate instrumentation, which may include flushing logs, metrics, and profiles.
32
-
33
- #### Effect on application lifecycle
34
-
35
- As this library registers listeners for `SIGINT` and `SIGTERM` events, Node.js' default handlers for such signals will be removed: Node.js will no longer exit on non-Windows platforms on such signals. [More details in the doc](https://nodejs.org/api/process.html#signal-events).
36
-
37
- **Please make sure you add your own exit handlers for these signals.**
38
-
39
- #### Instrumentation shutdown
40
-
41
- None of the events above happens if `proces.exit()` is called directly. This means that if you call `process.exit()` in your application, the library will not be able to gracefully terminate instrumentation. This may lead to loss of logs, metrics, and other telemetry data.
42
-
43
- Please ensure calling `terminate()` method of this library before calling `process.exit()` to ensure graceful termination of instrumentation.
30
+ Please ensure calling `terminate()` method of this library before calling `process.exit()`, or to include it in your application logic that handles `SIGINT`/`SIGTERM` signals, to ensure graceful termination of instrumentation.
44
31
 
45
32
  ```TS
46
33
  import { terminate } from '@codefresh-io/cf-telemetry/init'
@@ -50,6 +37,19 @@ await terminate(); // Ensure graceful termination of instrumentation
50
37
  process.exit(0); // Now it's safe to exit the process
51
38
  ```
52
39
 
40
+ ```TS
41
+ import { terminate } from '@codefresh-io/cf-telemetry/init'
42
+
43
+ process.on('SIGINT', async () => {
44
+ await terminate(); // Ensure graceful termination of instrumentation
45
+ process.exit(130); // Now it's safe to exit the process
46
+ });
47
+ process.on('SIGTERM', async () => {
48
+ await terminate(); // Ensure graceful termination of instrumentation
49
+ process.exit(143); // Now it's safe to exit the process
50
+ });
51
+ ```
52
+
53
53
  ## Environment variables
54
54
 
55
55
  | Variable | Required | Default value | Description |
package/dist/init.js CHANGED
@@ -82,8 +82,6 @@ const terminate = async (signal) => {
82
82
  }
83
83
  };
84
84
  exports.terminate = terminate;
85
- process.on('SIGINT', exports.terminate);
86
- process.on('SIGTERM', exports.terminate);
87
85
  process.once('beforeExit', exports.terminate);
88
86
  (0, exports.init)();
89
87
  //# sourceMappingURL=init.js.map
package/dist/init.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6BAA6B;AAC7B,6DAA+C;AAC/C,6BAA6B;AAE7B,mDAA+C;AAC/C,6CAA+B;AAC/B,iEAAmD;AACnD,qDAAuC;AAEvC,IAAI,aAAa,GAAG,KAAK,CAAC;AAE1B;;;GAGG;AACI,MAAM,IAAI,GAAG,GAAS,EAAE;IAC7B,IAAI,aAAa;QAAE,OAAO;IAE1B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,4BAAY,CAAC,WAAW,CAAC,CAAC;QACzD,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,4BAAY,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5C,aAAa,GAAG,IAAI,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;AACH,CAAC,CAAC;AAhBW,QAAA,IAAI,QAgBf;AAEK,MAAM,SAAS,GAAG,KAAK,EAAE,MAAuB,EAAiB,EAAE;IACxE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,4BAAY,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvB,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrD,aAAa,GAAG,KAAK,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,SAAS,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,SAAS,CAAC,CAAC;IACrE,CAAC;AACH,CAAC,CAAC;AAbW,QAAA,SAAS,aAapB;AAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAS,CAAC,CAAC;AAChC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAS,CAAC,CAAC;AACjC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,iBAAS,CAAC,CAAC;AAEtC,IAAA,YAAI,GAAE,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6BAA6B;AAC7B,6DAA+C;AAC/C,6BAA6B;AAE7B,mDAA+C;AAC/C,6CAA+B;AAC/B,iEAAmD;AACnD,qDAAuC;AAEvC,IAAI,aAAa,GAAG,KAAK,CAAC;AAE1B;;;GAGG;AACI,MAAM,IAAI,GAAG,GAAS,EAAE;IAC7B,IAAI,aAAa;QAAE,OAAO;IAE1B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,4BAAY,CAAC,WAAW,CAAC,CAAC;QACzD,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,4BAAY,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5C,aAAa,GAAG,IAAI,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;AACH,CAAC,CAAC;AAhBW,QAAA,IAAI,QAgBf;AAEK,MAAM,SAAS,GAAG,KAAK,EAAE,MAAuB,EAAiB,EAAE;IACxE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,4BAAY,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvB,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrD,aAAa,GAAG,KAAK,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,SAAS,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,SAAS,CAAC,CAAC;IACrE,CAAC;AACH,CAAC,CAAC;AAbW,QAAA,SAAS,aAapB;AAEF,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,iBAAS,CAAC,CAAC;AAEtC,IAAA,YAAI,GAAE,CAAC"}
@@ -1,6 +1,4 @@
1
1
  export declare const config: {
2
2
  readonly enabled: boolean;
3
3
  readonly allowHttpInstrumentation: boolean;
4
- readonly enableSpanForEventLoopBlock: boolean;
5
- readonly spanForEventLoopBlockThresholdMs: number;
6
4
  };
@@ -4,7 +4,5 @@ exports.config = void 0;
4
4
  exports.config = {
5
5
  enabled: process.env['CF_TELEMETRY_OTEL_ENABLE'] === 'true',
6
6
  allowHttpInstrumentation: process.env['CF_TELEMETRY_OTEL_ALLOW_HTTP_INSTRUMENTATION'] === 'true',
7
- enableSpanForEventLoopBlock: process.env['CF_TELEMETRY_OTEL_SPAN_FOR_EVENT_LOOP_BLOCK_ENABLE'] === 'true',
8
- spanForEventLoopBlockThresholdMs: Number.parseInt(process.env['CF_TELEMETRY_OTEL_SPAN_FOR_EVENT_LOOP_BLOCK_THRESHOLD_MS'] ?? '50', 10),
9
7
  };
10
8
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/otel/config.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IACpB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,KAAK,MAAM;IAC3D,wBAAwB,EAAE,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,KAAK,MAAM;IAChG,2BAA2B,EAAE,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,KAAK,MAAM;IACzG,gCAAgC,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;CAC9H,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/otel/config.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IACpB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,KAAK,MAAM;IAC3D,wBAAwB,EAAE,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,KAAK,MAAM;CACxF,CAAC"}
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.terminate = exports.init = void 0;
4
4
  const config_1 = require("../config");
5
- const event_loop_block_tracker_1 = require("./event-loop-block-tracker");
6
5
  const sdk_1 = require("./sdk");
7
6
  const track_unhandled_errors_1 = require("./track-unhandled-errors");
8
7
  const init = (logger) => {
@@ -16,12 +15,6 @@ const init = (logger) => {
16
15
  logger.debug('OpenTelemetry configuration', config_1.config);
17
16
  sdk_1.sdk.start();
18
17
  (0, track_unhandled_errors_1.trackUnhandledErrors)(logger);
19
- if (config_1.config.enableSpanForEventLoopBlock) {
20
- logger.info(`Enabling span creation on event loop blockage above ${config_1.config.spanForEventLoopBlockThresholdMs}ms`);
21
- logger.warn('Span creation on event loop blockage is not intended for production use as it causes significant performance overhead.'
22
- + ' Use it only for debugging purposes. Set CF_TELEMETRY_OTEL_SPAN_FOR_EVENT_LOOP_BLOCK_ENABLE=false to disable it');
23
- event_loop_block_tracker_1.eventLoopBlockTracker.enable();
24
- }
25
18
  logger.info('OpenTelemetry initialized');
26
19
  }
27
20
  catch (exception) {
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/otel/sdk/init.ts"],"names":[],"mappings":";;;AACA,sCAAmC;AACnC,yEAAmE;AACnE,+BAA4B;AAC5B,qEAAgE;AAEzD,MAAM,IAAI,GAAG,CAAC,MAAc,EAAQ,EAAE;IAC3C,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC;QACH,IAAI,CAAC,eAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;YACzF,OAAO;QACT,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC1C,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,eAAM,CAAC,CAAC;QACpD,SAAG,CAAC,KAAK,EAAE,CAAC;QACZ,IAAA,6CAAoB,EAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,eAAM,CAAC,2BAA2B,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,uDAAuD,eAAM,CAAC,gCAAgC,IAAI,CAAC,CAAC;YAChH,MAAM,CAAC,IAAI,CAAC,wHAAwH;kBAChI,iHAAiH,CAAC,CAAC;YACvH,gDAAqB,CAAC,MAAM,EAAE,CAAC;QACjC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,SAAS,EAAE,CAAC;QACnB,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,SAAS,CAAC,CAAC;IAChE,CAAC;AACH,CAAC,CAAC;AArBW,QAAA,IAAI,QAqBf;AAEK,MAAM,SAAS,GAAG,KAAK,EAAE,MAAc,EAAiB,EAAE;IAC/D,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACzC,MAAM,SAAG,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,SAAS,EAAE,CAAC;QACnB,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,SAAS,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC,CAAC;AATW,QAAA,SAAS,aASpB"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/otel/sdk/init.ts"],"names":[],"mappings":";;;AACA,sCAAmC;AACnC,+BAA4B;AAC5B,qEAAgE;AAEzD,MAAM,IAAI,GAAG,CAAC,MAAc,EAAQ,EAAE;IAC3C,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC;QACH,IAAI,CAAC,eAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;YACzF,OAAO;QACT,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC1C,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,eAAM,CAAC,CAAC;QACpD,SAAG,CAAC,KAAK,EAAE,CAAC;QACZ,IAAA,6CAAoB,EAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,SAAS,EAAE,CAAC;QACnB,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,SAAS,CAAC,CAAC;IAChE,CAAC;AACH,CAAC,CAAC;AAfW,QAAA,IAAI,QAef;AAEK,MAAM,SAAS,GAAG,KAAK,EAAE,MAAc,EAAiB,EAAE;IAC/D,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACzC,MAAM,SAAG,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,SAAS,EAAE,CAAC;QACnB,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,SAAS,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC,CAAC;AATW,QAAA,SAAS,aASpB"}
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sdk = void 0;
4
4
  const auto_instrumentations_node_1 = require("@opentelemetry/auto-instrumentations-node");
5
5
  const baggage_span_processor_1 = require("@opentelemetry/baggage-span-processor");
6
- const exporter_trace_otlp_http_1 = require("@opentelemetry/exporter-trace-otlp-http");
7
6
  const exporter_trace_otlp_grpc_1 = require("@opentelemetry/exporter-trace-otlp-grpc");
8
7
  const resources_1 = require("@opentelemetry/resources");
9
8
  const sdk_node_1 = require("@opentelemetry/sdk-node");
@@ -13,9 +12,6 @@ const global_config_1 = require("../../global-config");
13
12
  const config_1 = require("../config");
14
13
  const disable_http_instrumentation_1 = require("./disable-http-instrumentation");
15
14
  const instrumentation_configs_1 = require("./instrumentation-configs");
16
- const OTLPTraceExporter = process.env['OTEL_EXPORTER_OTLP_PROTOCOL'] === 'grpc'
17
- ? exporter_trace_otlp_grpc_1.OTLPTraceExporter
18
- : exporter_trace_otlp_http_1.OTLPTraceExporter;
19
15
  /**
20
16
  * HTTP instrumentation is disabled by default because of potential security issues.
21
17
  * In particular, it adds span attributes with request query parameters (`url.full` and `url.query`),
@@ -31,7 +27,7 @@ exports.sdk = new sdk_node_1.NodeSDK({
31
27
  [semantic_conventions_1.ATTR_SERVICE_VERSION]: global_config_1.globalConfig.serviceVersion,
32
28
  }),
33
29
  spanProcessors: [
34
- new sdk_trace_base_1.BatchSpanProcessor(new OTLPTraceExporter()),
30
+ new sdk_trace_base_1.BatchSpanProcessor(new exporter_trace_otlp_grpc_1.OTLPTraceExporter()),
35
31
  // It copies baggage info from parent span to child span
36
32
  new baggage_span_processor_1.BaggageSpanProcessor(baggage_span_processor_1.ALLOW_ALL_BAGGAGE_KEYS),
37
33
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../../src/otel/sdk/sdk.ts"],"names":[],"mappings":";;;AAAA,0FAAwF;AACxF,kFAAqG;AACrG,sFAAqG;AACrG,sFAAqG;AACrG,wDAAkE;AAClE,sDAAkD;AAClD,kEAAmE;AACnE,8EAA8F;AAC9F,uDAAmD;AACnD,sCAAmC;AACnC,iFAA4E;AAC5E,uEAAmE;AAEnE,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,KAAK,MAAM;IAC7E,CAAC,CAAC,4CAAqB;IACvB,CAAC,CAAC,4CAAqB,CAAC;AAE1B;;;;GAIG;AACH,IAAI,eAAM,CAAC,wBAAwB,KAAK,IAAI;IAAE,IAAA,yDAA0B,GAAE,CAAC;AAE9D,QAAA,GAAG,GAAG,IAAI,kBAAO,CAAC;IAC7B,WAAW,EAAE,4BAAY,CAAC,WAAW;IACrC,mBAAmB,EAAE,IAAI;IACzB,QAAQ,EAAE,IAAA,kCAAsB,EAAC;QAC/B,CAAC,wCAAiB,CAAC,EAAE,4BAAY,CAAC,WAAW;QAC7C,CAAC,2CAAoB,CAAC,EAAE,4BAAY,CAAC,cAAc;KACpD,CAAC;IACF,cAAc,EAAE;QACd,IAAI,mCAAkB,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAC/C,wDAAwD;QACxD,IAAI,6CAAoB,CAAC,+CAAsB,CAAC;KACjD;IACD,gBAAgB,EAAE,CAAC,IAAA,wDAA2B,EAAC,gDAAsB,CAAC,CAAC;CACxE,CAAC,CAAC"}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../../src/otel/sdk/sdk.ts"],"names":[],"mappings":";;;AAAA,0FAAwF;AACxF,kFAAqG;AACrG,sFAA4E;AAC5E,wDAAkE;AAClE,sDAAkD;AAClD,kEAAmE;AACnE,8EAA8F;AAC9F,uDAAmD;AACnD,sCAAmC;AACnC,iFAA4E;AAC5E,uEAAmE;AAEnE;;;;GAIG;AACH,IAAI,eAAM,CAAC,wBAAwB,KAAK,IAAI;IAAE,IAAA,yDAA0B,GAAE,CAAC;AAE9D,QAAA,GAAG,GAAG,IAAI,kBAAO,CAAC;IAC7B,WAAW,EAAE,4BAAY,CAAC,WAAW;IACrC,mBAAmB,EAAE,IAAI;IACzB,QAAQ,EAAE,IAAA,kCAAsB,EAAC;QAC/B,CAAC,wCAAiB,CAAC,EAAE,4BAAY,CAAC,WAAW;QAC7C,CAAC,2CAAoB,CAAC,EAAE,4BAAY,CAAC,cAAc;KACpD,CAAC;IACF,cAAc,EAAE;QACd,IAAI,mCAAkB,CAAC,IAAI,4CAAiB,EAAE,CAAC;QAC/C,wDAAwD;QACxD,IAAI,6CAAoB,CAAC,+CAAsB,CAAC;KACjD;IACD,gBAAgB,EAAE,CAAC,IAAA,wDAA2B,EAAC,gDAAsB,CAAC,CAAC;CACxE,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codefresh-io/cf-telemetry",
3
- "version": "3.12.0-alpha.2",
3
+ "version": "4.0.0",
4
4
  "exports": {
5
5
  "./init": {
6
6
  "import": "./dist/init.mjs",
@@ -1 +0,0 @@
1
- export declare const eventLoopBlockTracker: import("async_hooks").AsyncHook;
@@ -1,59 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.eventLoopBlockTracker = void 0;
4
- const node_async_hooks_1 = require("node:async_hooks");
5
- const cf_1 = require("../cf");
6
- const config_1 = require("../config");
7
- class EventLoopBlockedError extends Error {
8
- constructor(...args) {
9
- super(...args);
10
- this.name = this.constructor.name;
11
- }
12
- }
13
- const NS_IN_MS = 1e6;
14
- const NS_IN_S = 1e9;
15
- const THRESHOLD_NS = config_1.config.spanForEventLoopBlockThresholdMs * NS_IN_MS;
16
- const SPAN_NAME = 'Event loop blocked';
17
- const cache = new Map();
18
- const tracer = (0, cf_1.getTracer)();
19
- const init = (asyncId, type) => {
20
- cache.set(asyncId, {
21
- type,
22
- stack: new EventLoopBlockedError().stack,
23
- });
24
- };
25
- const destroy = (asyncId) => {
26
- cache.delete(asyncId);
27
- };
28
- const before = (asyncId) => {
29
- const cached = cache.get(asyncId);
30
- if (!cached)
31
- return;
32
- cache.set(asyncId, {
33
- ...cached,
34
- start: process.hrtime(),
35
- });
36
- };
37
- const after = (asyncId) => {
38
- const cached = cache.get(asyncId);
39
- if (!cached)
40
- return;
41
- cache.delete(asyncId);
42
- if (!cached.start)
43
- return;
44
- const [sec, nanosec] = process.hrtime(cached.start);
45
- const diffNs = sec * NS_IN_S + nanosec;
46
- if (diffNs > THRESHOLD_NS) {
47
- const diffMs = diffNs / NS_IN_MS;
48
- const span = tracer.startSpan(SPAN_NAME, {
49
- startTime: new Date(Date.now() - diffMs),
50
- attributes: {
51
- 'nodejs.async.resource.type': cached.type,
52
- 'stacktrace': cached.stack,
53
- },
54
- });
55
- span.end();
56
- }
57
- };
58
- exports.eventLoopBlockTracker = (0, node_async_hooks_1.createHook)({ init, destroy, before, after });
59
- //# sourceMappingURL=event-loop-block-tracker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-loop-block-tracker.js","sourceRoot":"","sources":["../../../src/otel/sdk/event-loop-block-tracker.ts"],"names":[],"mappings":";;;AAAA,uDAA8C;AAC9C,8BAAkC;AAClC,sCAAmC;AAYnC,MAAM,qBAAsB,SAAQ,KAAK;IACvC,YAAY,GAAG,IAAyC;QACtD,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACpC,CAAC;CACF;AAED,MAAM,QAAQ,GAAG,GAAG,CAAC;AACrB,MAAM,OAAO,GAAG,GAAG,CAAC;AACpB,MAAM,YAAY,GAAG,eAAM,CAAC,gCAAgC,GAAG,QAAQ,CAAC;AACxE,MAAM,SAAS,GAAG,oBAAoB,CAAC;AAEvC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAiC,CAAC;AACvD,MAAM,MAAM,GAAG,IAAA,cAAS,GAAE,CAAC;AAE3B,MAAM,IAAI,GAAG,CAAC,OAAmB,EAAE,IAAY,EAAQ,EAAE;IACvD,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE;QACjB,IAAI;QACJ,KAAK,EAAE,IAAI,qBAAqB,EAAE,CAAC,KAAK;KACzC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,OAAmB,EAAQ,EAAE;IAC5C,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,OAAmB,EAAQ,EAAE;IAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAElC,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE;QACjB,GAAG,MAAM;QACT,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE;KACxB,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,CAAC,OAAmB,EAAQ,EAAE;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAElC,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEtB,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO;IAE1B,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,GAAG,GAAG,OAAO,GAAG,OAAO,CAAC;IACvC,IAAI,MAAM,GAAG,YAAY,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;YACxC,UAAU,EAAE;gBACV,4BAA4B,EAAE,MAAM,CAAC,IAAI;gBACzC,YAAY,EAAE,MAAM,CAAC,KAAK;aAC3B;SACF,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,EAAE,CAAC;IACb,CAAC;AACH,CAAC,CAAC;AAEW,QAAA,qBAAqB,GAAG,IAAA,6BAAU,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC"}