nestjs-otel 3.0.3 → 4.0.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/.eslintignore +1 -0
- package/.eslintrc.js +27 -0
- package/CHANGELOG.md +34 -0
- package/README.md +15 -23
- package/lib/index.js +5 -1
- package/lib/index.js.map +1 -1
- package/lib/interfaces/index.js +5 -1
- package/lib/interfaces/index.js.map +1 -1
- package/lib/interfaces/opentelemetry-options.interface.d.ts +2 -6
- package/lib/metrics/decorators/common.d.ts +1 -1
- package/lib/metrics/decorators/common.js +12 -7
- package/lib/metrics/decorators/common.js.map +1 -1
- package/lib/metrics/decorators/common.spec.d.ts +1 -0
- package/lib/metrics/decorators/common.spec.js +48 -0
- package/lib/metrics/decorators/common.spec.js.map +1 -0
- package/lib/metrics/decorators/index.js +5 -1
- package/lib/metrics/decorators/index.js.map +1 -1
- package/lib/metrics/metric-data.d.ts +4 -4
- package/lib/metrics/metric-data.js +6 -6
- package/lib/metrics/metric-data.js.map +1 -1
- package/lib/metrics/metric.service.d.ts +4 -4
- package/lib/metrics/metric.service.js +6 -6
- package/lib/metrics/metric.service.js.map +1 -1
- package/lib/middleware/api-metrics.middleware.d.ts +10 -17
- package/lib/middleware/api-metrics.middleware.js +40 -50
- package/lib/middleware/api-metrics.middleware.js.map +1 -1
- package/lib/middleware/index.js +5 -1
- package/lib/middleware/index.js.map +1 -1
- package/lib/opentelemetry-core.module.js +3 -11
- package/lib/opentelemetry-core.module.js.map +1 -1
- package/lib/opentelemetry.module.js.map +1 -1
- package/lib/opentelemetry.utils.d.ts +1 -0
- package/lib/opentelemetry.utils.js +10 -0
- package/lib/opentelemetry.utils.js.map +1 -0
- package/lib/tracing/decorators/span.d.ts +2 -1
- package/lib/tracing/decorators/span.js +10 -7
- package/lib/tracing/decorators/span.js.map +1 -1
- package/lib/tracing/decorators/span.spec.d.ts +1 -1
- package/lib/tracing/decorators/span.spec.js +27 -0
- package/lib/tracing/decorators/span.spec.js.map +1 -1
- package/lib/tracing/trace.service.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +32 -32
- package/tsconfig.json +16 -0
- package/.editorconfig +0 -21
- package/.husky/commit-msg +0 -4
- package/.husky/pre-commit +0 -5
- package/.prettierrc.js +0 -47
- package/.vscode/settings.json +0 -8
- package/REFERENCE.md +0 -5
- package/commitlint.config.js +0 -7
- package/examples/nestjs-fastify-prom-grafana-tempo/.dockerignore +0 -5
- package/examples/nestjs-fastify-prom-grafana-tempo/Dockerfile +0 -17
- package/examples/nestjs-fastify-prom-grafana-tempo/README.md +0 -5
- package/examples/nestjs-fastify-prom-grafana-tempo/data/grafana-data/dashboards/nestjs-otel.json +0 -1838
- package/examples/nestjs-fastify-prom-grafana-tempo/data/grafana-data/dashboards-provisioning/dashboards.yaml +0 -14
- package/examples/nestjs-fastify-prom-grafana-tempo/data/grafana-data/datasources/datasource.yml +0 -60
- package/examples/nestjs-fastify-prom-grafana-tempo/docker-compose.yml +0 -86
- package/examples/nestjs-fastify-prom-grafana-tempo/etc/loki-local.yaml +0 -64
- package/examples/nestjs-fastify-prom-grafana-tempo/etc/prometheus.yaml +0 -27
- package/examples/nestjs-fastify-prom-grafana-tempo/etc/promtail-local.yaml +0 -43
- package/examples/nestjs-fastify-prom-grafana-tempo/etc/tempo-local.yaml +0 -45
- package/examples/nestjs-fastify-prom-grafana-tempo/grafana-dashboard.png +0 -0
- package/examples/nestjs-fastify-prom-grafana-tempo/loki-logs.png +0 -0
- package/examples/nestjs-fastify-prom-grafana-tempo/nest-cli.json +0 -4
- package/examples/nestjs-fastify-prom-grafana-tempo/package.json +0 -85
- package/examples/nestjs-fastify-prom-grafana-tempo/src/app.controller.spec.ts +0 -22
- package/examples/nestjs-fastify-prom-grafana-tempo/src/app.controller.ts +0 -26
- package/examples/nestjs-fastify-prom-grafana-tempo/src/app.module.ts +0 -22
- package/examples/nestjs-fastify-prom-grafana-tempo/src/app.service.ts +0 -8
- package/examples/nestjs-fastify-prom-grafana-tempo/src/logger/logger.module.ts +0 -17
- package/examples/nestjs-fastify-prom-grafana-tempo/src/logger/logger.ts +0 -33
- package/examples/nestjs-fastify-prom-grafana-tempo/src/main.ts +0 -20
- package/examples/nestjs-fastify-prom-grafana-tempo/src/tracing.ts +0 -48
- package/examples/nestjs-fastify-prom-grafana-tempo/test/app.e2e-spec.ts +0 -24
- package/examples/nestjs-fastify-prom-grafana-tempo/test/jest-e2e.json +0 -9
- package/examples/nestjs-fastify-prom-grafana-tempo/tsconfig.build.json +0 -4
- package/examples/nestjs-prom-grafana-tempo/.dockerignore +0 -5
- package/examples/nestjs-prom-grafana-tempo/Dockerfile +0 -17
- package/examples/nestjs-prom-grafana-tempo/README.md +0 -11
- package/examples/nestjs-prom-grafana-tempo/data/grafana-data/dashboards/nestjs-otel.json +0 -1838
- package/examples/nestjs-prom-grafana-tempo/data/grafana-data/dashboards-provisioning/dashboards.yaml +0 -14
- package/examples/nestjs-prom-grafana-tempo/data/grafana-data/datasources/datasource.yml +0 -60
- package/examples/nestjs-prom-grafana-tempo/docker-compose.yml +0 -86
- package/examples/nestjs-prom-grafana-tempo/etc/loki-local.yaml +0 -64
- package/examples/nestjs-prom-grafana-tempo/etc/prometheus.yaml +0 -27
- package/examples/nestjs-prom-grafana-tempo/etc/promtail-local.yaml +0 -43
- package/examples/nestjs-prom-grafana-tempo/etc/tempo-local.yaml +0 -45
- package/examples/nestjs-prom-grafana-tempo/grafana-dashboard.png +0 -0
- package/examples/nestjs-prom-grafana-tempo/loki-logs.png +0 -0
- package/examples/nestjs-prom-grafana-tempo/nest-cli.json +0 -4
- package/examples/nestjs-prom-grafana-tempo/package.json +0 -89
- package/examples/nestjs-prom-grafana-tempo/src/app.controller.spec.ts +0 -22
- package/examples/nestjs-prom-grafana-tempo/src/app.controller.ts +0 -26
- package/examples/nestjs-prom-grafana-tempo/src/app.module.ts +0 -23
- package/examples/nestjs-prom-grafana-tempo/src/app.service.ts +0 -8
- package/examples/nestjs-prom-grafana-tempo/src/logger/logger.module.ts +0 -17
- package/examples/nestjs-prom-grafana-tempo/src/logger/logger.ts +0 -33
- package/examples/nestjs-prom-grafana-tempo/src/main.ts +0 -26
- package/examples/nestjs-prom-grafana-tempo/src/team/team.controller.ts +0 -22
- package/examples/nestjs-prom-grafana-tempo/src/team/team.entity.ts +0 -18
- package/examples/nestjs-prom-grafana-tempo/src/team/team.module.ts +0 -9
- package/examples/nestjs-prom-grafana-tempo/src/team/team.service.ts +0 -30
- package/examples/nestjs-prom-grafana-tempo/src/tracing.ts +0 -48
- package/examples/nestjs-prom-grafana-tempo/test/app.e2e-spec.ts +0 -24
- package/examples/nestjs-prom-grafana-tempo/test/jest-e2e.json +0 -9
- package/examples/nestjs-prom-grafana-tempo/tsconfig.build.json +0 -4
- package/examples/nestjs-prom-grafana-tempo-otel-collector/.dockerignore +0 -5
- package/examples/nestjs-prom-grafana-tempo-otel-collector/Dockerfile +0 -17
- package/examples/nestjs-prom-grafana-tempo-otel-collector/README.md +0 -5
- package/examples/nestjs-prom-grafana-tempo-otel-collector/data/grafana-data/dashboards/nestjs-otel.json +0 -1838
- package/examples/nestjs-prom-grafana-tempo-otel-collector/data/grafana-data/dashboards-provisioning/dashboards.yaml +0 -14
- package/examples/nestjs-prom-grafana-tempo-otel-collector/data/grafana-data/datasources/datasource.yml +0 -60
- package/examples/nestjs-prom-grafana-tempo-otel-collector/docker-compose.yml +0 -101
- package/examples/nestjs-prom-grafana-tempo-otel-collector/etc/loki-local.yaml +0 -64
- package/examples/nestjs-prom-grafana-tempo-otel-collector/etc/otel-collector-config.yaml +0 -37
- package/examples/nestjs-prom-grafana-tempo-otel-collector/etc/prometheus.yaml +0 -28
- package/examples/nestjs-prom-grafana-tempo-otel-collector/etc/promtail-local.yaml +0 -43
- package/examples/nestjs-prom-grafana-tempo-otel-collector/etc/tempo-local.yaml +0 -45
- package/examples/nestjs-prom-grafana-tempo-otel-collector/grafana-dashboard.png +0 -0
- package/examples/nestjs-prom-grafana-tempo-otel-collector/loki-logs.png +0 -0
- package/examples/nestjs-prom-grafana-tempo-otel-collector/nest-cli.json +0 -4
- package/examples/nestjs-prom-grafana-tempo-otel-collector/package.json +0 -86
- package/examples/nestjs-prom-grafana-tempo-otel-collector/src/app.controller.spec.ts +0 -22
- package/examples/nestjs-prom-grafana-tempo-otel-collector/src/app.controller.ts +0 -26
- package/examples/nestjs-prom-grafana-tempo-otel-collector/src/app.module.ts +0 -22
- package/examples/nestjs-prom-grafana-tempo-otel-collector/src/app.service.ts +0 -8
- package/examples/nestjs-prom-grafana-tempo-otel-collector/src/logger/logger.module.ts +0 -17
- package/examples/nestjs-prom-grafana-tempo-otel-collector/src/logger/logger.ts +0 -33
- package/examples/nestjs-prom-grafana-tempo-otel-collector/src/main.ts +0 -13
- package/examples/nestjs-prom-grafana-tempo-otel-collector/src/tracing.ts +0 -54
- package/examples/nestjs-prom-grafana-tempo-otel-collector/test/app.e2e-spec.ts +0 -24
- package/examples/nestjs-prom-grafana-tempo-otel-collector/test/jest-e2e.json +0 -9
- package/examples/nestjs-prom-grafana-tempo-otel-collector/tsconfig.build.json +0 -4
- package/src/interfaces/opentelemetry-options.interface.ts +0 -59
- package/src/metrics/decorators/common.ts +0 -52
- package/src/metrics/decorators/counter.ts +0 -17
- package/src/metrics/decorators/histogram.ts +0 -10
- package/src/metrics/decorators/observable.ts +0 -28
- package/src/metrics/injector.ts +0 -14
- package/src/metrics/metric-data.ts +0 -116
- package/src/metrics/metric.service.ts +0 -48
- package/src/metrics/utils.spec.ts +0 -9
- package/src/metrics/utils.ts +0 -6
- package/src/middleware/api-metrics.middleware.ts +0 -174
- package/src/opentelemetry-core.module.ts +0 -175
- package/src/opentelemetry.constants.ts +0 -2
- package/src/opentelemetry.module.ts +0 -34
- package/src/tracing/decorators/span.spec.ts +0 -91
- package/src/tracing/decorators/span.ts +0 -42
- package/src/tracing/trace.service.ts +0 -17
package/.eslintignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
examples/**/*.js
|
package/.eslintrc.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
extends: ['airbnb-base', 'airbnb-typescript/base'],
|
|
3
|
+
parserOptions: {
|
|
4
|
+
project: './tsconfig.json',
|
|
5
|
+
createDefaultProgram: true,
|
|
6
|
+
},
|
|
7
|
+
ignorePatterns: ['**/examples/**/*', 'lib/**/*'],
|
|
8
|
+
rules: {
|
|
9
|
+
'import/prefer-default-export': 'off',
|
|
10
|
+
'import/no-cycle': 'off',
|
|
11
|
+
'no-restricted-syntax': [
|
|
12
|
+
'error',
|
|
13
|
+
'ForInStatement',
|
|
14
|
+
'LabeledStatement',
|
|
15
|
+
'WithStatement',
|
|
16
|
+
],
|
|
17
|
+
'no-unused-vars': 'off',
|
|
18
|
+
'@typescript-eslint/no-unused-vars': 'off',
|
|
19
|
+
'arrow-parens': 'off',
|
|
20
|
+
'import/no-unresolved': 'off',
|
|
21
|
+
'new-cap': 'off',
|
|
22
|
+
'class-methods-use-this': 'off',
|
|
23
|
+
'no-case-declarations': 'off',
|
|
24
|
+
'no-promise-executor-return': 'off',
|
|
25
|
+
'no-unsafe-optional-chaining': 'off',
|
|
26
|
+
},
|
|
27
|
+
};
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,39 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
### [4.0.1](https://www.github.com/pragmaticivan/nestjs-otel/compare/v4.0.0...v4.0.1) (2022-08-29)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* bump nestjs requirement to 9.x ([24cde7c](https://www.github.com/pragmaticivan/nestjs-otel/commit/24cde7c7da4243288d1b42b6aeddb109b7353aa2))
|
|
9
|
+
|
|
10
|
+
## [4.0.0](https://www.github.com/pragmaticivan/nestjs-otel/compare/v3.0.4...v4.0.0) (2022-08-29)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### ⚠ BREAKING CHANGES
|
|
14
|
+
|
|
15
|
+
* support latest metric sdk
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* **build:** update dependencies ([c2f8b7b](https://www.github.com/pragmaticivan/nestjs-otel/commit/c2f8b7b9fbe116953521fb6b5d7f4648d09d7712))
|
|
20
|
+
* support latest metric sdk ([e8d2e96](https://www.github.com/pragmaticivan/nestjs-otel/commit/e8d2e96da5161cd5c4ee78290244144f5849ec8b))
|
|
21
|
+
* **tracing:** pass options with span decorator ([3424b88](https://www.github.com/pragmaticivan/nestjs-otel/commit/3424b884e949792679dac79f7b3624cc6e67b110))
|
|
22
|
+
* update remaining counters ([d11f6d9](https://www.github.com/pragmaticivan/nestjs-otel/commit/d11f6d98cf25639c01e24c9007a43d3e06c32738))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Bug Fixes
|
|
26
|
+
|
|
27
|
+
* forRootAsync uses the wrong module and empty options breaks the configure method ([c2dc102](https://www.github.com/pragmaticivan/nestjs-otel/commit/c2dc102d41f2ddc1ca3e8a814e7243fc4cc4b773))
|
|
28
|
+
|
|
29
|
+
### [3.0.4](https://www.github.com/pragmaticivan/nestjs-otel/compare/v3.0.3...v3.0.4) (2022-03-29)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
### Bug Fixes
|
|
33
|
+
|
|
34
|
+
* **metrics:** make sure metadata is kept ([de7ca0f](https://www.github.com/pragmaticivan/nestjs-otel/commit/de7ca0f387dbe44142c58c827ccd777348ae491b))
|
|
35
|
+
* **tracing:** make sure metadata is kept ([c34ae56](https://www.github.com/pragmaticivan/nestjs-otel/commit/c34ae561e73daea879f6871f2f781a565d03a95a))
|
|
36
|
+
|
|
3
37
|
### [3.0.3](https://www.github.com/pragmaticivan/nestjs-otel/compare/v3.0.2...v3.0.3) (2022-03-25)
|
|
4
38
|
|
|
5
39
|
|
package/README.md
CHANGED
|
@@ -118,10 +118,8 @@ bootstrap();
|
|
|
118
118
|
const OpenTelemetryModuleConfig = OpenTelemetryModule.forRoot({
|
|
119
119
|
metrics: {
|
|
120
120
|
hostMetrics: true, // Includes Host Metrics
|
|
121
|
-
defaultMetrics: true, // Includes Default Metrics
|
|
122
121
|
apiMetrics: {
|
|
123
122
|
enable: true, // Includes api metrics
|
|
124
|
-
timeBuckets: [], // You can change the default time buckets
|
|
125
123
|
defaultAttributes: {
|
|
126
124
|
// You can set default labels for api metrics
|
|
127
125
|
custom: 'label',
|
|
@@ -264,18 +262,17 @@ export class AppController {
|
|
|
264
262
|
|
|
265
263
|
## API Metrics with Middleware
|
|
266
264
|
|
|
267
|
-
| Impl | Metric
|
|
268
|
-
| ---- |
|
|
269
|
-
| ✅ |
|
|
270
|
-
| ✅ |
|
|
271
|
-
| ✅ |
|
|
272
|
-
| ✅ |
|
|
273
|
-
| ✅ |
|
|
274
|
-
| ✅ |
|
|
275
|
-
| ✅ |
|
|
276
|
-
| ✅ |
|
|
277
|
-
| ✅ |
|
|
278
|
-
| ✅ | http_response_size_bytes | Current total of outgoing bytes. | - | Histogram |
|
|
265
|
+
| Impl | Otel Metric | Prometheus Metric | Description | Metric Type |
|
|
266
|
+
| ---- | -------------------------------- | --------------------------------------- | ----------------------------------------- | ----------- |
|
|
267
|
+
| ✅ | http.server.request.count | http_server_request_count_total | Total number of HTTP requests. | Counter |
|
|
268
|
+
| ✅ | http.server.response.count | http_server_response_count_total | Total number of HTTP responses. | Counter |
|
|
269
|
+
| ✅ | http.server.abort.count | http_server_abort_count_total | Total number of data transfers aborted. | Counter |
|
|
270
|
+
| ✅ | http.server.duration | http_server_duration | The duration of the inbound HTTP request. | Histogram |
|
|
271
|
+
| ✅ | http.server.request.size | http_server_request_size | Size of incoming bytes. | Histogram |
|
|
272
|
+
| ✅ | http.server.response.size | http_server_response_size | Size of outgoing bytes. | Histogram |
|
|
273
|
+
| ✅ | http.server.response.success.count | http_server_response_success_count_total | Total number of all successful responses. | Counter |
|
|
274
|
+
| ✅ | http.server.response.error.count | http_server_response_error_count_total | Total number of all response errors'. | Counter |
|
|
275
|
+
| ✅ | http.client.request.error.count | http_client_request_error_count_total | Total number of client error requests. | Counter |
|
|
279
276
|
|
|
280
277
|
## Prometheus Metrics
|
|
281
278
|
|
|
@@ -320,16 +317,11 @@ export const logger: Logger = Pino(loggerOptions);
|
|
|
320
317
|
|
|
321
318
|
## Examples
|
|
322
319
|
|
|
323
|
-
A full working
|
|
324
|
-
|
|
325
|
-
A dashboard example is also available:
|
|
326
|
-
|
|
327
|
-

|
|
328
|
-
|
|
329
|
-
Logs are automatically associated with tracing (Loki + Tempo):
|
|
330
|
-
|
|
331
|
-

|
|
320
|
+
A full working examples are available. This includes a nestjs application fully integrated with prometheus, grafana, loki and tempo:
|
|
332
321
|
|
|
322
|
+
* [nestjs-otel-prom-grafana-tempo-otel-collector](https://github.com/pragmaticivan/nestjs-otel-prom-grafana-tempo-otel-collector)
|
|
323
|
+
* [nestjs-otel-fastify-prom-grafana-tempo ](https://github.com/pragmaticivan/nestjs-otel-fastify-prom-grafana-tempo )
|
|
324
|
+
* [nestjs-otel-prom-grafana-tempo ](https://github.com/pragmaticivan/nestjs-otel-prom-grafana-tempo )
|
|
333
325
|
## Stargazers over time
|
|
334
326
|
|
|
335
327
|
[](https://starchart.cc/pragmaticivan/nestjs-otel)
|
package/lib/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,yDAAuC;AACvC,4DAA0C;AAC1C,0DAAwC;AACxC,2DAAyC;AACzC,qDAAmC;AACnC,uDAAqC;AACrC,4DAA0C"}
|
package/lib/interfaces/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oEAAkD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ModuleMetadata, Type, Abstract } from '@nestjs/common';
|
|
2
|
-
import {
|
|
2
|
+
import { MetricAttributes } from '@opentelemetry/api-metrics';
|
|
3
3
|
import { RouteInfo } from '@nestjs/common/interfaces';
|
|
4
4
|
export declare type OpenTelemetryModuleOptions = {
|
|
5
5
|
metrics?: OpenTelemetryMetrics;
|
|
@@ -15,14 +15,10 @@ export interface OpenTelemetryModuleAsyncOptions extends Pick<ModuleMetadata, 'i
|
|
|
15
15
|
inject?: (string | symbol | Function | Type<any> | Abstract<any>)[];
|
|
16
16
|
}
|
|
17
17
|
export declare type OpenTelemetryMetrics = {
|
|
18
|
-
defaultMetrics?: boolean;
|
|
19
18
|
hostMetrics?: boolean;
|
|
20
19
|
apiMetrics?: {
|
|
21
20
|
enable?: boolean;
|
|
22
|
-
|
|
23
|
-
requestSizeBuckets?: number[];
|
|
24
|
-
responseSizeBuckets?: number[];
|
|
25
|
-
defaultAttributes?: Attributes;
|
|
21
|
+
defaultAttributes?: MetricAttributes;
|
|
26
22
|
ignoreRoutes?: (string | RouteInfo)[];
|
|
27
23
|
ignoreUndefinedRoutes?: boolean;
|
|
28
24
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MetricOptions } from '@opentelemetry/api-metrics';
|
|
2
|
-
export declare const OtelInstanceCounter: (options?: MetricOptions) => <T extends new (...args: any[]) => {}>(
|
|
2
|
+
export declare const OtelInstanceCounter: (options?: MetricOptions) => <T extends new (...args: any[]) => {}>(originalClass: T) => {
|
|
3
3
|
new (...args: any[]): {};
|
|
4
4
|
} & T;
|
|
5
5
|
export declare const OtelMethodCounter: (options?: MetricOptions) => (target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<(...args: any[]) => any>) => void;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.OtelMethodCounter = exports.OtelInstanceCounter = void 0;
|
|
4
|
+
const opentelemetry_utils_1 = require("../../opentelemetry.utils");
|
|
4
5
|
const metric_data_1 = require("../metric-data");
|
|
5
|
-
const OtelInstanceCounter = (options) => (
|
|
6
|
-
const name = `app_${
|
|
7
|
-
const description = `app_${
|
|
6
|
+
const OtelInstanceCounter = (options) => (originalClass) => {
|
|
7
|
+
const name = `app_${originalClass.name}_instances_total`;
|
|
8
|
+
const description = `app_${originalClass.name} object instances total`;
|
|
8
9
|
let counterMetric;
|
|
9
|
-
|
|
10
|
+
const wrappedClass = class extends originalClass {
|
|
10
11
|
constructor(...args) {
|
|
11
12
|
if (!counterMetric) {
|
|
12
13
|
counterMetric = (0, metric_data_1.getOrCreateCounter)(name, { description, ...options });
|
|
@@ -15,6 +16,8 @@ const OtelInstanceCounter = (options) => (ctor) => {
|
|
|
15
16
|
super(...args);
|
|
16
17
|
}
|
|
17
18
|
};
|
|
19
|
+
(0, opentelemetry_utils_1.copyMetadataFromFunctionToFunction)(originalClass, wrappedClass);
|
|
20
|
+
return wrappedClass;
|
|
18
21
|
};
|
|
19
22
|
exports.OtelInstanceCounter = OtelInstanceCounter;
|
|
20
23
|
const OtelMethodCounter = (options) => (target, propertyKey, descriptor) => {
|
|
@@ -22,14 +25,16 @@ const OtelMethodCounter = (options) => (target, propertyKey, descriptor) => {
|
|
|
22
25
|
const name = `app_${className}_${propertyKey.toString()}_calls_total`;
|
|
23
26
|
const description = `app_${className}#${propertyKey.toString()} called total`;
|
|
24
27
|
let counterMetric;
|
|
25
|
-
const
|
|
26
|
-
|
|
28
|
+
const originalFunction = descriptor.value;
|
|
29
|
+
const wrappedFunction = function PropertyDescriptor(...args) {
|
|
27
30
|
if (!counterMetric) {
|
|
28
31
|
counterMetric = (0, metric_data_1.getOrCreateCounter)(name, { description, ...options });
|
|
29
32
|
}
|
|
30
33
|
counterMetric.add(1);
|
|
31
|
-
return
|
|
34
|
+
return originalFunction.apply(this, args);
|
|
32
35
|
};
|
|
36
|
+
descriptor.value = wrappedFunction;
|
|
37
|
+
(0, opentelemetry_utils_1.copyMetadataFromFunctionToFunction)(originalFunction, wrappedFunction);
|
|
33
38
|
};
|
|
34
39
|
exports.OtelMethodCounter = OtelMethodCounter;
|
|
35
40
|
//# sourceMappingURL=common.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/metrics/decorators/common.ts"],"names":[],"mappings":";;;AACA,gDAAoD;AAO7C,MAAM,mBAAmB,GAAG,
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/metrics/decorators/common.ts"],"names":[],"mappings":";;;AACA,mEAA+E;AAC/E,gDAAoD;AAO7C,MAAM,mBAAmB,GAAG,CAAC,OAAuB,EAAE,EAAE,CAAC,CAG5D,aAAgB,EAChB,EAAE;IACJ,MAAM,IAAI,GAAG,OAAO,aAAa,CAAC,IAAI,kBAAkB,CAAC;IACzD,MAAM,WAAW,GAAG,OAAO,aAAa,CAAC,IAAI,yBAAyB,CAAC;IACvE,IAAI,aAAsB,CAAC;IAE3B,MAAM,YAAY,GAAG,KAAM,SAAQ,aAAa;QAC9C,YAAY,GAAG,IAAI;YACjB,IAAI,CAAC,aAAa,EAAE;gBAClB,aAAa,GAAG,IAAA,gCAAkB,EAAC,IAAI,EAAE,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;aACvE;YAED,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACjB,CAAC;KACF,CAAC;IAEF,IAAA,wDAAkC,EAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAEhE,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAvBW,QAAA,mBAAmB,uBAuB9B;AAKK,MAAM,iBAAiB,GAAG,CAAC,OAAuB,EAAE,EAAE,CAAC,CAC5D,MAAc,EACd,WAA4B,EAC5B,UAA4D,EAC5D,EAAE;IACF,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;IAC1C,MAAM,IAAI,GAAG,OAAO,SAAS,IAAI,WAAW,CAAC,QAAQ,EAAE,cAAc,CAAC;IACtE,MAAM,WAAW,GAAG,OAAO,SAAS,IAAI,WAAW,CAAC,QAAQ,EAAE,eAAe,CAAC;IAC9E,IAAI,aAAsB,CAAC;IAE3B,MAAM,gBAAgB,GAAG,UAAU,CAAC,KAAK,CAAC;IAE1C,MAAM,eAAe,GAAG,SAAS,kBAAkB,CAAC,GAAG,IAAW;QAChE,IAAI,CAAC,aAAa,EAAE;YAClB,aAAa,GAAG,IAAA,gCAAkB,EAAC,IAAI,EAAE,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;SACvE;QACD,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrB,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF,UAAU,CAAC,KAAK,GAAG,eAAe,CAAC;IAEnC,IAAA,wDAAkC,EAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;AACxE,CAAC,CAAC;AAvBW,QAAA,iBAAiB,qBAuB5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
require("reflect-metadata");
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const common_2 = require("./common");
|
|
15
|
+
const TestDecoratorThatSetsMetadata = () => (0, common_1.SetMetadata)('some-metadata', true);
|
|
16
|
+
let TestClass = class TestClass {
|
|
17
|
+
method() { }
|
|
18
|
+
};
|
|
19
|
+
__decorate([
|
|
20
|
+
TestDecoratorThatSetsMetadata(),
|
|
21
|
+
(0, common_2.OtelMethodCounter)(),
|
|
22
|
+
__metadata("design:type", Function),
|
|
23
|
+
__metadata("design:paramtypes", []),
|
|
24
|
+
__metadata("design:returntype", void 0)
|
|
25
|
+
], TestClass.prototype, "method", null);
|
|
26
|
+
TestClass = __decorate([
|
|
27
|
+
(0, common_2.OtelInstanceCounter)(),
|
|
28
|
+
TestDecoratorThatSetsMetadata()
|
|
29
|
+
], TestClass);
|
|
30
|
+
describe('OtelInstanceCounter', () => {
|
|
31
|
+
let instance;
|
|
32
|
+
beforeEach(() => {
|
|
33
|
+
instance = new TestClass();
|
|
34
|
+
});
|
|
35
|
+
it('should maintain reflect metadata', async () => {
|
|
36
|
+
expect(Reflect.getMetadata('some-metadata', instance.constructor)).toEqual(true);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
describe('OtelMethodCounter', () => {
|
|
40
|
+
let instance;
|
|
41
|
+
beforeEach(() => {
|
|
42
|
+
instance = new TestClass();
|
|
43
|
+
});
|
|
44
|
+
it('should maintain reflect metadata', async () => {
|
|
45
|
+
expect(Reflect.getMetadata('some-metadata', instance.method)).toEqual(true);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=common.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.spec.js","sourceRoot":"","sources":["../../../src/metrics/decorators/common.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,4BAA0B;AAC1B,2CAA6C;AAC7C,qCAAkE;AAElE,MAAM,6BAA6B,GAAG,GAAG,EAAE,CAAC,IAAA,oBAAW,EAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AAI/E,IAAM,SAAS,GAAf,MAAM,SAAS;IAGb,MAAM,KAAI,CAAC;CACZ,CAAA;AAHC;IAAC,6BAA6B,EAAE;IAC/B,IAAA,0BAAiB,GAAE;;;;uCACT;AAHP,SAAS;IAFd,IAAA,4BAAmB,GAAE;IACrB,6BAA6B,EAAE;GAC1B,SAAS,CAId;AAED,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,QAAmB,CAAC;IAExB,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,QAAmB,CAAC;IAExB,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/metrics/decorators/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/metrics/decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,4CAA0B;AAC1B,8CAA4B;AAC5B,+CAA6B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Counter, MetricOptions, UpDownCounter, Histogram, ObservableGauge, ObservableCounter, ObservableUpDownCounter
|
|
1
|
+
import { Counter, MetricOptions, UpDownCounter, Histogram, ObservableGauge, ObservableCounter, ObservableUpDownCounter } from '@opentelemetry/api-metrics';
|
|
2
2
|
export declare type GenericMetric = Counter | UpDownCounter | Histogram | ObservableGauge | ObservableCounter | ObservableUpDownCounter;
|
|
3
3
|
export declare enum MetricType {
|
|
4
4
|
'Counter' = "Counter",
|
|
@@ -12,6 +12,6 @@ export declare const meterData: Map<string, GenericMetric>;
|
|
|
12
12
|
export declare function getOrCreateHistogram(name: string, options: MetricOptions): Histogram;
|
|
13
13
|
export declare function getOrCreateCounter(name: string, options: MetricOptions): Counter;
|
|
14
14
|
export declare function getOrCreateUpDownCounter(name: string, options: MetricOptions): UpDownCounter;
|
|
15
|
-
export declare function getOrCreateObservableGauge(name: string, options: MetricOptions
|
|
16
|
-
export declare function getOrCreateObservableCounter(name: string, options: MetricOptions
|
|
17
|
-
export declare function getOrCreateObservableUpDownCounter(name: string, options: MetricOptions
|
|
15
|
+
export declare function getOrCreateObservableGauge(name: string, options: MetricOptions): ObservableGauge;
|
|
16
|
+
export declare function getOrCreateObservableCounter(name: string, options: MetricOptions): ObservableCounter;
|
|
17
|
+
export declare function getOrCreateObservableUpDownCounter(name: string, options: MetricOptions): ObservableUpDownCounter;
|
|
@@ -43,32 +43,32 @@ function getOrCreateUpDownCounter(name, options) {
|
|
|
43
43
|
return upDownCounter;
|
|
44
44
|
}
|
|
45
45
|
exports.getOrCreateUpDownCounter = getOrCreateUpDownCounter;
|
|
46
|
-
function getOrCreateObservableGauge(name, options
|
|
46
|
+
function getOrCreateObservableGauge(name, options) {
|
|
47
47
|
if (exports.meterData.has(name)) {
|
|
48
48
|
return exports.meterData.get(name);
|
|
49
49
|
}
|
|
50
50
|
const meter = api_metrics_1.metrics.getMeterProvider().getMeter(opentelemetry_constants_1.OTEL_METER_NAME);
|
|
51
|
-
const observableGauge = meter.createObservableGauge(name, options
|
|
51
|
+
const observableGauge = meter.createObservableGauge(name, options);
|
|
52
52
|
exports.meterData.set(name, observableGauge);
|
|
53
53
|
return observableGauge;
|
|
54
54
|
}
|
|
55
55
|
exports.getOrCreateObservableGauge = getOrCreateObservableGauge;
|
|
56
|
-
function getOrCreateObservableCounter(name, options
|
|
56
|
+
function getOrCreateObservableCounter(name, options) {
|
|
57
57
|
if (exports.meterData.has(name)) {
|
|
58
58
|
return exports.meterData.get(name);
|
|
59
59
|
}
|
|
60
60
|
const meter = api_metrics_1.metrics.getMeterProvider().getMeter(opentelemetry_constants_1.OTEL_METER_NAME);
|
|
61
|
-
const observableCounter = meter.createObservableCounter(name, options
|
|
61
|
+
const observableCounter = meter.createObservableCounter(name, options);
|
|
62
62
|
exports.meterData.set(name, observableCounter);
|
|
63
63
|
return observableCounter;
|
|
64
64
|
}
|
|
65
65
|
exports.getOrCreateObservableCounter = getOrCreateObservableCounter;
|
|
66
|
-
function getOrCreateObservableUpDownCounter(name, options
|
|
66
|
+
function getOrCreateObservableUpDownCounter(name, options) {
|
|
67
67
|
if (exports.meterData.has(name)) {
|
|
68
68
|
return exports.meterData.get(name);
|
|
69
69
|
}
|
|
70
70
|
const meter = api_metrics_1.metrics.getMeterProvider().getMeter(opentelemetry_constants_1.OTEL_METER_NAME);
|
|
71
|
-
const observableCounter = meter.createObservableCounter(name, options
|
|
71
|
+
const observableCounter = meter.createObservableCounter(name, options);
|
|
72
72
|
exports.meterData.set(name, observableCounter);
|
|
73
73
|
return observableCounter;
|
|
74
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metric-data.js","sourceRoot":"","sources":["../../src/metrics/metric-data.ts"],"names":[],"mappings":";;;AAAA,4DAGoC;AACpC,wEAA6D;AAU7D,IAAY,UAOX;AAPD,WAAY,UAAU;IACpB,iCAAqB,CAAA;IACrB,6CAAiC,CAAA;IACjC,qCAAyB,CAAA;IACzB,iDAAqC,CAAA;IACrC,qDAAyC,CAAA;IACzC,iEAAqD,CAAA;AACvD,CAAC,EAPW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAOrB;AAEY,QAAA,SAAS,GAA+B,IAAI,GAAG,EAAE,CAAC;AAE/D,SAAgB,oBAAoB,CAClC,IAAY,EACZ,OAAsB;IAEtB,IAAI,iBAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACvB,OAAO,iBAAS,CAAC,GAAG,CAAC,IAAI,CAAc,CAAC;KACzC;IAED,MAAM,KAAK,GAAG,qBAAO,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,yCAAe,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvD,iBAAS,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/B,OAAO,SAAS,CAAC;AACnB,CAAC;AAZD,oDAYC;AAED,SAAgB,kBAAkB,CAChC,IAAY,EACZ,OAAsB;IAEtB,IAAI,iBAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACvB,OAAO,iBAAS,CAAC,GAAG,CAAC,IAAI,CAAY,CAAC;KACvC;IAED,MAAM,KAAK,GAAG,qBAAO,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,yCAAe,CAAC,CAAC;IAEnE,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnD,iBAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7B,OAAO,OAAO,CAAC;AACjB,CAAC;AAbD,gDAaC;AAED,SAAgB,wBAAwB,CACtC,IAAY,EACZ,OAAsB;IAEtB,IAAI,iBAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACvB,OAAO,iBAAS,CAAC,GAAG,CAAC,IAAI,CAAkB,CAAC;KAC7C;IAED,MAAM,KAAK,GAAG,qBAAO,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,yCAAe,CAAC,CAAC;IAEnE,MAAM,aAAa,GAAG,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/D,iBAAS,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACnC,OAAO,aAAa,CAAC;AACvB,CAAC;AAbD,4DAaC;AAED,SAAgB,0BAA0B,CACxC,IAAY,EACZ,OAAsB
|
|
1
|
+
{"version":3,"file":"metric-data.js","sourceRoot":"","sources":["../../src/metrics/metric-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { MetricOptions
|
|
1
|
+
import { MetricOptions } from '@opentelemetry/api-metrics';
|
|
2
2
|
export declare class MetricService {
|
|
3
3
|
getCounter(name: string, options?: MetricOptions): import("@opentelemetry/api-metrics").Counter;
|
|
4
4
|
getUpDownCounter(name: string, options?: MetricOptions): import("@opentelemetry/api-metrics").UpDownCounter;
|
|
5
5
|
getHistogram(name: string, options?: MetricOptions): import("@opentelemetry/api-metrics").Histogram;
|
|
6
|
-
getObservableCounter(name: string, options?: MetricOptions
|
|
7
|
-
getObservableGauge(name: string, options?: MetricOptions
|
|
8
|
-
getObservableUpDownCounter(name: string, options?: MetricOptions
|
|
6
|
+
getObservableCounter(name: string, options?: MetricOptions): import("@opentelemetry/api-metrics").Observable;
|
|
7
|
+
getObservableGauge(name: string, options?: MetricOptions): import("@opentelemetry/api-metrics").Observable;
|
|
8
|
+
getObservableUpDownCounter(name: string, options?: MetricOptions): import("@opentelemetry/api-metrics").Observable;
|
|
9
9
|
}
|
|
@@ -19,14 +19,14 @@ let MetricService = class MetricService {
|
|
|
19
19
|
getHistogram(name, options) {
|
|
20
20
|
return (0, metric_data_1.getOrCreateHistogram)(name, options);
|
|
21
21
|
}
|
|
22
|
-
getObservableCounter(name, options
|
|
23
|
-
return (0, metric_data_1.getOrCreateObservableCounter)(name, options
|
|
22
|
+
getObservableCounter(name, options) {
|
|
23
|
+
return (0, metric_data_1.getOrCreateObservableCounter)(name, options);
|
|
24
24
|
}
|
|
25
|
-
getObservableGauge(name, options
|
|
26
|
-
return (0, metric_data_1.getOrCreateObservableGauge)(name, options
|
|
25
|
+
getObservableGauge(name, options) {
|
|
26
|
+
return (0, metric_data_1.getOrCreateObservableGauge)(name, options);
|
|
27
27
|
}
|
|
28
|
-
getObservableUpDownCounter(name, options
|
|
29
|
-
return (0, metric_data_1.getOrCreateObservableUpDownCounter)(name, options
|
|
28
|
+
getObservableUpDownCounter(name, options) {
|
|
29
|
+
return (0, metric_data_1.getOrCreateObservableUpDownCounter)(name, options);
|
|
30
30
|
}
|
|
31
31
|
};
|
|
32
32
|
MetricService = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metric.service.js","sourceRoot":"","sources":["../../src/metrics/metric.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAI5C,+CAIuB;
|
|
1
|
+
{"version":3,"file":"metric.service.js","sourceRoot":"","sources":["../../src/metrics/metric.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAI5C,+CAIuB;AAGhB,IAAM,aAAa,GAAnB,MAAM,aAAa;IACxB,UAAU,CAAC,IAAY,EAAE,OAAuB;QAC9C,OAAO,IAAA,gCAAkB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,gBAAgB,CAAC,IAAY,EAAE,OAAuB;QACpD,OAAO,IAAA,sCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,YAAY,CAAC,IAAY,EAAE,OAAuB;QAChD,OAAO,IAAA,kCAAoB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,oBAAoB,CAClB,IAAY,EACZ,OAAuB;QAEvB,OAAO,IAAA,0CAA4B,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,kBAAkB,CAChB,IAAY,EACZ,OAAuB;QAEvB,OAAO,IAAA,wCAA0B,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,0BAA0B,CACxB,IAAY,EACZ,OAAuB;QAEvB,OAAO,IAAA,gDAAkC,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;CACF,CAAA;AAjCY,aAAa;IADzB,IAAA,mBAAU,GAAE;GACA,aAAa,CAiCzB;AAjCY,sCAAa"}
|
|
@@ -1,26 +1,19 @@
|
|
|
1
1
|
import { NestMiddleware } from '@nestjs/common';
|
|
2
2
|
import { OpenTelemetryModuleOptions } from '../interfaces';
|
|
3
3
|
import { MetricService } from '../metrics/metric.service';
|
|
4
|
-
export declare const DEFAULT_LONG_RUNNING_REQUEST_BUCKETS: number[];
|
|
5
|
-
export declare const DEFAULT_REQUEST_SIZE_BUCKETS: number[];
|
|
6
|
-
export declare const DEFAULT_RESPONSE_SIZE_BUCKETS: number[];
|
|
7
4
|
export declare class ApiMetricsMiddleware implements NestMiddleware {
|
|
8
5
|
private readonly metricService;
|
|
9
6
|
private readonly options;
|
|
10
|
-
private
|
|
11
|
-
private
|
|
12
|
-
private
|
|
13
|
-
private
|
|
14
|
-
private
|
|
15
|
-
private
|
|
16
|
-
private
|
|
17
|
-
private
|
|
18
|
-
private
|
|
19
|
-
private
|
|
20
|
-
private requestDuration;
|
|
21
|
-
private requestSizeHistogram;
|
|
22
|
-
private responseSizeHistogram;
|
|
23
|
-
private defaultAttributes;
|
|
7
|
+
private defaultMetricAttributes;
|
|
8
|
+
private httpServerRequestCount;
|
|
9
|
+
private httpServerResponseCount;
|
|
10
|
+
private httpServerDuration;
|
|
11
|
+
private httpServerRequestSize;
|
|
12
|
+
private httpServerResponseSize;
|
|
13
|
+
private httpServerResponseSuccessCount;
|
|
14
|
+
private httpServerResponseErrorCount;
|
|
15
|
+
private httpClientRequestErrorCount;
|
|
16
|
+
private httpServerAbortCount;
|
|
24
17
|
private readonly ignoreUndefinedRoutes;
|
|
25
18
|
constructor(metricService: MetricService, options?: OpenTelemetryModuleOptions);
|
|
26
19
|
use(req: any, res: any, next: any): void;
|