nestjs-otel 3.0.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.
Files changed (151) hide show
  1. package/.eslintignore +1 -0
  2. package/.eslintrc.js +27 -0
  3. package/CHANGELOG.md +34 -0
  4. package/README.md +15 -23
  5. package/lib/index.js +5 -1
  6. package/lib/index.js.map +1 -1
  7. package/lib/interfaces/index.js +5 -1
  8. package/lib/interfaces/index.js.map +1 -1
  9. package/lib/interfaces/opentelemetry-options.interface.d.ts +2 -6
  10. package/lib/metrics/decorators/common.d.ts +1 -1
  11. package/lib/metrics/decorators/common.js +12 -7
  12. package/lib/metrics/decorators/common.js.map +1 -1
  13. package/lib/metrics/decorators/common.spec.d.ts +1 -0
  14. package/lib/metrics/decorators/common.spec.js +48 -0
  15. package/lib/metrics/decorators/common.spec.js.map +1 -0
  16. package/lib/metrics/decorators/index.js +5 -1
  17. package/lib/metrics/decorators/index.js.map +1 -1
  18. package/lib/metrics/metric-data.d.ts +4 -4
  19. package/lib/metrics/metric-data.js +6 -6
  20. package/lib/metrics/metric-data.js.map +1 -1
  21. package/lib/metrics/metric.service.d.ts +4 -4
  22. package/lib/metrics/metric.service.js +6 -6
  23. package/lib/metrics/metric.service.js.map +1 -1
  24. package/lib/middleware/api-metrics.middleware.d.ts +10 -17
  25. package/lib/middleware/api-metrics.middleware.js +40 -50
  26. package/lib/middleware/api-metrics.middleware.js.map +1 -1
  27. package/lib/middleware/index.js +5 -1
  28. package/lib/middleware/index.js.map +1 -1
  29. package/lib/opentelemetry-core.module.js +3 -11
  30. package/lib/opentelemetry-core.module.js.map +1 -1
  31. package/lib/opentelemetry.module.js.map +1 -1
  32. package/lib/opentelemetry.utils.d.ts +1 -0
  33. package/lib/opentelemetry.utils.js +10 -0
  34. package/lib/opentelemetry.utils.js.map +1 -0
  35. package/lib/tracing/decorators/span.d.ts +2 -1
  36. package/lib/tracing/decorators/span.js +29 -9
  37. package/lib/tracing/decorators/span.js.map +1 -1
  38. package/lib/tracing/decorators/span.spec.d.ts +1 -1
  39. package/lib/tracing/decorators/span.spec.js +80 -15
  40. package/lib/tracing/decorators/span.spec.js.map +1 -1
  41. package/lib/tracing/trace.service.js.map +1 -1
  42. package/lib/tsconfig.tsbuildinfo +1 -1
  43. package/package.json +31 -30
  44. package/tsconfig.json +16 -0
  45. package/.editorconfig +0 -21
  46. package/.husky/commit-msg +0 -4
  47. package/.husky/pre-commit +0 -5
  48. package/.prettierrc.js +0 -47
  49. package/.vscode/settings.json +0 -8
  50. package/REFERENCE.md +0 -5
  51. package/commitlint.config.js +0 -7
  52. package/examples/nestjs-fastify-prom-grafana-tempo/.dockerignore +0 -5
  53. package/examples/nestjs-fastify-prom-grafana-tempo/Dockerfile +0 -17
  54. package/examples/nestjs-fastify-prom-grafana-tempo/README.md +0 -5
  55. package/examples/nestjs-fastify-prom-grafana-tempo/data/grafana-data/dashboards/nestjs-otel.json +0 -1838
  56. package/examples/nestjs-fastify-prom-grafana-tempo/data/grafana-data/dashboards-provisioning/dashboards.yaml +0 -14
  57. package/examples/nestjs-fastify-prom-grafana-tempo/data/grafana-data/datasources/datasource.yml +0 -60
  58. package/examples/nestjs-fastify-prom-grafana-tempo/docker-compose.yml +0 -86
  59. package/examples/nestjs-fastify-prom-grafana-tempo/etc/loki-local.yaml +0 -64
  60. package/examples/nestjs-fastify-prom-grafana-tempo/etc/prometheus.yaml +0 -27
  61. package/examples/nestjs-fastify-prom-grafana-tempo/etc/promtail-local.yaml +0 -43
  62. package/examples/nestjs-fastify-prom-grafana-tempo/etc/tempo-local.yaml +0 -45
  63. package/examples/nestjs-fastify-prom-grafana-tempo/grafana-dashboard.png +0 -0
  64. package/examples/nestjs-fastify-prom-grafana-tempo/loki-logs.png +0 -0
  65. package/examples/nestjs-fastify-prom-grafana-tempo/nest-cli.json +0 -4
  66. package/examples/nestjs-fastify-prom-grafana-tempo/package.json +0 -85
  67. package/examples/nestjs-fastify-prom-grafana-tempo/src/app.controller.spec.ts +0 -22
  68. package/examples/nestjs-fastify-prom-grafana-tempo/src/app.controller.ts +0 -26
  69. package/examples/nestjs-fastify-prom-grafana-tempo/src/app.module.ts +0 -22
  70. package/examples/nestjs-fastify-prom-grafana-tempo/src/app.service.ts +0 -8
  71. package/examples/nestjs-fastify-prom-grafana-tempo/src/logger/logger.module.ts +0 -17
  72. package/examples/nestjs-fastify-prom-grafana-tempo/src/logger/logger.ts +0 -33
  73. package/examples/nestjs-fastify-prom-grafana-tempo/src/main.ts +0 -20
  74. package/examples/nestjs-fastify-prom-grafana-tempo/src/tracing.ts +0 -48
  75. package/examples/nestjs-fastify-prom-grafana-tempo/test/app.e2e-spec.ts +0 -24
  76. package/examples/nestjs-fastify-prom-grafana-tempo/test/jest-e2e.json +0 -9
  77. package/examples/nestjs-fastify-prom-grafana-tempo/tsconfig.build.json +0 -4
  78. package/examples/nestjs-prom-grafana-tempo/.dockerignore +0 -5
  79. package/examples/nestjs-prom-grafana-tempo/Dockerfile +0 -17
  80. package/examples/nestjs-prom-grafana-tempo/README.md +0 -11
  81. package/examples/nestjs-prom-grafana-tempo/data/grafana-data/dashboards/nestjs-otel.json +0 -1838
  82. package/examples/nestjs-prom-grafana-tempo/data/grafana-data/dashboards-provisioning/dashboards.yaml +0 -14
  83. package/examples/nestjs-prom-grafana-tempo/data/grafana-data/datasources/datasource.yml +0 -60
  84. package/examples/nestjs-prom-grafana-tempo/docker-compose.yml +0 -86
  85. package/examples/nestjs-prom-grafana-tempo/etc/loki-local.yaml +0 -64
  86. package/examples/nestjs-prom-grafana-tempo/etc/prometheus.yaml +0 -27
  87. package/examples/nestjs-prom-grafana-tempo/etc/promtail-local.yaml +0 -43
  88. package/examples/nestjs-prom-grafana-tempo/etc/tempo-local.yaml +0 -45
  89. package/examples/nestjs-prom-grafana-tempo/grafana-dashboard.png +0 -0
  90. package/examples/nestjs-prom-grafana-tempo/loki-logs.png +0 -0
  91. package/examples/nestjs-prom-grafana-tempo/nest-cli.json +0 -4
  92. package/examples/nestjs-prom-grafana-tempo/package.json +0 -89
  93. package/examples/nestjs-prom-grafana-tempo/src/app.controller.spec.ts +0 -22
  94. package/examples/nestjs-prom-grafana-tempo/src/app.controller.ts +0 -26
  95. package/examples/nestjs-prom-grafana-tempo/src/app.module.ts +0 -23
  96. package/examples/nestjs-prom-grafana-tempo/src/app.service.ts +0 -8
  97. package/examples/nestjs-prom-grafana-tempo/src/logger/logger.module.ts +0 -17
  98. package/examples/nestjs-prom-grafana-tempo/src/logger/logger.ts +0 -33
  99. package/examples/nestjs-prom-grafana-tempo/src/main.ts +0 -26
  100. package/examples/nestjs-prom-grafana-tempo/src/team/team.controller.ts +0 -22
  101. package/examples/nestjs-prom-grafana-tempo/src/team/team.entity.ts +0 -18
  102. package/examples/nestjs-prom-grafana-tempo/src/team/team.module.ts +0 -9
  103. package/examples/nestjs-prom-grafana-tempo/src/team/team.service.ts +0 -30
  104. package/examples/nestjs-prom-grafana-tempo/src/tracing.ts +0 -48
  105. package/examples/nestjs-prom-grafana-tempo/test/app.e2e-spec.ts +0 -24
  106. package/examples/nestjs-prom-grafana-tempo/test/jest-e2e.json +0 -9
  107. package/examples/nestjs-prom-grafana-tempo/tsconfig.build.json +0 -4
  108. package/examples/nestjs-prom-grafana-tempo-otel-collector/.dockerignore +0 -5
  109. package/examples/nestjs-prom-grafana-tempo-otel-collector/Dockerfile +0 -17
  110. package/examples/nestjs-prom-grafana-tempo-otel-collector/README.md +0 -5
  111. package/examples/nestjs-prom-grafana-tempo-otel-collector/data/grafana-data/dashboards/nestjs-otel.json +0 -1838
  112. package/examples/nestjs-prom-grafana-tempo-otel-collector/data/grafana-data/dashboards-provisioning/dashboards.yaml +0 -14
  113. package/examples/nestjs-prom-grafana-tempo-otel-collector/data/grafana-data/datasources/datasource.yml +0 -60
  114. package/examples/nestjs-prom-grafana-tempo-otel-collector/docker-compose.yml +0 -101
  115. package/examples/nestjs-prom-grafana-tempo-otel-collector/etc/loki-local.yaml +0 -64
  116. package/examples/nestjs-prom-grafana-tempo-otel-collector/etc/otel-collector-config.yaml +0 -37
  117. package/examples/nestjs-prom-grafana-tempo-otel-collector/etc/prometheus.yaml +0 -28
  118. package/examples/nestjs-prom-grafana-tempo-otel-collector/etc/promtail-local.yaml +0 -43
  119. package/examples/nestjs-prom-grafana-tempo-otel-collector/etc/tempo-local.yaml +0 -45
  120. package/examples/nestjs-prom-grafana-tempo-otel-collector/grafana-dashboard.png +0 -0
  121. package/examples/nestjs-prom-grafana-tempo-otel-collector/loki-logs.png +0 -0
  122. package/examples/nestjs-prom-grafana-tempo-otel-collector/nest-cli.json +0 -4
  123. package/examples/nestjs-prom-grafana-tempo-otel-collector/package.json +0 -86
  124. package/examples/nestjs-prom-grafana-tempo-otel-collector/src/app.controller.spec.ts +0 -22
  125. package/examples/nestjs-prom-grafana-tempo-otel-collector/src/app.controller.ts +0 -26
  126. package/examples/nestjs-prom-grafana-tempo-otel-collector/src/app.module.ts +0 -22
  127. package/examples/nestjs-prom-grafana-tempo-otel-collector/src/app.service.ts +0 -8
  128. package/examples/nestjs-prom-grafana-tempo-otel-collector/src/logger/logger.module.ts +0 -17
  129. package/examples/nestjs-prom-grafana-tempo-otel-collector/src/logger/logger.ts +0 -33
  130. package/examples/nestjs-prom-grafana-tempo-otel-collector/src/main.ts +0 -13
  131. package/examples/nestjs-prom-grafana-tempo-otel-collector/src/tracing.ts +0 -54
  132. package/examples/nestjs-prom-grafana-tempo-otel-collector/test/app.e2e-spec.ts +0 -24
  133. package/examples/nestjs-prom-grafana-tempo-otel-collector/test/jest-e2e.json +0 -9
  134. package/examples/nestjs-prom-grafana-tempo-otel-collector/tsconfig.build.json +0 -4
  135. package/src/interfaces/opentelemetry-options.interface.ts +0 -59
  136. package/src/metrics/decorators/common.ts +0 -52
  137. package/src/metrics/decorators/counter.ts +0 -17
  138. package/src/metrics/decorators/histogram.ts +0 -10
  139. package/src/metrics/decorators/observable.ts +0 -28
  140. package/src/metrics/injector.ts +0 -14
  141. package/src/metrics/metric-data.ts +0 -116
  142. package/src/metrics/metric.service.ts +0 -48
  143. package/src/metrics/utils.spec.ts +0 -9
  144. package/src/metrics/utils.ts +0 -6
  145. package/src/middleware/api-metrics.middleware.ts +0 -174
  146. package/src/opentelemetry-core.module.ts +0 -175
  147. package/src/opentelemetry.constants.ts +0 -2
  148. package/src/opentelemetry.module.ts +0 -34
  149. package/src/tracing/decorators/span.spec.ts +0 -48
  150. package/src/tracing/decorators/span.ts +0 -23
  151. package/src/tracing/trace.service.ts +0 -17
