@codefresh-io/cf-telemetry 2.0.0-alpha.23 → 2.0.0-alpha.24

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
@@ -4,20 +4,28 @@ Base utils for monitoring.
4
4
 
5
5
  Includes:
6
6
 
7
- * [Logger](./src/logger/README.md).
7
+ * [Logs](./src/logs/README.md).
8
+ * [MongoDB](./src/metrics/mongodb/README.md) client monitoring.
9
+ * [OpenTelemetry](./src/otel/README.md) auto instrumentation.
8
10
  * [Prometheus](./src/metrics/prometheus/README.md) server and custom metrics.
9
- * [MongoDB](./src//metrics/mongodb/README.md) client monitoring.
10
11
  * [Pyroscope](./src/profiles/README.md) to profile CPU and memory.
11
12
 
12
13
  ## Usage
13
14
 
14
- Call `init()` function at the very bootstrap of the app.
15
+ Add `import '@codefresh-io/cf-telemetry/init'` statement at the very beginning of the application lifecycle.
15
16
 
16
17
  Please refer to the separate docs above for further configuration and usage details.
17
18
 
18
19
  ```TS
19
20
  // index.ts
20
- import { init } from '@codefresh-io/cf-telemetry';
21
-
22
- await init();
21
+ // Should be imported first
22
+ import '@codefresh-io/cf-telemetry/init'
23
+ // ↓ Keep one blank line below to prevent automatic import reordering
23
24
  ```
25
+
26
+ ## Environment variables
27
+
28
+ | Variable | Required | Default value | Description |
29
+ |------------------------| -------- |-------------------------------------------------------------------|---------------------------------------------|
30
+ | `CF_TELEMETRY_SERVICE_NAME` | optional | `unknown_service:node` | Sets service name for OpenTelemetry and Pyroscope. |
31
+ | `CF_TELEMETRY_SERVICE_VERSION` | optional | `unknown` | Sets service version for OpenTelemetry and Pyroscope. |
@@ -1,4 +1,4 @@
1
1
  export declare const globalConfig: {
2
2
  readonly serviceName: string;
3
- readonly serviceVersion: string | undefined;
3
+ readonly serviceVersion: string;
4
4
  };
@@ -4,6 +4,6 @@ exports.globalConfig = void 0;
4
4
  /* eslint-disable @typescript-eslint/prefer-nullish-coalescing */
5
5
  exports.globalConfig = {
6
6
  serviceName: process.env['CF_TELEMETRY_SERVICE_NAME'] || 'unknown_service:node',
7
- serviceVersion: process.env['CF_TELEMETRY_SERVICE_VERSION'],
7
+ serviceVersion: process.env['CF_TELEMETRY_SERVICE_VERSION'] || 'unknown',
8
8
  };
9
9
  //# sourceMappingURL=global-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"global-config.js","sourceRoot":"","sources":["../src/global-config.ts"],"names":[],"mappings":";;;AAAA,iEAAiE;AACpD,QAAA,YAAY,GAAG;IAC1B,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,IAAI,sBAAsB;IAC/E,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;CACnD,CAAC"}
1
+ {"version":3,"file":"global-config.js","sourceRoot":"","sources":["../src/global-config.ts"],"names":[],"mappings":";;;AAAA,iEAAiE;AACpD,QAAA,YAAY,GAAG;IAC1B,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,IAAI,sBAAsB;IAC/E,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,IAAI,SAAS;CAChE,CAAC"}
@@ -7,12 +7,9 @@ exports.register = exports.client = void 0;
7
7
  const prom_client_1 = __importDefault(require("prom-client"));
8
8
  exports.client = prom_client_1.default;
9
9
  const config_1 = require("./config");
10
- const DEFAULT_LABELS = {};
11
10
  const register = prom_client_1.default.register;
12
11
  exports.register = register;
13
- register.setDefaultLabels(DEFAULT_LABELS);
14
- if (config_1.config.useOpenMetrics) {
15
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
- (prom_client_1.default.register).setContentType(prom_client_1.default.Registry.OPENMETRICS_CONTENT_TYPE);
17
- }
12
+ register.setDefaultLabels(config_1.config.defaultLabels);
13
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
+ (prom_client_1.default.register).setContentType(config_1.config.contentType);
18
15
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/metrics/prometheus/client.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAiC;AAc/B,iBAdK,qBAAM,CAcL;AAbR,qCAAkC;AAElC,MAAM,cAAc,GAA2B,EAAE,CAAC;AAElD,MAAM,QAAQ,GAAG,qBAAM,CAAC,QAAQ,CAAC;AAU/B,4BAAQ;AATV,QAAQ,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;AAE1C,IAAI,eAAM,CAAC,cAAc,EAAE,CAAC;IAC1B,8DAA8D;IAC9D,CAAC,qBAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,qBAAM,CAAC,QAAQ,CAAC,wBAA+B,CAAC,CAAC;AACpF,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/metrics/prometheus/client.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAiC;AAS/B,iBATK,qBAAM,CASL;AARR,qCAAkC;AAElC,MAAM,QAAQ,GAAG,qBAAM,CAAC,QAAQ,CAAC;AAO/B,4BAAQ;AANV,QAAQ,CAAC,gBAAgB,CAAC,eAAM,CAAC,aAAa,CAAC,CAAC;AAChD,8DAA8D;AAC9D,CAAC,qBAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,eAAM,CAAC,WAAkB,CAAC,CAAC"}
@@ -3,5 +3,6 @@ export declare const config: {
3
3
  readonly shouldCollectProcessMetrics: boolean;
4
4
  readonly host: string;
5
5
  readonly port: number;
6
- readonly useOpenMetrics: boolean;
6
+ readonly contentType: "text/plain; version=0.0.4; charset=utf-8" | "application/openmetrics-text; version=1.0.0; charset=utf-8";
7
+ readonly defaultLabels: {};
7
8
  };
@@ -1,11 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.config = void 0;
4
+ const prom_client_1 = require("prom-client");
5
+ const getContentType = () => {
6
+ const ContentType = {
7
+ prometheus: prom_client_1.Registry.PROMETHEUS_CONTENT_TYPE,
8
+ openmetrics: prom_client_1.Registry.OPENMETRICS_CONTENT_TYPE,
9
+ };
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ const contentType = process.env['CF_TELEMETRY_PROMETHEUS_CONTENT_TYPE'] ?? ContentType.openmetrics;
12
+ const knownTypes = Object.keys(ContentType);
13
+ if (!knownTypes.includes(contentType)) {
14
+ throw new Error(`Invalid value in CF_TELEMETRY_PROMETHEUS_CONTENT_TYPE: "${contentType}". Allowed values: "${knownTypes.join('|')}"`);
15
+ }
16
+ return ContentType[contentType];
17
+ };
4
18
  exports.config = {
5
19
  enabled: process.env['CF_TELEMETRY_PROMETHEUS_ENABLE'] === 'true',
6
20
  shouldCollectProcessMetrics: process.env['CF_TELEMETRY_PROMETHEUS_ENABLE_PROCESS_METRICS'] === 'true',
7
21
  host: process.env['CF_TELEMETRY_PROMETHEUS_HOST'] ?? '0.0.0.0',
8
22
  port: Number.parseInt(process.env['CF_TELEMETRY_PROMETHEUS_PORT'] ?? '9100', 10),
9
- useOpenMetrics: process.env['CF_TELEMETRY_PROMETHEUS_USE_OPEN_METRICS'] === 'true',
23
+ contentType: getContentType(),
24
+ defaultLabels: {},
10
25
  };
11
26
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/metrics/prometheus/config.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IACpB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,KAAK,MAAM;IACjE,2BAA2B,EAAE,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,KAAK,MAAM;IACrG,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,IAAI,SAAS;IAC9D,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,IAAI,MAAM,EAAE,EAAE,CAAC;IAChF,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,KAAK,MAAM;CAC1E,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/metrics/prometheus/config.ts"],"names":[],"mappings":";;;AAAA,6CAAuC;AAEvC,MAAM,cAAc,GAAG,GAAG,EAAE;IAC1B,MAAM,WAAW,GAAG;QAClB,UAAU,EAAE,sBAAQ,CAAC,uBAAuB;QAC5C,WAAW,EAAE,sBAAQ,CAAC,wBAAwB;KACtC,CAAC;IACX,8DAA8D;IAC9D,MAAM,WAAW,GAA6B,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAQ,IAAI,WAAW,CAAC,WAAW,CAAC;IACpI,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,2DAA2D,WAAW,uBAAuB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxI,CAAC;IACD,OAAO,WAAW,CAAC,WAAW,CAAC,CAAC;AAClC,CAAC,CAAC;AAEW,QAAA,MAAM,GAAG;IACpB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,KAAK,MAAM;IACjE,2BAA2B,EAAE,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,KAAK,MAAM;IACrG,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,IAAI,SAAS;IAC9D,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,IAAI,MAAM,EAAE,EAAE,CAAC;IAChF,WAAW,EAAE,cAAc,EAAE;IAC7B,aAAa,EAAE,EAAE;CACT,CAAC"}
@@ -1,6 +1,7 @@
1
1
  export declare const config: {
2
2
  readonly enabled: boolean;
3
3
  readonly config: {
4
- tags: Record<string, string> | undefined;
4
+ appName: string;
5
+ tags: Record<string, string>;
5
6
  };
6
7
  };
@@ -1,18 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.config = void 0;
4
+ const global_config_1 = require("../global-config");
5
+ const getTags = () => {
6
+ const rawTags = process.env['CF_TELEMETRY_PYROSCOPE_TAGS'] ?? '';
7
+ return rawTags.split(',').reduce((acc, pair) => {
8
+ const [key, value] = pair.split('=');
9
+ if (!key || !value)
10
+ return acc;
11
+ acc[key] = value;
12
+ return acc;
13
+ }, {
14
+ service_version: global_config_1.globalConfig.serviceVersion,
15
+ });
16
+ };
4
17
  exports.config = {
5
18
  enabled: process.env['CF_TELEMETRY_PYROSCOPE_ENABLE'] === 'true',
6
19
  config: {
7
- tags: process.env['CF_TELEMETRY_PYROSCOPE_TAGS']
8
- ? process.env['CF_TELEMETRY_PYROSCOPE_TAGS'].split(',').reduce((acc, pair) => {
9
- const [key, value] = pair.split('=');
10
- if (!key || !value)
11
- return acc;
12
- acc[key] = value;
13
- return acc;
14
- }, {})
15
- : undefined,
20
+ appName: process.env['PYROSCOPE_APPLICATION_NAME'] ?? global_config_1.globalConfig.serviceName,
21
+ tags: getTags(),
16
22
  },
17
23
  };
18
24
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/profiles/config.ts"],"names":[],"mappings":";;;AAEa,QAAA,MAAM,GAAG;IACpB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,KAAK,MAAM;IAChE,MAAM,EAAE;QACN,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;YAC9C,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBACzE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACrC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK;oBAAE,OAAO,GAAG,CAAC;gBAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACjB,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAA4B,CAAC;YAClC,CAAC,CAAC,SAAS;KACY;CACnB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/profiles/config.ts"],"names":[],"mappings":";;;AACA,oDAAgD;AAEhD,MAAM,OAAO,GAAG,GAAG,EAAE;IACnB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,EAAE,CAAC;IACjE,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QAC7C,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK;YAAE,OAAO,GAAG,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACjB,OAAO,GAAG,CAAC;IACb,CAAC,EAAE;QACD,eAAe,EAAE,4BAAY,CAAC,cAAc;KACnB,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEW,QAAA,MAAM,GAAG;IACpB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,KAAK,MAAM;IAChE,MAAM,EAAE;QACN,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,IAAI,4BAAY,CAAC,WAAW;QAC9E,IAAI,EAAE,OAAO,EAAE;KACU;CACnB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codefresh-io/cf-telemetry",
3
- "version": "2.0.0-alpha.23",
3
+ "version": "2.0.0-alpha.24",
4
4
  "exports": {
5
5
  "./init": {
6
6
  "import": "./dist/init.mjs",