@interopio/insights-metrics 0.0.171 → 0.0.172

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 (196) hide show
  1. package/dist/constants.d.ts +27 -0
  2. package/dist/constants.js +31 -0
  3. package/dist/constants.js.map +1 -0
  4. package/dist/factory/builder.d.ts +34 -0
  5. package/dist/factory/builder.js +290 -0
  6. package/dist/factory/builder.js.map +1 -0
  7. package/dist/factory/factory.d.ts +10 -0
  8. package/dist/factory/factory.js +71 -0
  9. package/dist/factory/factory.js.map +1 -0
  10. package/dist/index.d.ts +4 -0
  11. package/dist/index.js +41 -6
  12. package/dist/index.js.map +1 -1
  13. package/dist/manager.d.ts +26 -0
  14. package/dist/manager.js +164 -0
  15. package/dist/manager.js.map +1 -0
  16. package/dist/meter/lazyProvider.d.ts +15 -0
  17. package/dist/meter/lazyProvider.js +36 -0
  18. package/dist/meter/lazyProvider.js.map +1 -0
  19. package/dist/meter/providerFactory.d.ts +6 -0
  20. package/dist/meter/providerFactory.js +38 -0
  21. package/dist/meter/providerFactory.js.map +1 -0
  22. package/dist/metrics/application/count.d.ts +19 -0
  23. package/dist/metrics/application/count.js +69 -0
  24. package/dist/metrics/application/count.js.map +1 -0
  25. package/dist/metrics/application/cpu.d.ts +10 -0
  26. package/dist/metrics/application/cpu.js +48 -0
  27. package/dist/metrics/application/cpu.js.map +1 -0
  28. package/dist/metrics/application/crash.d.ts +16 -0
  29. package/dist/metrics/application/crash.js +49 -0
  30. package/dist/metrics/application/crash.js.map +1 -0
  31. package/dist/metrics/application/duration.d.ts +25 -0
  32. package/dist/metrics/application/duration.js +105 -0
  33. package/dist/metrics/application/duration.js.map +1 -0
  34. package/dist/metrics/application/durationSoft.d.ts +4 -0
  35. package/dist/metrics/application/durationSoft.js +34 -0
  36. package/dist/metrics/application/durationSoft.js.map +1 -0
  37. package/dist/metrics/application/error.d.ts +16 -0
  38. package/dist/metrics/application/error.js +49 -0
  39. package/dist/metrics/application/error.js.map +1 -0
  40. package/dist/metrics/application/memory.d.ts +11 -0
  41. package/dist/metrics/application/memory.js +50 -0
  42. package/dist/metrics/application/memory.js.map +1 -0
  43. package/dist/metrics/application/started.d.ts +16 -0
  44. package/dist/metrics/application/started.js +49 -0
  45. package/dist/metrics/application/started.js.map +1 -0
  46. package/dist/metrics/application/startup.d.ts +16 -0
  47. package/dist/metrics/application/startup.js +50 -0
  48. package/dist/metrics/application/startup.js.map +1 -0
  49. package/dist/metrics/application/stopped.d.ts +16 -0
  50. package/dist/metrics/application/stopped.js +49 -0
  51. package/dist/metrics/application/stopped.js.map +1 -0
  52. package/dist/metrics/base/base.d.ts +29 -0
  53. package/dist/metrics/base/base.js +198 -0
  54. package/dist/metrics/base/base.js.map +1 -0
  55. package/dist/metrics/base/observable.d.ts +19 -0
  56. package/dist/metrics/base/observable.js +83 -0
  57. package/dist/metrics/base/observable.js.map +1 -0
  58. package/dist/metrics/base/observableGauge.d.ts +6 -0
  59. package/dist/metrics/base/observableGauge.js +12 -0
  60. package/dist/metrics/base/observableGauge.js.map +1 -0
  61. package/dist/metrics/base/zeroOutClosedAppObservableGaugeMetricBase.d.ts +12 -0
  62. package/dist/metrics/base/zeroOutClosedAppObservableGaugeMetricBase.js +39 -0
  63. package/dist/metrics/base/zeroOutClosedAppObservableGaugeMetricBase.js.map +1 -0
  64. package/dist/metrics/custom/customCounter.d.ts +10 -0
  65. package/dist/metrics/custom/customCounter.js +24 -0
  66. package/dist/metrics/custom/customCounter.js.map +1 -0
  67. package/dist/metrics/custom/customGauge.d.ts +10 -0
  68. package/dist/metrics/custom/customGauge.js +24 -0
  69. package/dist/metrics/custom/customGauge.js.map +1 -0
  70. package/dist/metrics/custom/customHistogram.d.ts +10 -0
  71. package/dist/metrics/custom/customHistogram.js +24 -0
  72. package/dist/metrics/custom/customHistogram.js.map +1 -0
  73. package/dist/metrics/custom/customObservableCounter.d.ts +6 -0
  74. package/dist/metrics/custom/customObservableCounter.js +13 -0
  75. package/dist/metrics/custom/customObservableCounter.js.map +1 -0
  76. package/dist/metrics/custom/customObservableGauge.d.ts +6 -0
  77. package/dist/metrics/custom/customObservableGauge.js +13 -0
  78. package/dist/metrics/custom/customObservableGauge.js.map +1 -0
  79. package/dist/metrics/custom/customObservableUpDownCounter.d.ts +6 -0
  80. package/dist/metrics/custom/customObservableUpDownCounter.js +13 -0
  81. package/dist/metrics/custom/customObservableUpDownCounter.js.map +1 -0
  82. package/dist/metrics/custom/customUpDownCounter.d.ts +10 -0
  83. package/dist/metrics/custom/customUpDownCounter.js +24 -0
  84. package/dist/metrics/custom/customUpDownCounter.js.map +1 -0
  85. package/dist/metrics/layout/startup.d.ts +15 -0
  86. package/dist/metrics/layout/startup.js +47 -0
  87. package/dist/metrics/layout/startup.js.map +1 -0
  88. package/dist/metrics/platform/error.d.ts +15 -0
  89. package/dist/metrics/platform/error.js +47 -0
  90. package/dist/metrics/platform/error.js.map +1 -0
  91. package/dist/metrics/platform/startup.d.ts +16 -0
  92. package/dist/metrics/platform/startup.js +63 -0
  93. package/dist/metrics/platform/startup.js.map +1 -0
  94. package/dist/metrics/system/cpu.d.ts +10 -0
  95. package/dist/metrics/system/cpu.js +50 -0
  96. package/dist/metrics/system/cpu.js.map +1 -0
  97. package/dist/metrics/system/memory.d.ts +10 -0
  98. package/dist/metrics/system/memory.js +51 -0
  99. package/dist/metrics/system/memory.js.map +1 -0
  100. package/dist/metrics/workspace/count.d.ts +23 -0
  101. package/dist/metrics/workspace/count.js +94 -0
  102. package/dist/metrics/workspace/count.js.map +1 -0
  103. package/dist/metrics/workspace/selected.d.ts +14 -0
  104. package/dist/metrics/workspace/selected.js +47 -0
  105. package/dist/metrics/workspace/selected.js.map +1 -0
  106. package/dist/metrics/workspace/started.d.ts +17 -0
  107. package/dist/metrics/workspace/started.js +49 -0
  108. package/dist/metrics/workspace/started.js.map +1 -0
  109. package/dist/metrics/workspace/startupLegacy.d.ts +8 -0
  110. package/dist/metrics/workspace/startupLegacy.js +20 -0
  111. package/dist/metrics/workspace/startupLegacy.js.map +1 -0
  112. package/dist/metrics/workspace/stopped.d.ts +15 -0
  113. package/dist/metrics/workspace/stopped.js +46 -0
  114. package/dist/metrics/workspace/stopped.js.map +1 -0
  115. package/dist/metrics/workspace/timedGauge.d.ts +14 -0
  116. package/dist/metrics/workspace/timedGauge.js +54 -0
  117. package/dist/metrics/workspace/timedGauge.js.map +1 -0
  118. package/dist/settings/builder.d.ts +26 -0
  119. package/dist/settings/builder.js +142 -0
  120. package/dist/settings/builder.js.map +1 -0
  121. package/dist/settings/default.d.ts +40 -0
  122. package/dist/settings/default.js +178 -0
  123. package/dist/settings/default.js.map +1 -0
  124. package/dist/validation/builder.d.ts +4 -0
  125. package/dist/validation/builder.js +12 -0
  126. package/dist/validation/builder.js.map +1 -0
  127. package/dist/validation/container.d.ts +4 -0
  128. package/dist/validation/container.js +14 -0
  129. package/dist/validation/container.js.map +1 -0
  130. package/dist/validation/metrics/application/count.d.ts +7 -0
  131. package/dist/validation/metrics/application/count.js +21 -0
  132. package/dist/validation/metrics/application/count.js.map +1 -0
  133. package/dist/validation/metrics/application/duration.d.ts +6 -0
  134. package/dist/validation/metrics/application/duration.js +17 -0
  135. package/dist/validation/metrics/application/duration.js.map +1 -0
  136. package/dist/validation/metrics/application/error.d.ts +6 -0
  137. package/dist/validation/metrics/application/error.js +16 -0
  138. package/dist/validation/metrics/application/error.js.map +1 -0
  139. package/dist/validation/metrics/application/started.d.ts +6 -0
  140. package/dist/validation/metrics/application/started.js +16 -0
  141. package/dist/validation/metrics/application/started.js.map +1 -0
  142. package/dist/validation/metrics/application/startupHistogram.d.ts +6 -0
  143. package/dist/validation/metrics/application/startupHistogram.js +18 -0
  144. package/dist/validation/metrics/application/startupHistogram.js.map +1 -0
  145. package/dist/validation/metrics/application/stopped.d.ts +6 -0
  146. package/dist/validation/metrics/application/stopped.js +16 -0
  147. package/dist/validation/metrics/application/stopped.js.map +1 -0
  148. package/dist/validation/metrics/base/base.d.ts +5 -0
  149. package/dist/validation/metrics/base/base.js +22 -0
  150. package/dist/validation/metrics/base/base.js.map +1 -0
  151. package/dist/validation/metrics/base/gauge.d.ts +5 -0
  152. package/dist/validation/metrics/base/gauge.js +12 -0
  153. package/dist/validation/metrics/base/gauge.js.map +1 -0
  154. package/dist/validation/metrics/builder.d.ts +2 -0
  155. package/dist/validation/metrics/builder.js +7 -0
  156. package/dist/validation/metrics/builder.js.map +1 -0
  157. package/dist/validation/metrics/factory.d.ts +4 -0
  158. package/dist/validation/metrics/factory.js +13 -0
  159. package/dist/validation/metrics/factory.js.map +1 -0
  160. package/dist/validation/metrics/factoryBuilder.d.ts +5 -0
  161. package/dist/validation/metrics/factoryBuilder.js +23 -0
  162. package/dist/validation/metrics/factoryBuilder.js.map +1 -0
  163. package/dist/validation/metrics/layout/startupHistogram.d.ts +6 -0
  164. package/dist/validation/metrics/layout/startupHistogram.js +18 -0
  165. package/dist/validation/metrics/layout/startupHistogram.js.map +1 -0
  166. package/dist/validation/metrics/manager.d.ts +4 -0
  167. package/dist/validation/metrics/manager.js +15 -0
  168. package/dist/validation/metrics/manager.js.map +1 -0
  169. package/dist/validation/metrics/meterFactory.d.ts +2 -0
  170. package/dist/validation/metrics/meterFactory.js +8 -0
  171. package/dist/validation/metrics/meterFactory.js.map +1 -0
  172. package/dist/validation/metrics/perf.d.ts +8 -0
  173. package/dist/validation/metrics/perf.js +41 -0
  174. package/dist/validation/metrics/perf.js.map +1 -0
  175. package/dist/validation/metrics/platform/crash.d.ts +6 -0
  176. package/dist/validation/metrics/platform/crash.js +16 -0
  177. package/dist/validation/metrics/platform/crash.js.map +1 -0
  178. package/dist/validation/metrics/platform/error.d.ts +6 -0
  179. package/dist/validation/metrics/platform/error.js +15 -0
  180. package/dist/validation/metrics/platform/error.js.map +1 -0
  181. package/dist/validation/metrics/platform/startup.d.ts +6 -0
  182. package/dist/validation/metrics/platform/startup.js +18 -0
  183. package/dist/validation/metrics/platform/startup.js.map +1 -0
  184. package/dist/validation/metrics/settingsBuilder.d.ts +4 -0
  185. package/dist/validation/metrics/settingsBuilder.js +26 -0
  186. package/dist/validation/metrics/settingsBuilder.js.map +1 -0
  187. package/dist/validation/metrics/workspace/count.d.ts +8 -0
  188. package/dist/validation/metrics/workspace/count.js +25 -0
  189. package/dist/validation/metrics/workspace/count.js.map +1 -0
  190. package/dist/validation/metrics/workspace/startedOrStoppedMetric.d.ts +8 -0
  191. package/dist/validation/metrics/workspace/startedOrStoppedMetric.js +19 -0
  192. package/dist/validation/metrics/workspace/startedOrStoppedMetric.js.map +1 -0
  193. package/dist/validation/validator.d.ts +4 -0
  194. package/dist/validation/validator.js +15 -0
  195. package/dist/validation/validator.js.map +1 -0
  196. package/package.json +2 -1
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MetricsManager = void 0;
13
+ const manager_1 = require("./validation/metrics/manager");
14
+ const constants_1 = require("./constants");
15
+ const otel_1 = require("@interopio/otel");
16
+ class MetricsManager {
17
+ constructor(otelSettings, settings, metricsFactory, meterProvider, logger) {
18
+ this.otelSettings = otelSettings;
19
+ this.settings = settings;
20
+ this.metricsFactory = metricsFactory;
21
+ this.meterProvider = meterProvider;
22
+ this.logger = logger;
23
+ this.metrics = new Map();
24
+ this.started = false;
25
+ if ((otelSettings === null || otelSettings === void 0 ? void 0 : otelSettings.logSettingsOnStartup) !== false) {
26
+ logger === null || logger === void 0 ? void 0 : logger.info(`Starting MetricsManager with settings ${(0, otel_1.safeStringify)(settings)}`);
27
+ }
28
+ const validator = new manager_1.MetricsManagerValidator();
29
+ validator.validate(this);
30
+ }
31
+ get(name) {
32
+ const metric = this.getOrCreateMetric(name);
33
+ return metric;
34
+ }
35
+ getFromSettings(settings) {
36
+ const metric = this.getOrCreateMetricFromSettings(settings);
37
+ return metric;
38
+ }
39
+ getObservable(name, observeCallback, subscribeCallback, unsubscribeCallback) {
40
+ const metric = this.getOrCreateMetric(name, observeCallback, subscribeCallback, unsubscribeCallback);
41
+ return metric;
42
+ }
43
+ getObservableFromSettings(settings, observeCallback, subscribeCallback, unsubscribeCallback) {
44
+ const metric = this.getOrCreateMetricFromSettings(settings, observeCallback, subscribeCallback, unsubscribeCallback);
45
+ return metric;
46
+ }
47
+ start() {
48
+ var _a;
49
+ return __awaiter(this, void 0, void 0, function* () {
50
+ try {
51
+ this.createEnabledMetrics((_a = this.settings.metrics) !== null && _a !== void 0 ? _a : []);
52
+ for (const metricKvp of this.metrics) {
53
+ const metric = metricKvp[1];
54
+ yield this.startMetric(metric);
55
+ }
56
+ this.started = true;
57
+ this.logger.debug("metrics manager has been started");
58
+ }
59
+ catch (error) {
60
+ const message = "error while starting metrics manager";
61
+ this.logger.warn(message, error);
62
+ }
63
+ });
64
+ }
65
+ stop() {
66
+ return __awaiter(this, void 0, void 0, function* () {
67
+ try {
68
+ for (const metricKvp of this.metrics) {
69
+ const metric = metricKvp[1];
70
+ yield this.stopMetric(metric);
71
+ }
72
+ yield this.meterProvider.forceFlush();
73
+ this.started = false;
74
+ this.logger.debug("metrics manager has been stopped");
75
+ }
76
+ catch (error) {
77
+ const message = "error while stopping metrics manager";
78
+ this.logger.warn(message, error);
79
+ }
80
+ });
81
+ }
82
+ waitForFinalExport(timeoutMs) {
83
+ return __awaiter(this, void 0, void 0, function* () {
84
+ const now = new Date();
85
+ this.meterProvider.metricReader.collect({ timeoutMillis: timeoutMs });
86
+ const remainingMs = timeoutMs ? timeoutMs - (new Date().getTime() - now.getTime()) : undefined;
87
+ this.meterProvider.metricReader.forceFlush({ timeoutMillis: remainingMs });
88
+ });
89
+ }
90
+ createEnabledMetrics(metrics) {
91
+ const notCreateYet = metrics.filter((m) => { var _a; return !this.metrics.has((_a = m.name) !== null && _a !== void 0 ? _a : m.type); });
92
+ const enabled = notCreateYet.filter((m) => m.enabled);
93
+ enabled.forEach((metricSettings) => this.createMetric(metricSettings));
94
+ }
95
+ getOrCreateMetric(name, observeCallback, subscribeCallback, unsubscribeCallback) {
96
+ var _a;
97
+ const hasMetric = this.metrics.has(name);
98
+ if (hasMetric) {
99
+ return this.metrics.get(name);
100
+ }
101
+ else {
102
+ let metric;
103
+ const metricSettings = (_a = this.settings.metrics) === null || _a === void 0 ? void 0 : _a.find((m) => m.name === name);
104
+ if (metricSettings) {
105
+ metric = this.createMetric(metricSettings, observeCallback, subscribeCallback, unsubscribeCallback);
106
+ }
107
+ return metric;
108
+ }
109
+ }
110
+ getOrCreateMetricFromSettings(settings, observeCallback, subscribeCallback, unsubscribeCallback) {
111
+ var _a;
112
+ if (!settings.name) {
113
+ throw new Error("settings.name not defined");
114
+ }
115
+ const hasMetric = this.metrics.has(settings.name);
116
+ if (hasMetric) {
117
+ return this.metrics.get(settings.name);
118
+ }
119
+ else {
120
+ return this.createMetric(Object.assign(Object.assign({}, settings), { enabled: (_a = settings.enabled) !== null && _a !== void 0 ? _a : true }), observeCallback, subscribeCallback, unsubscribeCallback);
121
+ }
122
+ }
123
+ createMetric(settings, observeCallback, subscribeCallback, unsubscribeCallback) {
124
+ var _a;
125
+ try {
126
+ const providedSettings = settings.additionalAttributes;
127
+ settings = Object.assign(Object.assign({}, settings), { description: settings.description || constants_1.Defaults.DEFAULT_METRIC_DESCRIPTION, platformVersion: settings.platformVersion || this.otelSettings.platformVersion || "unknown", user: settings.user || this.otelSettings.userId || constants_1.Defaults.DEFAULT_USER, additionalAttributes: () => (Object.assign(Object.assign(Object.assign({}, otel_1.Container.errorless(this.otelSettings.additionalAttributes)), otel_1.Container.errorless(this.settings.additionalAttributes)), otel_1.Container.errorless(providedSettings))) });
128
+ const metric = this.metricsFactory.create(settings, this.settings, observeCallback, subscribeCallback, unsubscribeCallback);
129
+ if (metric) {
130
+ this.metrics.set((_a = settings.name) !== null && _a !== void 0 ? _a : settings.type, metric);
131
+ }
132
+ return metric;
133
+ }
134
+ catch (error) {
135
+ const message = `error while creating metric from type: ${settings.type}`;
136
+ this.logger.warn(message, error);
137
+ return undefined;
138
+ }
139
+ }
140
+ startMetric(metric) {
141
+ return __awaiter(this, void 0, void 0, function* () {
142
+ try {
143
+ yield metric.start();
144
+ }
145
+ catch (error) {
146
+ const message = `error while starting metric from type: ${metric.settings.type}`;
147
+ this.logger.warn(message, error);
148
+ }
149
+ });
150
+ }
151
+ stopMetric(metric) {
152
+ return __awaiter(this, void 0, void 0, function* () {
153
+ try {
154
+ yield metric.stop();
155
+ }
156
+ catch (error) {
157
+ const message = `error while stopping metric from type: ${metric.settings.type}`;
158
+ this.logger.warn(message, error);
159
+ }
160
+ });
161
+ }
162
+ }
163
+ exports.MetricsManager = MetricsManager;
164
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0DAAuE;AAGvE,2CAAuC;AAEvC,0CAA2D;AAC3D,MAAa,cAAc;IAKvB,YACW,YAAiC,EACjC,QAAoC,EACpC,cAAyC,EACzC,aAAuC,EACvC,MAAyB;QAJzB,iBAAY,GAAZ,YAAY,CAAqB;QACjC,aAAQ,GAAR,QAAQ,CAA4B;QACpC,mBAAc,GAAd,cAAc,CAA2B;QACzC,kBAAa,GAAb,aAAa,CAA0B;QACvC,WAAM,GAAN,MAAM,CAAmB;QAT5B,YAAO,GAAG,IAAI,GAAG,EAA6B,CAAC;QAEhD,YAAO,GAAG,KAAK,CAAC;QASnB,IAAI,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,oBAAoB,MAAK,KAAK,EAAE;YAC9C,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAC,yCAAyC,IAAA,oBAAa,EAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SACpF;QAED,MAAM,SAAS,GAAG,IAAI,iCAAuB,EAAE,CAAC;QAChD,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAEM,GAAG,CAAC,IAAY;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAa,IAAI,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC;IAClB,CAAC;IAEM,eAAe,CAAC,QAAmC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,6BAA6B,CAAa,QAAQ,CAAC,CAAC;QACxE,OAAO,MAAM,CAAC;IAClB,CAAC;IAEM,aAAa,CAChB,IAAY,EACZ,eAAmE,EACnE,iBAAuC,EACvC,mBAAyC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;QACrG,OAAO,MAAM,CAAC;IAClB,CAAC;IAEM,yBAAyB,CAC5B,QAAmC,EACnC,eAAmE,EACnE,iBAAuC,EACvC,mBAAyC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,6BAA6B,CAAC,QAAQ,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;QACrH,OAAO,MAAM,CAAC;IAClB,CAAC;IAEY,KAAK;;;YACd,IAAI;gBACA,IAAI,CAAC,oBAAoB,CAAC,MAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC;gBAEvD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE;oBAClC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;oBAC5B,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;iBAClC;gBAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;aACzD;YAAC,OAAO,KAAK,EAAE;gBACZ,MAAM,OAAO,GAAG,sCAAsC,CAAC;gBACvD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;aACpC;;KACJ;IAEY,IAAI;;YACb,IAAI;gBACA,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE;oBAClC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;oBAC5B,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;iBACjC;gBAED,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;gBAEtC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;aACzD;YAAC,OAAO,KAAK,EAAE;gBACZ,MAAM,OAAO,GAAG,sCAAsC,CAAC;gBACvD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;aACpC;QACL,CAAC;KAAA;IAEY,kBAAkB,CAAC,SAAkB;;YAC9C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC;YACtE,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/F,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC;QAC/E,CAAC;KAAA;IAEO,oBAAoB,CAAC,OAAoC;QAC7D,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAA,CAAC,CAAC,IAAI,mCAAI,CAAC,CAAC,IAAI,CAAC,CAAA,EAAA,CAAC,CAAC;QAChF,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAEtD,OAAO,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC;IAC3E,CAAC;IAEO,iBAAiB,CACrB,IAAY,EACZ,eAAoE,EACpE,iBAAuC,EACvC,mBAAyC;;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEzC,IAAI,SAAS,EAAE;YACX,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACjC;aAAM;YACH,IAAI,MAAqC,CAAC;YAE1C,MAAM,cAAc,GAAG,MAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAC3E,IAAI,cAAc,EAAE;gBAChB,MAAM,GAAG,IAAI,CAAC,YAAY,CACtB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,mBAAmB,CAAC,CAAC;aAC5B;YAED,OAAO,MAAM,CAAC;SACjB;IACL,CAAC;IAEO,6BAA6B,CACjC,QAAmC,EACnC,eAAoE,EACpE,iBAAuC,EACvC,mBAAyC;;QACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;SAChD;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAElD,IAAI,SAAS,EAAE;YACX,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC1C;aAAM;YACH,OAAO,IAAI,CAAC,YAAY,CAAC,gCAClB,QAAQ,KACX,OAAO,EAAE,MAAA,QAAQ,CAAC,OAAO,mCAAI,IAAI,GACP,EAC9B,eAAe,EACf,iBAAiB,EACjB,mBAAmB,CAAC,CAAC;SACxB;IACL,CAAC;IAEO,YAAY,CAChB,QAAmC,EACnC,eAAoE,EACpE,iBAAuC,EACvC,mBAAyC;;QACzC,IAAI;YACA,MAAM,gBAAgB,GAAG,QAAQ,CAAC,oBAAoB,CAAC;YACvD,QAAQ,mCACD,QAAQ,KACX,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,oBAAQ,CAAC,0BAA0B,EACxE,eAAe,EAAE,QAAQ,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,IAAI,SAAS,EAC3F,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,oBAAQ,CAAC,YAAY,EACxE,oBAAoB,EAAE,GAAG,EAAE,CAAC,+CACrB,gBAAS,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,GAC3D,gBAAS,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,GACvD,gBAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAC1C,GACL,CAAC;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CACrC,QAAQ,EACR,IAAI,CAAC,QAAQ,EACb,eAAe,EACf,iBAAiB,EACjB,mBAAmB,CAAC,CAAC;YACzB,IAAI,MAAM,EAAE;gBACR,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAA,QAAQ,CAAC,IAAI,mCAAI,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;aAC5D;YACD,OAAO,MAAM,CAAC;SACjB;QAAC,OAAO,KAAK,EAAE;YACZ,MAAM,OAAO,GAAG,0CAA0C,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC1E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACjC,OAAO,SAAS,CAAC;SACpB;IACL,CAAC;IAEa,WAAW,CAAC,MAAyB;;YAC/C,IAAI;gBACA,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;aACxB;YAAC,OAAO,KAAK,EAAE;gBACZ,MAAM,OAAO,GAAG,0CAA0C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACjF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;aACpC;QACL,CAAC;KAAA;IAEa,UAAU,CAAC,MAAyB;;YAC9C,IAAI;gBACA,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;aACvB;YAAC,OAAO,KAAK,EAAE;gBACZ,MAAM,OAAO,GAAG,0CAA0C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACjF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;aACpC;QACL,CAAC;KAAA;CACJ;AApMD,wCAoMC"}
@@ -0,0 +1,15 @@
1
+ import { type Meter } from "@opentelemetry/api";
2
+ import { type MetricReader } from "@opentelemetry/sdk-metrics";
3
+ import { IOInsights } from "@interopio/otel/insights";
4
+ export declare class LazyMetricsMeterProvider {
5
+ private meterProviderCreateFunc;
6
+ private serviceName;
7
+ private meterProvider;
8
+ private _metricReader;
9
+ get metricReader(): MetricReader;
10
+ constructor(meterProviderCreateFunc: IOInsights.MetricsMeterProviderCreateFunc, serviceName: string);
11
+ getMeter(): Meter;
12
+ forceFlush(): Promise<void>;
13
+ getMeterProvider(): IOInsights.MetricsMeterProvider;
14
+ private buildMeterProvider;
15
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LazyMetricsMeterProvider = void 0;
4
+ class LazyMetricsMeterProvider {
5
+ get metricReader() {
6
+ if (!this._metricReader) {
7
+ this.buildMeterProvider();
8
+ }
9
+ return this._metricReader;
10
+ }
11
+ constructor(meterProviderCreateFunc, serviceName) {
12
+ this.meterProviderCreateFunc = meterProviderCreateFunc;
13
+ this.serviceName = serviceName;
14
+ }
15
+ getMeter() {
16
+ const provider = this.getMeterProvider();
17
+ return provider.getMeter(this.serviceName);
18
+ }
19
+ forceFlush() {
20
+ const provider = this.getMeterProvider();
21
+ return provider.forceFlush();
22
+ }
23
+ getMeterProvider() {
24
+ if (!this.meterProvider) {
25
+ this.buildMeterProvider();
26
+ }
27
+ return this.meterProvider;
28
+ }
29
+ buildMeterProvider() {
30
+ const result = this.meterProviderCreateFunc();
31
+ this.meterProvider = result.meterProvider;
32
+ this._metricReader = result.metricReader;
33
+ }
34
+ }
35
+ exports.LazyMetricsMeterProvider = LazyMetricsMeterProvider;
36
+ //# sourceMappingURL=lazyProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazyProvider.js","sourceRoot":"","sources":["../../src/meter/lazyProvider.ts"],"names":[],"mappings":";;;AAGA,MAAa,wBAAwB;IAIjC,IAAW,YAAY;QACnB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC7B;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,YACY,uBAAkE,EAClE,WAAmB;QADnB,4BAAuB,GAAvB,uBAAuB,CAA2C;QAClE,gBAAW,GAAX,WAAW,CAAQ;IAAI,CAAC;IAE7B,QAAQ;QACX,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACzC,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;IAEM,UAAU;QACb,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACzC,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC;IACjC,CAAC;IAEM,gBAAgB;QACnB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC7B;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAEO,kBAAkB;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC9C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC;IAC7C,CAAC;CACJ;AArCD,4DAqCC"}
@@ -0,0 +1,6 @@
1
+ import { IOInsights } from "@interopio/otel/insights";
2
+ import { Logger } from "@interopio/otel";
3
+ export declare class MetricsMeterProviderFactory {
4
+ create(settings: IOInsights.MetricsSettings, otelSettings: IOInsights.Settings, logger: Logger): ReturnType<IOInsights.MetricsMeterProviderCreateFunc>;
5
+ private createMeterProvider;
6
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MetricsMeterProviderFactory = void 0;
4
+ const sdk_metrics_1 = require("@opentelemetry/sdk-metrics");
5
+ const otel_1 = require("@interopio/otel");
6
+ const exporter_metrics_otlp_http_1 = require("@opentelemetry/exporter-metrics-otlp-http");
7
+ class MetricsMeterProviderFactory {
8
+ create(settings, otelSettings, logger) {
9
+ var _a;
10
+ // const validator = new MetricsMeterFactoryValidator();
11
+ // validator.validate(meterSettings);
12
+ let metricExporter;
13
+ if (settings.metricExporter) {
14
+ metricExporter = settings.metricExporter;
15
+ }
16
+ else {
17
+ metricExporter = new exporter_metrics_otlp_http_1.OTLPMetricExporter(Object.assign(Object.assign({ url: settings.url, concurrencyLimit: settings.concurrencyLimit, timeoutMillis: settings.timeoutMillis, compression: settings.compression, keepAlive: settings.keepAlive }, settings.metricExporterOptions), { headers: Object.assign(Object.assign(Object.assign({}, otel_1.Container.errorless(otelSettings.headers)), otel_1.Container.errorless((_a = settings.metricExporterOptions) === null || _a === void 0 ? void 0 : _a.headers)), otel_1.Container.errorless(settings.headers)) }));
18
+ }
19
+ const metricReader = new sdk_metrics_1.PeriodicExportingMetricReader(Object.assign(Object.assign({}, settings.metricReaderOptions), { exporter: metricExporter, exportIntervalMillis: settings.publishInterval }));
20
+ const meterProvider = this.createMeterProvider(settings, otelSettings, metricReader, logger);
21
+ return { meterProvider, metricReader };
22
+ }
23
+ createMeterProvider(settings, otelSettings, metricReader, logger) {
24
+ var _a;
25
+ const basePlugin = (0, otel_1.loadInsightsPlugin)("base", logger);
26
+ if (!basePlugin) {
27
+ logger.error("Unable to create meter provider without loaded @interopio/insights-base package");
28
+ }
29
+ const meterProvider = new sdk_metrics_1.MeterProvider({
30
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
+ resource: basePlugin === null || basePlugin === void 0 ? void 0 : basePlugin.resourceFromAttributes((_a = otel_1.Container.errorless(settings.additionalResourceAttributes)) !== null && _a !== void 0 ? _a : {}),
32
+ readers: [metricReader]
33
+ });
34
+ return meterProvider;
35
+ }
36
+ }
37
+ exports.MetricsMeterProviderFactory = MetricsMeterProviderFactory;
38
+ //# sourceMappingURL=providerFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerFactory.js","sourceRoot":"","sources":["../../src/meter/providerFactory.ts"],"names":[],"mappings":";;;AAAA,4DAAsI;AAGtI,0CAAuH;AACvH,0FAA+E;AAE/E,MAAa,2BAA2B;IAC7B,MAAM,CACT,QAAoC,EACpC,YAAiC,EACjC,MAAc;;QACd,wDAAwD;QACxD,qCAAqC;QACrC,IAAI,cAAkC,CAAC;QAEvC,IAAI,QAAQ,CAAC,cAAc,EAAE;YACxB,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;SAC7C;aAAM;YACH,cAAc,GAAG,IAAI,+CAAkB,+BACnC,GAAG,EAAE,QAAQ,CAAC,GAAG,EACjB,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,EAC3C,aAAa,EAAE,QAAQ,CAAC,aAAa,EACrC,WAAW,EAAE,QAAQ,CAAC,WAAW,EACjC,SAAS,EAAE,QAAQ,CAAC,SAAS,IAC1B,QAAQ,CAAC,qBAAqB,KACjC,OAAO,gDACA,gBAAS,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,GACzC,gBAAS,CAAC,SAAS,CAAC,MAAA,QAAQ,CAAC,qBAAqB,0CAAE,OAAO,CAAC,GAC5D,gBAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,KAE9C,CAAC;SACN;QAED,MAAM,YAAY,GAAG,IAAI,2CAA6B,iCAC/C,QAAQ,CAAC,mBAAmB,KAC/B,QAAQ,EAAE,cAAc,EACxB,oBAAoB,EAAE,QAAQ,CAAC,eAAe,IAChD,CAAC;QAEH,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAC1C,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,MAAM,CAAC,CAAC;QAEZ,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;IAC3C,CAAC;IAEO,mBAAmB,CACvB,QAAoC,EACpC,YAAiC,EACjC,YAA0B,EAC1B,MAAc;;QACd,MAAM,UAAU,GAAG,IAAA,yBAAkB,EAAuB,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5E,IAAI,CAAC,UAAU,EAAE;YACb,MAAM,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;SACnG;QACD,MAAM,aAAa,GAAG,IAAI,2BAAa,CAAC;YACpC,8DAA8D;YAC9D,QAAQ,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,sBAAsB,CAAC,MAAA,gBAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,4BAA4B,CAAC,mCAAI,EAAS,CAAC;YACrH,OAAO,EAAE,CAAC,YAAY,CAAC;SAC1B,CAAC,CAAC;QAEH,OAAO,aAAa,CAAC;IACzB,CAAC;CACJ;AA3DD,kEA2DC"}
@@ -0,0 +1,19 @@
1
+ import { type Meter, type UpDownCounter } from "@opentelemetry/api";
2
+ import { MetricBase } from "../base/base";
3
+ import { IOInsights } from "@interopio/otel/insights";
4
+ export declare class ApplicationCountMetric extends MetricBase {
5
+ meter: Meter;
6
+ instanceStartedHandler: IOInsights.InstanceActionHandler;
7
+ instanceStoppedHandler: IOInsights.InstanceActionHandler;
8
+ private validator;
9
+ private appCountMetric;
10
+ private instanceStartedUn?;
11
+ private instanceStoppedUn?;
12
+ constructor(settings: IOInsights.MetricSettings, meter: Meter, logger: IOInsights.Logger, generalSettings: IOInsights.MetricsSettings, instanceStartedHandler: IOInsights.InstanceActionHandler, instanceStoppedHandler: IOInsights.InstanceActionHandler, defaultFilters?: IOInsights.MetricDefaultFilter[]);
13
+ protected createMetricCore(name: string, baseSettings: any): UpDownCounter<IOInsights.ApplicationMetricData>;
14
+ protected subscribe(): Promise<void>;
15
+ protected unsubscribe(): Promise<void>;
16
+ protected destroyMetric(): Promise<void>;
17
+ private handleInstanceStarted;
18
+ private handleInstanceStopped;
19
+ }
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApplicationCountMetric = void 0;
4
+ const base_1 = require("../base/base");
5
+ const count_1 = require("../../validation/metrics/application/count");
6
+ const otel_1 = require("@interopio/otel");
7
+ class ApplicationCountMetric extends base_1.MetricBase {
8
+ constructor(settings, meter, logger, generalSettings, instanceStartedHandler, instanceStoppedHandler, defaultFilters) {
9
+ super(settings, meter, logger, generalSettings, defaultFilters);
10
+ this.meter = meter;
11
+ this.instanceStartedHandler = instanceStartedHandler;
12
+ this.instanceStoppedHandler = instanceStoppedHandler;
13
+ this.validator = new count_1.ApplicationCountMetricValidator();
14
+ this.validator.validate(this);
15
+ }
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
+ createMetricCore(name, baseSettings) {
18
+ return this.appCountMetric = this.meter.createUpDownCounter(name, baseSettings);
19
+ }
20
+ subscribe() {
21
+ this.instanceStartedUn = otel_1.Container.errorless(() => this.instanceStartedHandler(this.handleInstanceStarted.bind(this)));
22
+ this.instanceStoppedUn = otel_1.Container.errorless(() => this.instanceStoppedHandler(this.handleInstanceStopped.bind(this)));
23
+ return Promise.resolve();
24
+ }
25
+ unsubscribe() {
26
+ otel_1.Container.errorless(() => this.instanceStartedUn);
27
+ otel_1.Container.errorless(() => this.instanceStoppedUn);
28
+ return Promise.resolve();
29
+ }
30
+ destroyMetric() {
31
+ return Promise.resolve();
32
+ }
33
+ handleInstanceStarted(args) {
34
+ var _a;
35
+ try {
36
+ this.validator.validateInstanceStarted(args);
37
+ this.logger.debug(`instance started for application ${args.application} and metric ${this.settings.name} is being invoked`);
38
+ const data = this.getApplicationData(args.application);
39
+ if (((_a = this.getFilter(data)) === null || _a === void 0 ? void 0 : _a.enabled) === false) {
40
+ return;
41
+ }
42
+ this.appCountMetric.add(1, this.prePublish(data));
43
+ this.logger.debug(`metric ${this.settings.name} sent 1 more for app ${data.application}`);
44
+ }
45
+ catch (error) {
46
+ const message = `error while executing handleInstanceStarted for metric from type: ${this.settings.type}`;
47
+ this.logger.warn(message, error);
48
+ }
49
+ }
50
+ handleInstanceStopped(args) {
51
+ var _a;
52
+ try {
53
+ this.validator.validateInstanceStopped(args);
54
+ this.logger.debug(`instance stopped for application ${args.application} and metric ${this.settings.name} is being invoked`);
55
+ const data = this.getApplicationData(args.application);
56
+ if (((_a = this.getFilter(data)) === null || _a === void 0 ? void 0 : _a.enabled) === false) {
57
+ return;
58
+ }
59
+ this.appCountMetric.add(-1, this.prePublish(data));
60
+ this.logger.debug(`metric ${this.settings.name} sent 1 less for app ${data.application}`);
61
+ }
62
+ catch (error) {
63
+ const message = `error while executing handleInstanceStopped for metric from type: ${this.settings.type}`;
64
+ this.logger.warn(message, error);
65
+ }
66
+ }
67
+ }
68
+ exports.ApplicationCountMetric = ApplicationCountMetric;
69
+ //# sourceMappingURL=count.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"count.js","sourceRoot":"","sources":["../../../src/metrics/application/count.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type Meter, type ObservableResult } from "@opentelemetry/api";
2
+ import { ZeroOutClosedAppObservableGaugeMetricBase } from "../base/zeroOutClosedAppObservableGaugeMetricBase";
3
+ import { IOInsights } from "@interopio/otel/insights";
4
+ export declare class ApplicationCPUMetric extends ZeroOutClosedAppObservableGaugeMetricBase {
5
+ perfProvider: IOInsights.PerformanceProvider;
6
+ constructor(settings: IOInsights.MetricSettings, meter: Meter, logger: IOInsights.Logger, generalSettings: IOInsights.MetricsSettings, perfProvider: IOInsights.PerformanceProvider, defaultFilters?: IOInsights.MetricDefaultFilter[]);
7
+ protected subscribeCore(): Promise<void>;
8
+ protected observeCoreCore(result: ObservableResult<IOInsights.ApplicationMetricData>): Promise<IOInsights.AppCPU[]>;
9
+ protected unsubscribeCore(): Promise<void>;
10
+ }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ApplicationCPUMetric = void 0;
13
+ const zeroOutClosedAppObservableGaugeMetricBase_1 = require("../base/zeroOutClosedAppObservableGaugeMetricBase");
14
+ const otel_1 = require("@interopio/otel");
15
+ const perf_1 = require("../../validation/metrics/perf");
16
+ const validator_1 = require("../../validation/validator");
17
+ class ApplicationCPUMetric extends zeroOutClosedAppObservableGaugeMetricBase_1.ZeroOutClosedAppObservableGaugeMetricBase {
18
+ constructor(settings, meter, logger, generalSettings, perfProvider, defaultFilters) {
19
+ super(settings, meter, logger, generalSettings, defaultFilters);
20
+ this.perfProvider = perfProvider;
21
+ }
22
+ subscribeCore() { return Promise.resolve(); }
23
+ observeCoreCore(result) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ const performanceValidator = new perf_1.PerformanceProviderValidator();
26
+ performanceValidator.validate(this.perfProvider);
27
+ const appsCPU = yield otel_1.Container.errorlessAsync(() => this.perfProvider.getAppsCPU());
28
+ if (!validator_1.Validator.isNullOrUndefined(appsCPU)) {
29
+ performanceValidator.validateAppsCPU(appsCPU);
30
+ appsCPU.forEach((info) => {
31
+ var _a;
32
+ // vnikolov todo: deal with the instance attribute
33
+ const data = Object.assign({ applicationInstance: info.instance }, this.getApplicationData(info.app));
34
+ if (((_a = this.getFilter(data)) === null || _a === void 0 ? void 0 : _a.enabled) === false) {
35
+ return;
36
+ }
37
+ result.observe(info.cpu, this.prePublish(data));
38
+ this.logger.debug(`metric ${this.settings.name} sent cpu ${info.cpu} for app ${data.application} and instance ${data.applicationInstance}`);
39
+ });
40
+ return appsCPU;
41
+ }
42
+ return [];
43
+ });
44
+ }
45
+ unsubscribeCore() { return Promise.resolve(); }
46
+ }
47
+ exports.ApplicationCPUMetric = ApplicationCPUMetric;
48
+ //# sourceMappingURL=cpu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpu.js","sourceRoot":"","sources":["../../../src/metrics/application/cpu.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,iHAA8G;AAC9G,0CAA4C;AAE5C,wDAA6E;AAC7E,0DAAuD;AAEvD,MAAa,oBAAqB,SAAQ,qFAAyC;IAC/E,YACI,QAAmC,EACnC,KAAY,EACZ,MAAyB,EACzB,eAA2C,EACpC,YAA4C,EACnD,cAAiD;QAEjD,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;QAHzD,iBAAY,GAAZ,YAAY,CAAgC;IAIvD,CAAC;IAEkB,aAAa,KAAoB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAEtD,eAAe,CAAC,MAA0D;;YAC/F,MAAM,oBAAoB,GAAG,IAAI,mCAA4B,EAAE,CAAC;YAChE,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAEjD,MAAM,OAAO,GAAG,MAAM,gBAAS,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;YACrF,IAAI,CAAC,qBAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;gBACvC,oBAAoB,CAAC,eAAe,CAAC,OAAQ,CAAC,CAAC;gBAE9C,OAAgC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;;oBAC/C,kDAAkD;oBAClD,MAAM,IAAI,mBAAK,mBAAmB,EAAE,IAAI,CAAC,QAAQ,IAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAE,CAAC;oBAC1F,IAAI,CAAA,MAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,0CAAE,OAAO,MAAK,KAAK,EAAE;wBACzC,OAAO;qBACV;oBACD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAQ,CAAC,CAAC;oBACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,IAAI,CAAC,GAAG,YAAY,IAAI,CAAC,WAAW,iBAAiB,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;gBAChJ,CAAC,CAAC,CAAC;gBACH,OAAO,OAAQ,CAAC;aACnB;YACD,OAAO,EAAE,CAAC;QACd,CAAC;KAAA;IAEkB,eAAe,KAAoB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;CACpF;AArCD,oDAqCC"}
@@ -0,0 +1,16 @@
1
+ import { type Counter, type Meter } from "@opentelemetry/api";
2
+ import { MetricBase } from "../base/base";
3
+ import { IOInsights } from "@interopio/otel/insights";
4
+ export declare class ApplicationCrashMetric extends MetricBase {
5
+ meter: Meter;
6
+ instanceCrashHandler: IOInsights.InstanceCrashHandler;
7
+ private applicationCrashMetric;
8
+ private applicationCrashUn?;
9
+ private validator;
10
+ constructor(settings: IOInsights.MetricSettings, meter: Meter, logger: IOInsights.Logger, generalSettings: IOInsights.MetricsSettings, instanceCrashHandler: IOInsights.InstanceCrashHandler, defaultFilters?: IOInsights.MetricDefaultFilter[]);
11
+ protected createMetricCore(name: string, baseSettings: any): Counter<IOInsights.ApplicationMetricData>;
12
+ protected subscribe(): Promise<void>;
13
+ protected destroyMetric(): Promise<void>;
14
+ protected unsubscribe(): Promise<void>;
15
+ private handleInstanceCrash;
16
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApplicationCrashMetric = void 0;
4
+ const base_1 = require("../base/base");
5
+ const crash_1 = require("../../validation/metrics/platform/crash");
6
+ const otel_1 = require("@interopio/otel");
7
+ class ApplicationCrashMetric extends base_1.MetricBase {
8
+ constructor(settings, meter, logger, generalSettings, instanceCrashHandler, defaultFilters) {
9
+ super(settings, meter, logger, generalSettings, defaultFilters);
10
+ this.meter = meter;
11
+ this.instanceCrashHandler = instanceCrashHandler;
12
+ this.validator = new crash_1.PlatformCrashMetricValidator();
13
+ this.validator.validate(this);
14
+ }
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ createMetricCore(name, baseSettings) {
17
+ return this.applicationCrashMetric = this.meter.createCounter(name, baseSettings);
18
+ }
19
+ subscribe() {
20
+ this.applicationCrashUn = otel_1.Container.errorless(() => this.instanceCrashHandler(this.handleInstanceCrash.bind(this)));
21
+ return Promise.resolve();
22
+ }
23
+ destroyMetric() {
24
+ return Promise.resolve();
25
+ }
26
+ unsubscribe() {
27
+ otel_1.Container.errorless(() => { var _a; return (_a = this.applicationCrashUn) === null || _a === void 0 ? void 0 : _a.call(this); });
28
+ return Promise.resolve();
29
+ }
30
+ handleInstanceCrash(args) {
31
+ var _a;
32
+ try {
33
+ this.validator.validateApplicationCrash(args);
34
+ this.logger.debug(`crash for application ${args.application} and metric ${this.settings.name} is being invoked`);
35
+ const data = Object.assign({ reason: args.reason }, this.getApplicationData(args.application));
36
+ if (((_a = this.getFilter(data)) === null || _a === void 0 ? void 0 : _a.enabled) === false) {
37
+ return;
38
+ }
39
+ this.applicationCrashMetric.add(1, this.prePublish(data));
40
+ this.logger.debug(`metric ${this.settings.name} sent 1 more for app ${data.application}`);
41
+ }
42
+ catch (error) {
43
+ const message = `error while executing handleApplicationCrash for metric from type: ${this.settings.type}`;
44
+ this.logger.warn(message, error);
45
+ }
46
+ }
47
+ }
48
+ exports.ApplicationCrashMetric = ApplicationCrashMetric;
49
+ //# sourceMappingURL=crash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crash.js","sourceRoot":"","sources":["../../../src/metrics/application/crash.ts"],"names":[],"mappings":";;;AACA,uCAA0C;AAC1C,mEAA0H;AAC1H,0CAA4C;AAE5C,MAAa,sBAAuB,SAAQ,iBAAU;IAKlD,YACI,QAAmC,EAC5B,KAAY,EACnB,MAAyB,EACzB,eAA2C,EACpC,oBAAqD,EAC5D,cAAiD;QAEjD,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;QANzD,UAAK,GAAL,KAAK,CAAO;QAGZ,yBAAoB,GAApB,oBAAoB,CAAiC;QAI5D,IAAI,CAAC,SAAS,GAAG,IAAI,oCAA+B,EAAE,CAAC;QACvD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,8DAA8D;IAC3C,gBAAgB,CAAC,IAAY,EAAE,YAAiB;QAC/D,OAAO,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACtF,CAAC;IAEkB,SAAS;QACxB,IAAI,CAAC,kBAAkB,GAAG,gBAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,aAAa;QAC5B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,WAAW;QAC1B,gBAAS,CAAC,SAAS,CAAC,GAAG,EAAE,WAAC,OAAA,MAAA,IAAI,CAAC,kBAAkB,oDAAI,CAAA,EAAA,CAAC,CAAC;QACvD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEO,mBAAmB,CAAC,IAAyC;;QACjE,IAAI;YACA,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;YAE9C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,WAAW,eAAe,IAAI,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC;YAEjH,MAAM,IAAI,mBAAK,MAAM,EAAE,IAAI,CAAC,MAAM,IAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAE,CAAC;YACnF,IAAI,CAAA,MAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,0CAAE,OAAO,MAAK,KAAK,EAAE;gBACzC,OAAO;aACV;YACD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAQ,CAAC,CAAC;YAEjE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,wBAAwB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;SAC7F;QAAC,OAAO,KAAK,EAAE;YACZ,MAAM,OAAO,GAAG,sEAAsE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC3G,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACpC;IACL,CAAC;CACJ;AAxDD,wDAwDC"}
@@ -0,0 +1,25 @@
1
+ import { type Meter, type Observable } from "@opentelemetry/api";
2
+ import { ObservableMetricBase } from "../base/observable";
3
+ import { IOInsights } from "@interopio/otel/insights";
4
+ export declare class ApplicationDurationMetric extends ObservableMetricBase<IOInsights.ApplicationMetricData> {
5
+ instanceFocusHandler: IOInsights.InstanceFocusedHandler;
6
+ protected focusedTimes: Map<string, number[]>;
7
+ protected currentFocusedApp?: {
8
+ name: string;
9
+ gotFocusTime: number;
10
+ };
11
+ private unInstanceFocusHandler?;
12
+ private validator;
13
+ private appDurationMetric;
14
+ constructor(settings: IOInsights.MetricSettings, meter: Meter, logger: IOInsights.Logger, generalSettings: IOInsights.MetricsSettings, instanceFocusHandler: IOInsights.InstanceFocusedHandler, defaultFilters?: IOInsights.MetricDefaultFilter[]);
15
+ protected createMetricCore(name: string, baseSettings: any): Observable<IOInsights.ApplicationMetricData>;
16
+ protected sendMetric(focusedPeriods: number[], data: IOInsights.ApplicationMetricData): void;
17
+ protected observeCore(): Promise<void>;
18
+ protected subscribeCore(): Promise<void>;
19
+ protected unsubscribeCore(): Promise<void>;
20
+ protected handleFocusChanged(args: IOInsights.InstanceFocusedHandlerArgs): void;
21
+ private handleFocusChangedCore;
22
+ private handleGotFocus;
23
+ private handleLostFocus;
24
+ private addFocusLostEventCore;
25
+ }