@@ -1,1838 +0,0 @@
1
- {
2
- "annotations": {
3
- "list": [
4
- {
5
- "builtIn": 1,
6
- "datasource": "-- Grafana --",
7
- "enable": true,
8
- "hide": true,
9
- "iconColor": "rgba(0, 211, 255, 1)",
10
- "name": "Annotations & Alerts",
11
- "target": {
12
- "limit": 100,
13
- "matchAny": false,
14
- "tags": [],
15
- "type": "dashboard"
16
- },
17
- "type": "dashboard"
18
- }
19
- ]
20
- },
21
- "editable": true,
22
- "gnetId": null,
23
- "graphTooltip": 0,
24
- "id": 3,
25
- "links": [],
26
- "panels": [
27
- {
28
- "cacheTimeout": null,
29
- "datasource": "Prometheus",
30
- "fieldConfig": {
31
- "defaults": {
32
- "color": {
33
- "mode": "thresholds"
34
- },
35
- "mappings": [
36
- {
37
- "options": {
38
- "match": "null",
39
- "result": {
40
- "text": "N/A"
41
- }
42
- },
43
- "type": "special"
44
- }
45
- ],
46
- "thresholds": {
47
- "mode": "absolute",
48
- "steps": [
49
- {
50
- "color": "green",
51
- "value": null
52
- },
53
- {
54
- "color": "red",
55
- "value": 80
56
- }
57
- ]
58
- },
59
- "unit": "none"
60
- },
61
- "overrides": []
62
- },
63
- "gridPos": {
64
- "h": 5,
65
- "w": 4,
66
- "x": 0,
67
- "y": 0
68
- },
69
- "id": 48,
70
- "interval": null,
71
- "links": [],
72
- "maxDataPoints": 100,
73
- "options": {
74
- "colorMode": "value",
75
- "graphMode": "area",
76
- "justifyMode": "auto",
77
- "orientation": "horizontal",
78
- "reduceOptions": {
79
- "calcs": [
80
- "lastNotNull"
81
- ],
82
- "fields": "",
83
- "values": false
84
- },
85
- "text": {},
86
- "textMode": "auto"
87
- },
88
- "pluginVersion": "8.1.0",
89
- "targets": [
90
- {
91
- "exemplar": true,
92
- "expr": "(\n sum(rate(http_request_duration_seconds_bucket{le=\"0.025\",status=~\"^2..$\", job=\"nestjs-example\"}[1m]))\n+\n sum(rate(http_request_duration_seconds_bucket{le=\"0.1\",status=~\"^2..$\", job=\"nestjs-example\"}[1m]))\n) / 2 / sum(rate(http_request_duration_seconds_count{job=\"nestjs-example\"}[1m]))",
93
- "format": "time_series",
94
- "interval": "",
95
- "intervalFactor": 2,
96
- "legendFormat": "",
97
- "refId": "A",
98
- "step": 20
99
- }
100
- ],
101
- "title": "Apdex Score",
102
- "type": "stat"
103
- },
104
- {
105
- "datasource": "Prometheus",
106
- "fieldConfig": {
107
- "defaults": {
108
- "color": {
109
- "mode": "palette-classic"
110
- },
111
- "custom": {
112
- "axisLabel": "",
113
- "axisPlacement": "auto",
114
- "barAlignment": 0,
115
- "drawStyle": "line",
116
- "fillOpacity": 10,
117
- "gradientMode": "none",
118
- "hideFrom": {
119
- "legend": false,
120
- "tooltip": false,
121
- "viz": false
122
- },
123
- "lineInterpolation": "linear",
124
- "lineWidth": 1,
125
- "pointSize": 5,
126
- "scaleDistribution": {
127
- "type": "linear"
128
- },
129
- "showPoints": "never",
130
- "spanNulls": true,
131
- "stacking": {
132
- "group": "A",
133
- "mode": "none"
134
- },
135
- "thresholdsStyle": {
136
- "mode": "off"
137
- }
138
- },
139
- "mappings": [],
140
- "thresholds": {
141
- "mode": "absolute",
142
- "steps": [
143
- {
144
- "color": "green",
145
- "value": null
146
- },
147
- {
148
- "color": "red",
149
- "value": 80
150
- }
151
- ]
152
- },
153
- "unit": "short"
154
- },
155
- "overrides": []
156
- },
157
- "gridPos": {
158
- "h": 5,
159
- "w": 16,
160
- "x": 4,
161
- "y": 0
162
- },
163
- "id": 50,
164
- "links": [],
165
- "options": {
166
- "legend": {
167
- "calcs": [],
168
- "displayMode": "list",
169
- "placement": "bottom"
170
- },
171
- "tooltip": {
172
- "mode": "single"
173
- }
174
- },
175
- "pluginVersion": "8.1.0",
176
- "targets": [
177
- {
178
- "exemplar": true,
179
- "expr": "(\n sum(irate(http_request_duration_seconds_bucket{le=\"0.025\",status=~\"^2..$\", job=\"nestjs-example\"}[1m]))\n+\n (sum(irate(http_request_duration_seconds_bucket{le=\"0.1\",status=~\"^2..$\", job=\"nestjs-example\"}[1m]))/2)\n) / sum(irate(http_request_duration_seconds_count{job=\"nestjs-example\"}[1m]))",
180
- "format": "time_series",
181
- "interval": "",
182
- "intervalFactor": 2,
183
- "legendFormat": "Apdex",
184
- "refId": "A",
185
- "step": 2
186
- }
187
- ],
188
- "timeFrom": null,
189
- "timeShift": null,
190
- "title": "Apdex Score: target 25ms, tolerated: 100ms",
191
- "type": "timeseries"
192
- },
193
- {
194
- "cacheTimeout": null,
195
- "datasource": "Prometheus",
196
- "fieldConfig": {
197
- "defaults": {
198
- "color": {
199
- "mode": "thresholds"
200
- },
201
- "mappings": [
202
- {
203
- "options": {
204
- "match": "null",
205
- "result": {
206
- "text": "N/A"
207
- }
208
- },
209
- "type": "special"
210
- }
211
- ],
212
- "thresholds": {
213
- "mode": "absolute",
214
- "steps": [
215
- {
216
- "color": "green",
217
- "value": null
218
- },
219
- {
220
- "color": "red",
221
- "value": 80
222
- }
223
- ]
224
- },
225
- "unit": "none"
226
- },
227
- "overrides": []
228
- },
229
- "gridPos": {
230
- "h": 5,
231
- "w": 4,
232
- "x": 20,
233
- "y": 0
234
- },
235
- "id": 54,
236
- "interval": null,
237
- "links": [],
238
- "maxDataPoints": 100,
239
- "options": {
240
- "colorMode": "value",
241
- "graphMode": "area",
242
- "justifyMode": "auto",
243
- "orientation": "horizontal",
244
- "reduceOptions": {
245
- "calcs": [
246
- "lastNotNull"
247
- ],
248
- "fields": "",
249
- "values": false
250
- },
251
- "text": {},
252
- "textMode": "auto"
253
- },
254
- "pluginVersion": "8.1.0",
255
- "targets": [
256
- {
257
- "expr": "sum(nodejs_active_requests_total{job=\"nestjs-example\"})",
258
- "format": "time_series",
259
- "interval": "",
260
- "intervalFactor": 2,
261
- "legendFormat": "",
262
- "refId": "A",
263
- "step": 20
264
- }
265
- ],
266
- "title": "Requests in Processing",
267
- "type": "stat"
268
- },
269
- {
270
- "collapsed": false,
271
- "datasource": null,
272
- "gridPos": {
273
- "h": 1,
274
- "w": 24,
275
- "x": 0,
276
- "y": 5
277
- },
278
- "id": 2,
279
- "panels": [],
280
- "title": "Basic Statistics",
281
- "type": "row"
282
- },
283
- {
284
- "datasource": "Prometheus",
285
- "fieldConfig": {
286
- "defaults": {
287
- "color": {
288
- "mode": "palette-classic"
289
- },
290
- "custom": {
291
- "axisLabel": "",
292
- "axisPlacement": "auto",
293
- "barAlignment": 0,
294
- "drawStyle": "line",
295
- "fillOpacity": 10,
296
- "gradientMode": "none",
297
- "hideFrom": {
298
- "legend": false,
299
- "tooltip": false,
300
- "viz": false
301
- },
302
- "lineInterpolation": "linear",
303
- "lineWidth": 1,
304
- "pointSize": 5,
305
- "scaleDistribution": {
306
- "type": "linear"
307
- },
308
- "showPoints": "never",
309
- "spanNulls": true,
310
- "stacking": {
311
- "group": "A",
312
- "mode": "none"
313
- },
314
- "thresholdsStyle": {
315
- "mode": "off"
316
- }
317
- },
318
- "mappings": [],
319
- "thresholds": {
320
- "mode": "absolute",
321
- "steps": [
322
- {
323
- "color": "green",
324
- "value": null
325
- },
326
- {
327
- "color": "red",
328
- "value": 80
329
- }
330
- ]
331
- },
332
- "unit": "bytes"
333
- },
334
- "overrides": []
335
- },
336
- "gridPos": {
337
- "h": 8,
338
- "w": 24,
339
- "x": 0,
340
- "y": 6
341
- },
342
- "id": 26,
343
- "links": [],
344
- "options": {
345
- "legend": {
346
- "calcs": [
347
- "mean",
348
- "lastNotNull",
349
- "max",
350
- "min"
351
- ],
352
- "displayMode": "table",
353
- "placement": "right"
354
- },
355
- "tooltip": {
356
- "mode": "single"
357
- }
358
- },
359
- "pluginVersion": "8.1.0",
360
- "targets": [
361
- {
362
- "exemplar": true,
363
- "expr": "process_resident_memory_bytes{job=\"nestjs-example\"}",
364
- "format": "time_series",
365
- "interval": "",
366
- "intervalFactor": 1,
367
- "legendFormat": "Process Memory - {{pod}}",
368
- "refId": "A"
369
- },
370
- {
371
- "expr": "nodejs_heap_size_total_bytes{job=\"nestjs-example\"}",
372
- "format": "time_series",
373
- "interval": "",
374
- "intervalFactor": 1,
375
- "legendFormat": "Heap Total - {{pod}}",
376
- "refId": "B"
377
- },
378
- {
379
- "expr": "nodejs_heap_size_used_bytes{job=\"nestjs-example\"}",
380
- "format": "time_series",
381
- "interval": "",
382
- "intervalFactor": 1,
383
- "legendFormat": "Heap Used - {{pod}}",
384
- "refId": "C"
385
- },
386
- {
387
- "expr": "nodejs_external_memory_bytes{job=\"nestjs-example\"}",
388
- "format": "time_series",
389
- "interval": "",
390
- "intervalFactor": 1,
391
- "legendFormat": "External Memory - {{instance}}",
392
- "refId": "D"
393
- }
394
- ],
395
- "timeFrom": null,
396
- "timeShift": null,
397
- "title": "Process Memory Usage",
398
- "type": "timeseries"
399
- },
400
- {
401
- "datasource": "Prometheus",
402
- "fieldConfig": {
403
- "defaults": {
404
- "color": {
405
- "mode": "palette-classic"
406
- },
407
- "custom": {
408
- "axisLabel": "",
409
- "axisPlacement": "auto",
410
- "barAlignment": 0,
411
- "drawStyle": "line",
412
- "fillOpacity": 10,
413
- "gradientMode": "none",
414
- "hideFrom": {
415
- "legend": false,
416
- "tooltip": false,
417
- "viz": false
418
- },
419
- "lineInterpolation": "linear",
420
- "lineWidth": 1,
421
- "pointSize": 5,
422
- "scaleDistribution": {
423
- "type": "linear"
424
- },
425
- "showPoints": "never",
426
- "spanNulls": true,
427
- "stacking": {
428
- "group": "A",
429
- "mode": "none"
430
- },
431
- "thresholdsStyle": {
432
- "mode": "off"
433
- }
434
- },
435
- "mappings": [],
436
- "thresholds": {
437
- "mode": "absolute",
438
- "steps": [
439
- {
440
- "color": "green",
441
- "value": null
442
- },
443
- {
444
- "color": "red",
445
- "value": 80
446
- }
447
- ]
448
- },
449
- "unit": "percent"
450
- },
451
- "overrides": []
452
- },
453
- "gridPos": {
454
- "h": 7,
455
- "w": 9,
456
- "x": 0,
457
- "y": 14
458
- },
459
- "id": 12,
460
- "links": [],
461
- "options": {
462
- "legend": {
463
- "calcs": [
464
- "mean",
465
- "lastNotNull",
466
- "max",
467
- "min"
468
- ],
469
- "displayMode": "table",
470
- "placement": "bottom"
471
- },
472
- "tooltip": {
473
- "mode": "single"
474
- }
475
- },
476
- "pluginVersion": "8.1.0",
477
- "targets": [
478
- {
479
- "exemplar": true,
480
- "expr": "irate(process_cpu_user_seconds_total{job=\"nestjs-example\"}[2m]) * 100",
481
- "format": "time_series",
482
- "interval": "",
483
- "intervalFactor": 1,
484
- "legendFormat": "User CPU",
485
- "refId": "A"
486
- },
487
- {
488
- "exemplar": true,
489
- "expr": "irate(process_cpu_system_seconds_total{job=\"nestjs-example\"}[2m]) * 100",
490
- "format": "time_series",
491
- "interval": "",
492
- "intervalFactor": 1,
493
- "legendFormat": "Sys CPU",
494
- "refId": "B"
495
- }
496
- ],
497
- "timeFrom": null,
498
- "timeShift": null,
499
- "title": "Process CPU Usage",
500
- "type": "timeseries"
501
- },
502
- {
503
- "datasource": "Prometheus",
504
- "fieldConfig": {
505
- "defaults": {
506
- "color": {
507
- "mode": "palette-classic"
508
- },
509
- "custom": {
510
- "axisLabel": "",
511
- "axisPlacement": "auto",
512
- "barAlignment": 0,
513
- "drawStyle": "line",
514
- "fillOpacity": 10,
515
- "gradientMode": "none",
516
- "hideFrom": {
517
- "legend": false,
518
- "tooltip": false,
519
- "viz": false
520
- },
521
- "lineInterpolation": "linear",
522
- "lineWidth": 1,
523
- "pointSize": 5,
524
- "scaleDistribution": {
525
- "type": "linear"
526
- },
527
- "showPoints": "never",
528
- "spanNulls": true,
529
- "stacking": {
530
- "group": "A",
531
- "mode": "none"
532
- },
533
- "thresholdsStyle": {
534
- "mode": "off"
535
- }
536
- },
537
- "mappings": [],
538
- "thresholds": {
539
- "mode": "absolute",
540
- "steps": [
541
- {
542
- "color": "green",
543
- "value": null
544
- },
545
- {
546
- "color": "red",
547
- "value": 80
548
- }
549
- ]
550
- },
551
- "unit": "s"
552
- },
553
- "overrides": []
554
- },
555
- "gridPos": {
556
- "h": 7,
557
- "w": 8,
558
- "x": 9,
559
- "y": 14
560
- },
561
- "id": 14,
562
- "links": [],
563
- "options": {
564
- "legend": {
565
- "calcs": [
566
- "mean",
567
- "lastNotNull",
568
- "max",
569
- "min"
570
- ],
571
- "displayMode": "table",
572
- "placement": "bottom"
573
- },
574
- "tooltip": {
575
- "mode": "single"
576
- }
577
- },
578
- "pluginVersion": "8.1.0",
579
- "targets": [
580
- {
581
- "exemplar": true,
582
- "expr": "nodejs_eventloop_lag_seconds{job=\"nestjs-example\"}",
583
- "format": "time_series",
584
- "interval": "",
585
- "intervalFactor": 1,
586
- "legendFormat": "{{__name__}}",
587
- "refId": "A"
588
- }
589
- ],
590
- "timeFrom": null,
591
- "timeShift": null,
592
- "title": "Event Loop Lag",
593
- "type": "timeseries"
594
- },
595
- {
596
- "datasource": "Prometheus",
597
- "fieldConfig": {
598
- "defaults": {
599
- "color": {
600
- "mode": "palette-classic"
601
- },
602
- "custom": {
603
- "axisLabel": "",
604
- "axisPlacement": "auto",
605
- "barAlignment": 0,
606
- "drawStyle": "line",
607
- "fillOpacity": 10,
608
- "gradientMode": "none",
609
- "hideFrom": {
610
- "legend": false,
611
- "tooltip": false,
612
- "viz": false
613
- },
614
- "lineInterpolation": "linear",
615
- "lineWidth": 1,
616
- "pointSize": 5,
617
- "scaleDistribution": {
618
- "type": "linear"
619
- },
620
- "showPoints": "never",
621
- "spanNulls": true,
622
- "stacking": {
623
- "group": "A",
624
- "mode": "none"
625
- },
626
- "thresholdsStyle": {
627
- "mode": "off"
628
- }
629
- },
630
- "mappings": [],
631
- "thresholds": {
632
- "mode": "absolute",
633
- "steps": [
634
- {
635
- "color": "green",
636
- "value": null
637
- },
638
- {
639
- "color": "red",
640
- "value": 80
641
- }
642
- ]
643
- },
644
- "unit": "short"
645
- },
646
- "overrides": []
647
- },
648
- "gridPos": {
649
- "h": 7,
650
- "w": 7,
651
- "x": 17,
652
- "y": 14
653
- },
654
- "id": 24,
655
- "links": [],
656
- "options": {
657
- "legend": {
658
- "calcs": [
659
- "mean",
660
- "lastNotNull",
661
- "max",
662
- "min"
663
- ],
664
- "displayMode": "table",
665
- "placement": "bottom"
666
- },
667
- "tooltip": {
668
- "mode": "single"
669
- }
670
- },
671
- "pluginVersion": "8.1.0",
672
- "targets": [
673
- {
674
- "exemplar": true,
675
- "expr": "nodejs_active_handles_total{job=\"nestjs-example\"}",
676
- "format": "time_series",
677
- "interval": "",
678
- "intervalFactor": 1,
679
- "legendFormat": "Active Handler",
680
- "refId": "A"
681
- },
682
- {
683
- "exemplar": true,
684
- "expr": "nodejs_active_requests_total{job=\"nestjs-example\"}",
685
- "format": "time_series",
686
- "interval": "",
687
- "intervalFactor": 1,
688
- "legendFormat": "Active Request",
689
- "refId": "B"
690
- }
691
- ],
692
- "timeFrom": null,
693
- "timeShift": null,
694
- "title": "Active Handlers/Requests Total",
695
- "type": "timeseries"
696
- },
697
- {
698
- "datasource": "Prometheus",
699
- "fieldConfig": {
700
- "defaults": {
701
- "color": {
702
- "mode": "palette-classic"
703
- },
704
- "custom": {
705
- "axisLabel": "",
706
- "axisPlacement": "auto",
707
- "barAlignment": 0,
708
- "drawStyle": "line",
709
- "fillOpacity": 10,
710
- "gradientMode": "none",
711
- "hideFrom": {
712
- "legend": false,
713
- "tooltip": false,
714
- "viz": false
715
- },
716
- "lineInterpolation": "linear",
717
- "lineWidth": 1,
718
- "pointSize": 5,
719
- "scaleDistribution": {
720
- "type": "linear"
721
- },
722
- "showPoints": "never",
723
- "spanNulls": true,
724
- "stacking": {
725
- "group": "A",
726
- "mode": "none"
727
- },
728
- "thresholdsStyle": {
729
- "mode": "off"
730
- }
731
- },
732
- "mappings": [],
733
- "thresholds": {
734
- "mode": "absolute",
735
- "steps": [
736
- {
737
- "color": "green",
738
- "value": null
739
- },
740
- {
741
- "color": "red",
742
- "value": 80
743
- }
744
- ]
745
- },
746
- "unit": "bytes"
747
- },
748
- "overrides": []
749
- },
750
- "gridPos": {
751
- "h": 8,
752
- "w": 8,
753
- "x": 0,
754
- "y": 21
755
- },
756
- "id": 20,
757
- "links": [],
758
- "options": {
759
- "legend": {
760
- "calcs": [
761
- "mean",
762
- "lastNotNull",
763
- "max",
764
- "min"
765
- ],
766
- "displayMode": "table",
767
- "placement": "bottom"
768
- },
769
- "tooltip": {
770
- "mode": "single"
771
- }
772
- },
773
- "pluginVersion": "8.1.0",
774
- "targets": [
775
- {
776
- "exemplar": true,
777
- "expr": "nodejs_heap_space_size_total_bytes{job=\"nestjs-example\"}",
778
- "format": "time_series",
779
- "interval": "",
780
- "intervalFactor": 1,
781
- "legendFormat": "Heap Total - {{space}}",
782
- "refId": "A"
783
- }
784
- ],
785
- "timeFrom": null,
786
- "timeShift": null,
787
- "title": "Heap Total Detail",
788
- "type": "timeseries"
789
- },
790
- {
791
- "datasource": "Prometheus",
792
- "fieldConfig": {
793
- "defaults": {
794
- "color": {
795
- "mode": "palette-classic"
796
- },
797
- "custom": {
798
- "axisLabel": "",
799
- "axisPlacement": "auto",
800
- "barAlignment": 0,
801
- "drawStyle": "line",
802
- "fillOpacity": 10,
803
- "gradientMode": "none",
804
- "hideFrom": {
805
- "legend": false,
806
- "tooltip": false,
807
- "viz": false
808
- },
809
- "lineInterpolation": "linear",
810
- "lineWidth": 1,
811
- "pointSize": 5,
812
- "scaleDistribution": {
813
- "type": "linear"
814
- },
815
- "showPoints": "never",
816
- "spanNulls": true,
817
- "stacking": {
818
- "group": "A",
819
- "mode": "none"
820
- },
821
- "thresholdsStyle": {
822
- "mode": "off"
823
- }
824
- },
825
- "mappings": [],
826
- "thresholds": {
827
- "mode": "absolute",
828
- "steps": [
829
- {
830
- "color": "green",
831
- "value": null
832
- },
833
- {
834
- "color": "red",
835
- "value": 80
836
- }
837
- ]
838
- },
839
- "unit": "bytes"
840
- },
841
- "overrides": []
842
- },
843
- "gridPos": {
844
- "h": 8,
845
- "w": 8,
846
- "x": 8,
847
- "y": 21
848
- },
849
- "id": 22,
850
- "links": [],
851
- "options": {
852
- "legend": {
853
- "calcs": [
854
- "mean",
855
- "lastNotNull",
856
- "max",
857
- "min"
858
- ],
859
- "displayMode": "table",
860
- "placement": "bottom"
861
- },
862
- "tooltip": {
863
- "mode": "single"
864
- }
865
- },
866
- "pluginVersion": "8.1.0",
867
- "targets": [
868
- {
869
- "exemplar": true,
870
- "expr": "nodejs_heap_space_size_available_bytes{job=\"nestjs-example\"}",
871
- "format": "time_series",
872
- "interval": "",
873
- "intervalFactor": 1,
874
- "legendFormat": "Heap Used - {{space}}",
875
- "refId": "A"
876
- }
877
- ],
878
- "timeFrom": null,
879
- "timeShift": null,
880
- "title": "Heap Available Detail",
881
- "type": "timeseries"
882
- },
883
- {
884
- "datasource": "Prometheus",
885
- "fieldConfig": {
886
- "defaults": {
887
- "color": {
888
- "mode": "palette-classic"
889
- },
890
- "custom": {
891
- "axisLabel": "",
892
- "axisPlacement": "auto",
893
- "barAlignment": 0,
894
- "drawStyle": "line",
895
- "fillOpacity": 10,
896
- "gradientMode": "none",
897
- "hideFrom": {
898
- "legend": false,
899
- "tooltip": false,
900
- "viz": false
901
- },
902
- "lineInterpolation": "linear",
903
- "lineWidth": 1,
904
- "pointSize": 5,
905
- "scaleDistribution": {
906
- "type": "linear"
907
- },
908
- "showPoints": "never",
909
- "spanNulls": true,
910
- "stacking": {
911
- "group": "A",
912
- "mode": "none"
913
- },
914
- "thresholdsStyle": {
915
- "mode": "off"
916
- }
917
- },
918
- "mappings": [],
919
- "thresholds": {
920
- "mode": "absolute",
921
- "steps": [
922
- {
923
- "color": "green",
924
- "value": null
925
- },
926
- {
927
- "color": "red",
928
- "value": 80
929
- }
930
- ]
931
- },
932
- "unit": "bytes"
933
- },
934
- "overrides": []
935
- },
936
- "gridPos": {
937
- "h": 8,
938
- "w": 8,
939
- "x": 16,
940
- "y": 21
941
- },
942
- "id": 28,
943
- "links": [],
944
- "options": {
945
- "legend": {
946
- "calcs": [
947
- "mean",
948
- "lastNotNull",
949
- "max",
950
- "min"
951
- ],
952
- "displayMode": "table",
953
- "placement": "bottom"
954
- },
955
- "tooltip": {
956
- "mode": "single"
957
- }
958
- },
959
- "pluginVersion": "8.1.0",
960
- "targets": [
961
- {
962
- "expr": "nodejs_heap_space_size_used_bytes{job=\"nestjs-example\"}",
963
- "format": "time_series",
964
- "interval": "",
965
- "intervalFactor": 1,
966
- "legendFormat": "Heap Used - {{pod}} - {{space}}",
967
- "refId": "A"
968
- }
969
- ],
970
- "timeFrom": null,
971
- "timeShift": null,
972
- "title": "Heap Used Detail",
973
- "type": "timeseries"
974
- },
975
- {
976
- "collapsed": false,
977
- "datasource": null,
978
- "gridPos": {
979
- "h": 1,
980
- "w": 24,
981
- "x": 0,
982
- "y": 29
983
- },
984
- "id": 30,
985
- "panels": [],
986
- "title": "Http Metrics",
987
- "type": "row"
988
- },
989
- {
990
- "aliasColors": {},
991
- "bars": false,
992
- "dashLength": 10,
993
- "dashes": false,
994
- "datasource": "Prometheus",
995
- "fieldConfig": {
996
- "defaults": {
997
- "links": []
998
- },
999
- "overrides": []
1000
- },
1001
- "fill": 1,
1002
- "fillGradient": 0,
1003
- "gridPos": {
1004
- "h": 8,
1005
- "w": 12,
1006
- "x": 0,
1007
- "y": 30
1008
- },
1009
- "hiddenSeries": false,
1010
- "id": 32,
1011
- "legend": {
1012
- "alignAsTable": true,
1013
- "avg": true,
1014
- "current": false,
1015
- "hideEmpty": true,
1016
- "hideZero": true,
1017
- "max": false,
1018
- "min": false,
1019
- "rightSide": true,
1020
- "show": true,
1021
- "sort": "avg",
1022
- "sortDesc": true,
1023
- "total": false,
1024
- "values": true
1025
- },
1026
- "lines": true,
1027
- "linewidth": 1,
1028
- "links": [],
1029
- "nullPointMode": "null",
1030
- "options": {
1031
- "alertThreshold": true
1032
- },
1033
- "paceLength": 10,
1034
- "percentage": false,
1035
- "pluginVersion": "8.1.0",
1036
- "pointradius": 5,
1037
- "points": false,
1038
- "renderer": "flot",
1039
- "seriesOverrides": [],
1040
- "spaceLength": 10,
1041
- "stack": false,
1042
- "steppedLine": false,
1043
- "targets": [
1044
- {
1045
- "exemplar": true,
1046
- "expr": "histogram_quantile(0.90, sum(rate(http_request_duration_seconds_bucket{job=\"nestjs-example\"}[1m])) by (le,method,path)) * 1000",
1047
- "format": "time_series",
1048
- "interval": "",
1049
- "intervalFactor": 2,
1050
- "legendFormat": "{{method}}#{{path}}",
1051
- "refId": "A"
1052
- }
1053
- ],
1054
- "thresholds": [],
1055
- "timeFrom": null,
1056
- "timeRegions": [],
1057
- "timeShift": null,
1058
- "title": "Historic P90 response time by endpoint",
1059
- "tooltip": {
1060
- "shared": true,
1061
- "sort": 2,
1062
- "value_type": "individual"
1063
- },
1064
- "type": "graph",
1065
- "xaxis": {
1066
- "buckets": null,
1067
- "mode": "time",
1068
- "name": null,
1069
- "show": true,
1070
- "values": []
1071
- },
1072
- "yaxes": [
1073
- {
1074
- "$$hashKey": "object:282",
1075
- "format": "ms",
1076
- "label": null,
1077
- "logBase": 2,
1078
- "max": null,
1079
- "min": null,
1080
- "show": true
1081
- },
1082
- {
1083
- "$$hashKey": "object:283",
1084
- "format": "short",
1085
- "label": null,
1086
- "logBase": 1,
1087
- "max": null,
1088
- "min": null,
1089
- "show": true
1090
- }
1091
- ],
1092
- "yaxis": {
1093
- "align": false,
1094
- "alignLevel": null
1095
- }
1096
- },
1097
- {
1098
- "aliasColors": {},
1099
- "bars": false,
1100
- "dashLength": 10,
1101
- "dashes": false,
1102
- "datasource": "Prometheus",
1103
- "fieldConfig": {
1104
- "defaults": {
1105
- "links": []
1106
- },
1107
- "overrides": []
1108
- },
1109
- "fill": 1,
1110
- "fillGradient": 0,
1111
- "gridPos": {
1112
- "h": 8,
1113
- "w": 12,
1114
- "x": 12,
1115
- "y": 30
1116
- },
1117
- "hiddenSeries": false,
1118
- "id": 46,
1119
- "legend": {
1120
- "alignAsTable": true,
1121
- "avg": true,
1122
- "current": false,
1123
- "hideEmpty": true,
1124
- "hideZero": true,
1125
- "max": false,
1126
- "min": false,
1127
- "rightSide": true,
1128
- "show": true,
1129
- "sort": "avg",
1130
- "sortDesc": true,
1131
- "total": false,
1132
- "values": true
1133
- },
1134
- "lines": true,
1135
- "linewidth": 1,
1136
- "links": [],
1137
- "nullPointMode": "null",
1138
- "options": {
1139
- "alertThreshold": true
1140
- },
1141
- "paceLength": 10,
1142
- "percentage": false,
1143
- "pluginVersion": "8.1.0",
1144
- "pointradius": 5,
1145
- "points": false,
1146
- "renderer": "flot",
1147
- "seriesOverrides": [],
1148
- "spaceLength": 10,
1149
- "stack": false,
1150
- "steppedLine": false,
1151
- "targets": [
1152
- {
1153
- "expr": "histogram_quantile(0.50, sum(rate(http_request_duration_seconds_bucket{job=\"nestjs-example\"}[1m])) by (le,method,path)) * 1000",
1154
- "format": "time_series",
1155
- "interval": "",
1156
- "intervalFactor": 2,
1157
- "legendFormat": "{{method}}#{{path}}",
1158
- "refId": "A"
1159
- }
1160
- ],
1161
- "thresholds": [],
1162
- "timeFrom": null,
1163
- "timeRegions": [],
1164
- "timeShift": null,
1165
- "title": "Historic P50 response time by endpoint",
1166
- "tooltip": {
1167
- "shared": true,
1168
- "sort": 2,
1169
- "value_type": "individual"
1170
- },
1171
- "type": "graph",
1172
- "xaxis": {
1173
- "buckets": null,
1174
- "mode": "time",
1175
- "name": null,
1176
- "show": true,
1177
- "values": []
1178
- },
1179
- "yaxes": [
1180
- {
1181
- "$$hashKey": "object:282",
1182
- "format": "ms",
1183
- "label": null,
1184
- "logBase": 2,
1185
- "max": null,
1186
- "min": null,
1187
- "show": true
1188
- },
1189
- {
1190
- "$$hashKey": "object:283",
1191
- "format": "short",
1192
- "label": null,
1193
- "logBase": 1,
1194
- "max": null,
1195
- "min": null,
1196
- "show": true
1197
- }
1198
- ],
1199
- "yaxis": {
1200
- "align": false,
1201
- "alignLevel": null
1202
- }
1203
- },
1204
- {
1205
- "aliasColors": {},
1206
- "bars": false,
1207
- "dashLength": 10,
1208
- "dashes": false,
1209
- "datasource": "Prometheus",
1210
- "fill": 1,
1211
- "fillGradient": 0,
1212
- "gridPos": {
1213
- "h": 8,
1214
- "w": 12,
1215
- "x": 0,
1216
- "y": 38
1217
- },
1218
- "hiddenSeries": false,
1219
- "id": 36,
1220
- "legend": {
1221
- "alignAsTable": false,
1222
- "avg": false,
1223
- "current": false,
1224
- "max": false,
1225
- "min": false,
1226
- "rightSide": false,
1227
- "show": true,
1228
- "sideWidth": null,
1229
- "total": false,
1230
- "values": false
1231
- },
1232
- "lines": true,
1233
- "linewidth": 1,
1234
- "links": [],
1235
- "nullPointMode": "null",
1236
- "options": {
1237
- "alertThreshold": true
1238
- },
1239
- "percentage": false,
1240
- "pluginVersion": "8.1.0",
1241
- "pointradius": 2,
1242
- "points": false,
1243
- "renderer": "flot",
1244
- "repeat": null,
1245
- "seriesOverrides": [],
1246
- "spaceLength": 10,
1247
- "stack": false,
1248
- "steppedLine": false,
1249
- "targets": [
1250
- {
1251
- "exemplar": true,
1252
- "expr": "sum by (status,method) (increase(http_request_duration_seconds_count{job=\"nestjs-example\"}[$__rate_interval]))",
1253
- "format": "time_series",
1254
- "interval": "",
1255
- "intervalFactor": 1,
1256
- "legendFormat": "{{method}}: {{status}} status",
1257
- "refId": "A"
1258
- }
1259
- ],
1260
- "thresholds": [],
1261
- "timeFrom": null,
1262
- "timeRegions": [],
1263
- "timeShift": null,
1264
- "title": "HTTP Responses by status code",
1265
- "tooltip": {
1266
- "shared": true,
1267
- "sort": 0,
1268
- "value_type": "individual"
1269
- },
1270
- "type": "graph",
1271
- "xaxis": {
1272
- "buckets": null,
1273
- "mode": "time",
1274
- "name": null,
1275
- "show": true,
1276
- "values": []
1277
- },
1278
- "yaxes": [
1279
- {
1280
- "$$hashKey": "object:282",
1281
- "format": "short",
1282
- "label": null,
1283
- "logBase": 1,
1284
- "max": null,
1285
- "min": null,
1286
- "show": true
1287
- },
1288
- {
1289
- "$$hashKey": "object:283",
1290
- "format": "short",
1291
- "label": null,
1292
- "logBase": 1,
1293
- "max": null,
1294
- "min": null,
1295
- "show": true
1296
- }
1297
- ],
1298
- "yaxis": {
1299
- "align": false,
1300
- "alignLevel": null
1301
- }
1302
- },
1303
- {
1304
- "aliasColors": {},
1305
- "bars": false,
1306
- "dashLength": 10,
1307
- "dashes": false,
1308
- "datasource": "Prometheus",
1309
- "fill": 1,
1310
- "fillGradient": 0,
1311
- "gridPos": {
1312
- "h": 8,
1313
- "w": 12,
1314
- "x": 12,
1315
- "y": 38
1316
- },
1317
- "hiddenSeries": false,
1318
- "id": 34,
1319
- "legend": {
1320
- "alignAsTable": false,
1321
- "avg": false,
1322
- "current": false,
1323
- "max": false,
1324
- "min": false,
1325
- "rightSide": false,
1326
- "show": true,
1327
- "sideWidth": null,
1328
- "total": false,
1329
- "values": false
1330
- },
1331
- "lines": true,
1332
- "linewidth": 1,
1333
- "links": [],
1334
- "nullPointMode": "null",
1335
- "options": {
1336
- "alertThreshold": true
1337
- },
1338
- "percentage": false,
1339
- "pluginVersion": "8.1.0",
1340
- "pointradius": 2,
1341
- "points": false,
1342
- "renderer": "flot",
1343
- "repeat": null,
1344
- "seriesOverrides": [],
1345
- "spaceLength": 10,
1346
- "stack": false,
1347
- "steppedLine": false,
1348
- "targets": [
1349
- {
1350
- "exemplar": true,
1351
- "expr": "sum by (path) (increase(http_request_duration_seconds_count{job=\"nestjs-example\"}[$__rate_interval]))",
1352
- "format": "time_series",
1353
- "interval": "",
1354
- "intervalFactor": 1,
1355
- "legendFormat": "{{path}}",
1356
- "refId": "A"
1357
- }
1358
- ],
1359
- "thresholds": [],
1360
- "timeFrom": null,
1361
- "timeRegions": [],
1362
- "timeShift": null,
1363
- "title": "Top HTTP paths used",
1364
- "tooltip": {
1365
- "shared": true,
1366
- "sort": 0,
1367
- "value_type": "individual"
1368
- },
1369
- "type": "graph",
1370
- "xaxis": {
1371
- "buckets": null,
1372
- "mode": "time",
1373
- "name": null,
1374
- "show": true,
1375
- "values": []
1376
- },
1377
- "yaxes": [
1378
- {
1379
- "$$hashKey": "object:193",
1380
- "format": "short",
1381
- "label": null,
1382
- "logBase": 1,
1383
- "max": null,
1384
- "min": null,
1385
- "show": true
1386
- },
1387
- {
1388
- "$$hashKey": "object:194",
1389
- "format": "short",
1390
- "label": null,
1391
- "logBase": 1,
1392
- "max": null,
1393
- "min": null,
1394
- "show": true
1395
- }
1396
- ],
1397
- "yaxis": {
1398
- "align": false,
1399
- "alignLevel": null
1400
- }
1401
- },
1402
- {
1403
- "aliasColors": {},
1404
- "bars": false,
1405
- "dashLength": 10,
1406
- "dashes": false,
1407
- "datasource": "Prometheus",
1408
- "fieldConfig": {
1409
- "defaults": {
1410
- "links": []
1411
- },
1412
- "overrides": []
1413
- },
1414
- "fill": 1,
1415
- "fillGradient": 0,
1416
- "gridPos": {
1417
- "h": 8,
1418
- "w": 12,
1419
- "x": 0,
1420
- "y": 46
1421
- },
1422
- "hiddenSeries": false,
1423
- "hideTimeOverride": false,
1424
- "id": 40,
1425
- "legend": {
1426
- "alignAsTable": true,
1427
- "avg": true,
1428
- "current": true,
1429
- "hideEmpty": true,
1430
- "hideZero": true,
1431
- "max": false,
1432
- "min": false,
1433
- "rightSide": true,
1434
- "show": true,
1435
- "sort": "current",
1436
- "sortDesc": true,
1437
- "total": false,
1438
- "values": true
1439
- },
1440
- "lines": true,
1441
- "linewidth": 1,
1442
- "links": [],
1443
- "nullPointMode": "connected",
1444
- "options": {
1445
- "alertThreshold": true
1446
- },
1447
- "paceLength": 10,
1448
- "percentage": false,
1449
- "pluginVersion": "8.1.0",
1450
- "pointradius": 5,
1451
- "points": false,
1452
- "renderer": "flot",
1453
- "seriesOverrides": [
1454
- {
1455
- "$$hashKey": "object:116",
1456
- "alias": ""
1457
- }
1458
- ],
1459
- "spaceLength": 10,
1460
- "stack": true,
1461
- "steppedLine": false,
1462
- "targets": [
1463
- {
1464
- "expr": "sum(rate(http_request_duration_seconds_count{job=\"nestjs-example\"}[1m])) by (status)",
1465
- "format": "time_series",
1466
- "interval": "",
1467
- "intervalFactor": 2,
1468
- "legendFormat": "{{status}}",
1469
- "refId": "A"
1470
- }
1471
- ],
1472
- "thresholds": [],
1473
- "timeFrom": null,
1474
- "timeRegions": [],
1475
- "timeShift": null,
1476
- "title": "Throughput by status",
1477
- "tooltip": {
1478
- "shared": true,
1479
- "sort": 2,
1480
- "value_type": "individual"
1481
- },
1482
- "type": "graph",
1483
- "xaxis": {
1484
- "buckets": null,
1485
- "mode": "time",
1486
- "name": null,
1487
- "show": true,
1488
- "values": []
1489
- },
1490
- "yaxes": [
1491
- {
1492
- "$$hashKey": "object:2457",
1493
- "format": "reqps",
1494
- "label": null,
1495
- "logBase": 1,
1496
- "max": null,
1497
- "min": "0",
1498
- "show": true
1499
- },
1500
- {
1501
- "$$hashKey": "object:2458",
1502
- "format": "short",
1503
- "label": null,
1504
- "logBase": 1,
1505
- "max": null,
1506
- "min": null,
1507
- "show": true
1508
- }
1509
- ],
1510
- "yaxis": {
1511
- "align": false,
1512
- "alignLevel": null
1513
- }
1514
- },
1515
- {
1516
- "aliasColors": {},
1517
- "bars": false,
1518
- "dashLength": 10,
1519
- "dashes": false,
1520
- "datasource": "Prometheus",
1521
- "fieldConfig": {
1522
- "defaults": {
1523
- "links": []
1524
- },
1525
- "overrides": []
1526
- },
1527
- "fill": 1,
1528
- "fillGradient": 0,
1529
- "gridPos": {
1530
- "h": 8,
1531
- "w": 12,
1532
- "x": 12,
1533
- "y": 46
1534
- },
1535
- "hiddenSeries": false,
1536
- "id": 38,
1537
- "legend": {
1538
- "alignAsTable": true,
1539
- "avg": true,
1540
- "current": true,
1541
- "hideEmpty": true,
1542
- "max": false,
1543
- "min": false,
1544
- "rightSide": true,
1545
- "show": false,
1546
- "total": false,
1547
- "values": true
1548
- },
1549
- "lines": true,
1550
- "linewidth": 1,
1551
- "links": [],
1552
- "nullPointMode": "null",
1553
- "options": {
1554
- "alertThreshold": true
1555
- },
1556
- "paceLength": 10,
1557
- "percentage": false,
1558
- "pluginVersion": "8.1.0",
1559
- "pointradius": 5,
1560
- "points": false,
1561
- "renderer": "flot",
1562
- "seriesOverrides": [],
1563
- "spaceLength": 10,
1564
- "stack": false,
1565
- "steppedLine": false,
1566
- "targets": [
1567
- {
1568
- "exemplar": true,
1569
- "expr": "sum(rate(http_request_duration_seconds_sum{job=\"nestjs-example\"}[1m])) * 10\n/\nsum(rate(http_request_duration_seconds_count{job=\"nestjs-example\"}[1m])) ",
1570
- "format": "time_series",
1571
- "interval": "",
1572
- "intervalFactor": 2,
1573
- "legendFormat": "Total",
1574
- "refId": "B"
1575
- }
1576
- ],
1577
- "thresholds": [],
1578
- "timeFrom": null,
1579
- "timeRegions": [],
1580
- "timeShift": null,
1581
- "title": "Average response time",
1582
- "tooltip": {
1583
- "shared": true,
1584
- "sort": 0,
1585
- "value_type": "individual"
1586
- },
1587
- "type": "graph",
1588
- "xaxis": {
1589
- "buckets": null,
1590
- "mode": "time",
1591
- "name": null,
1592
- "show": true,
1593
- "values": []
1594
- },
1595
- "yaxes": [
1596
- {
1597
- "$$hashKey": "object:2279",
1598
- "format": "dtdurations",
1599
- "label": null,
1600
- "logBase": 1,
1601
- "max": null,
1602
- "min": "0",
1603
- "show": true
1604
- },
1605
- {
1606
- "$$hashKey": "object:2280",
1607
- "format": "short",
1608
- "label": null,
1609
- "logBase": 1,
1610
- "max": null,
1611
- "min": null,
1612
- "show": true
1613
- }
1614
- ],
1615
- "yaxis": {
1616
- "align": false,
1617
- "alignLevel": null
1618
- }
1619
- },
1620
- {
1621
- "aliasColors": {},
1622
- "bars": false,
1623
- "dashLength": 10,
1624
- "dashes": false,
1625
- "datasource": "Prometheus",
1626
- "description": "",
1627
- "fill": 1,
1628
- "fillGradient": 0,
1629
- "gridPos": {
1630
- "h": 8,
1631
- "w": 12,
1632
- "x": 0,
1633
- "y": 54
1634
- },
1635
- "hiddenSeries": false,
1636
- "id": 44,
1637
- "legend": {
1638
- "avg": false,
1639
- "current": false,
1640
- "max": false,
1641
- "min": false,
1642
- "show": true,
1643
- "total": false,
1644
- "values": false
1645
- },
1646
- "lines": true,
1647
- "linewidth": 1,
1648
- "links": [],
1649
- "nullPointMode": "null",
1650
- "options": {
1651
- "alertThreshold": true
1652
- },
1653
- "paceLength": 10,
1654
- "percentage": false,
1655
- "pluginVersion": "8.1.0",
1656
- "pointradius": 2,
1657
- "points": false,
1658
- "renderer": "flot",
1659
- "seriesOverrides": [],
1660
- "spaceLength": 10,
1661
- "stack": false,
1662
- "steppedLine": false,
1663
- "targets": [
1664
- {
1665
- "exemplar": true,
1666
- "expr": "sum(rate(http_request_duration_seconds_count{status=~\"[45]..\", job=\"nestjs-example\"}[1m])) by (job) / sum(rate(http_request_duration_seconds_count{job=\"nestjs-example\"}[1m])) by (job)",
1667
- "format": "time_series",
1668
- "interval": "",
1669
- "intervalFactor": 1,
1670
- "legendFormat": "error ratio",
1671
- "refId": "A"
1672
- }
1673
- ],
1674
- "thresholds": [],
1675
- "timeFrom": null,
1676
- "timeRegions": [],
1677
- "timeShift": null,
1678
- "title": "Probe Error Ratio",
1679
- "tooltip": {
1680
- "shared": true,
1681
- "sort": 0,
1682
- "value_type": "individual"
1683
- },
1684
- "type": "graph",
1685
- "xaxis": {
1686
- "buckets": null,
1687
- "mode": "time",
1688
- "name": null,
1689
- "show": true,
1690
- "values": []
1691
- },
1692
- "yaxes": [
1693
- {
1694
- "$$hashKey": "object:890",
1695
- "format": "percentunit",
1696
- "label": null,
1697
- "logBase": 1,
1698
- "max": "1.1",
1699
- "min": "0",
1700
- "show": true
1701
- },
1702
- {
1703
- "$$hashKey": "object:891",
1704
- "format": "short",
1705
- "label": null,
1706
- "logBase": 1,
1707
- "max": null,
1708
- "min": null,
1709
- "show": true
1710
- }
1711
- ],
1712
- "yaxis": {
1713
- "align": false,
1714
- "alignLevel": null
1715
- }
1716
- },
1717
- {
1718
- "aliasColors": {},
1719
- "bars": false,
1720
- "dashLength": 10,
1721
- "dashes": false,
1722
- "datasource": "Prometheus",
1723
- "fill": 1,
1724
- "fillGradient": 0,
1725
- "gridPos": {
1726
- "h": 8,
1727
- "w": 12,
1728
- "x": 12,
1729
- "y": 54
1730
- },
1731
- "hiddenSeries": false,
1732
- "id": 42,
1733
- "legend": {
1734
- "avg": false,
1735
- "current": false,
1736
- "max": false,
1737
- "min": false,
1738
- "show": true,
1739
- "total": false,
1740
- "values": false
1741
- },
1742
- "lines": true,
1743
- "linewidth": 1,
1744
- "links": [],
1745
- "nullPointMode": "null",
1746
- "options": {
1747
- "alertThreshold": true
1748
- },
1749
- "paceLength": 10,
1750
- "percentage": false,
1751
- "pluginVersion": "8.1.0",
1752
- "pointradius": 2,
1753
- "points": false,
1754
- "renderer": "flot",
1755
- "seriesOverrides": [],
1756
- "spaceLength": 10,
1757
- "stack": false,
1758
- "steppedLine": false,
1759
- "targets": [
1760
- {
1761
- "exemplar": true,
1762
- "expr": "sum(rate(http_request_duration_seconds_count{job=\"nestjs-example\"}[1m])) by (job)",
1763
- "format": "time_series",
1764
- "interval": "",
1765
- "intervalFactor": 1,
1766
- "legendFormat": "total requests rate",
1767
- "refId": "A"
1768
- },
1769
- {
1770
- "expr": "sum(rate(http_request_duration_seconds_count{status=\"500\", job=\"nestjs-example\"}[1m])) by (job)",
1771
- "format": "time_series",
1772
- "interval": "",
1773
- "intervalFactor": 1,
1774
- "legendFormat": "error responses rate",
1775
- "refId": "B"
1776
- }
1777
- ],
1778
- "thresholds": [],
1779
- "timeFrom": null,
1780
- "timeRegions": [],
1781
- "timeShift": null,
1782
- "title": "Requests Rate",
1783
- "tooltip": {
1784
- "shared": true,
1785
- "sort": 0,
1786
- "value_type": "individual"
1787
- },
1788
- "type": "graph",
1789
- "xaxis": {
1790
- "buckets": null,
1791
- "mode": "time",
1792
- "name": null,
1793
- "show": true,
1794
- "values": []
1795
- },
1796
- "yaxes": [
1797
- {
1798
- "$$hashKey": "object:730",
1799
- "format": "reqps",
1800
- "label": null,
1801
- "logBase": 1,
1802
- "max": null,
1803
- "min": 0,
1804
- "show": true
1805
- },
1806
- {
1807
- "$$hashKey": "object:731",
1808
- "format": "short",
1809
- "label": null,
1810
- "logBase": 1,
1811
- "max": null,
1812
- "min": null,
1813
- "show": true
1814
- }
1815
- ],
1816
- "yaxis": {
1817
- "align": false,
1818
- "alignLevel": null
1819
- }
1820
- }
1821
- ],
1822
- "refresh": "5s",
1823
- "schemaVersion": 30,
1824
- "style": "dark",
1825
- "tags": [],
1826
- "templating": {
1827
- "list": []
1828
- },
1829
- "time": {
1830
- "from": "now-15m",
1831
- "to": "now"
1832
- },
1833
- "timepicker": {},
1834
- "timezone": "",
1835
- "title": "nestjs-otel Dashboard",
1836
- "uid": "0C8q2TGnk",
1837
- "version": 8
1838
- }