@interopio/otel 0.0.11 → 0.0.13

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 (251) hide show
  1. package/README.md +9 -1
  2. package/dist/builder.d.ts +19 -0
  3. package/dist/builder.js +75 -0
  4. package/dist/builder.js.map +1 -0
  5. package/dist/container.d.ts +14 -0
  6. package/dist/container.js +51 -0
  7. package/dist/container.js.map +1 -0
  8. package/dist/index.d.ts +13 -0
  9. package/dist/index.js +27 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/logger/log4jsWrapper.d.ts +13 -0
  12. package/dist/logger/log4jsWrapper.js +54 -0
  13. package/dist/logger/log4jsWrapper.js.map +1 -0
  14. package/dist/logger/null.d.ts +9 -0
  15. package/dist/logger/null.js +25 -0
  16. package/dist/logger/null.js.map +1 -0
  17. package/dist/logger/types.d.ts +17 -0
  18. package/dist/logger/types.js +3 -0
  19. package/dist/logger/types.js.map +1 -0
  20. package/dist/logs/types.d.ts +6 -0
  21. package/dist/logs/types.js +3 -0
  22. package/dist/logs/types.js.map +1 -0
  23. package/dist/metrics/builder.d.ts +20 -0
  24. package/dist/metrics/builder.js +63 -0
  25. package/dist/metrics/builder.js.map +1 -0
  26. package/dist/metrics/dependencies/builder.d.ts +29 -0
  27. package/dist/metrics/dependencies/builder.js +87 -0
  28. package/dist/metrics/dependencies/builder.js.map +1 -0
  29. package/dist/metrics/dependencies/types.d.ts +91 -0
  30. package/dist/metrics/dependencies/types.js +3 -0
  31. package/dist/metrics/dependencies/types.js.map +1 -0
  32. package/dist/metrics/factory/builder.d.ts +31 -0
  33. package/dist/metrics/factory/builder.js +198 -0
  34. package/dist/metrics/factory/builder.js.map +1 -0
  35. package/dist/metrics/factory/factory.d.ts +10 -0
  36. package/dist/metrics/factory/factory.js +33 -0
  37. package/dist/metrics/factory/factory.js.map +1 -0
  38. package/dist/metrics/factory/types.d.ts +5 -0
  39. package/dist/metrics/factory/types.js +3 -0
  40. package/dist/metrics/factory/types.js.map +1 -0
  41. package/dist/metrics/manager.d.ts +23 -0
  42. package/dist/metrics/manager.js +120 -0
  43. package/dist/metrics/manager.js.map +1 -0
  44. package/dist/metrics/meter/lazyProvider.d.ts +11 -0
  45. package/dist/metrics/meter/lazyProvider.js +23 -0
  46. package/dist/metrics/meter/lazyProvider.js.map +1 -0
  47. package/dist/metrics/meter/providerFactory.d.ts +6 -0
  48. package/dist/metrics/meter/providerFactory.js +34 -0
  49. package/dist/metrics/meter/providerFactory.js.map +1 -0
  50. package/dist/metrics/meter/types.d.ts +14 -0
  51. package/dist/metrics/meter/types.js +3 -0
  52. package/dist/metrics/meter/types.js.map +1 -0
  53. package/dist/metrics/metrics/application/count.d.ts +21 -0
  54. package/dist/metrics/metrics/application/count.js +62 -0
  55. package/dist/metrics/metrics/application/count.js.map +1 -0
  56. package/dist/metrics/metrics/application/cpu.d.ts +12 -0
  57. package/dist/metrics/metrics/application/cpu.js +40 -0
  58. package/dist/metrics/metrics/application/cpu.js.map +1 -0
  59. package/dist/metrics/metrics/application/crash.d.ts +18 -0
  60. package/dist/metrics/metrics/application/crash.js +46 -0
  61. package/dist/metrics/metrics/application/crash.js.map +1 -0
  62. package/dist/metrics/metrics/application/duration.d.ts +7 -0
  63. package/dist/metrics/metrics/application/duration.js +19 -0
  64. package/dist/metrics/metrics/application/duration.js.map +1 -0
  65. package/dist/metrics/metrics/application/durationBase.d.ts +22 -0
  66. package/dist/metrics/metrics/application/durationBase.js +97 -0
  67. package/dist/metrics/metrics/application/durationBase.js.map +1 -0
  68. package/dist/metrics/metrics/application/error.d.ts +18 -0
  69. package/dist/metrics/metrics/application/error.js +46 -0
  70. package/dist/metrics/metrics/application/error.js.map +1 -0
  71. package/dist/metrics/metrics/application/memory.d.ts +13 -0
  72. package/dist/metrics/metrics/application/memory.js +41 -0
  73. package/dist/metrics/metrics/application/memory.js.map +1 -0
  74. package/dist/metrics/metrics/application/started.d.ts +18 -0
  75. package/dist/metrics/metrics/application/started.js +46 -0
  76. package/dist/metrics/metrics/application/started.js.map +1 -0
  77. package/dist/metrics/metrics/application/startup.d.ts +18 -0
  78. package/dist/metrics/metrics/application/startup.js +46 -0
  79. package/dist/metrics/metrics/application/startup.js.map +1 -0
  80. package/dist/metrics/metrics/application/stopped.d.ts +18 -0
  81. package/dist/metrics/metrics/application/stopped.js +46 -0
  82. package/dist/metrics/metrics/application/stopped.js.map +1 -0
  83. package/dist/metrics/metrics/base/base.d.ts +17 -0
  84. package/dist/metrics/metrics/base/base.js +71 -0
  85. package/dist/metrics/metrics/base/base.js.map +1 -0
  86. package/dist/metrics/metrics/base/gauge.d.ts +18 -0
  87. package/dist/metrics/metrics/base/gauge.js +61 -0
  88. package/dist/metrics/metrics/base/gauge.js.map +1 -0
  89. package/dist/metrics/metrics/base/null.d.ts +10 -0
  90. package/dist/metrics/metrics/base/null.js +22 -0
  91. package/dist/metrics/metrics/base/null.js.map +1 -0
  92. package/dist/metrics/metrics/base/observable.d.ts +20 -0
  93. package/dist/metrics/metrics/base/observable.js +69 -0
  94. package/dist/metrics/metrics/base/observable.js.map +1 -0
  95. package/dist/metrics/metrics/base/types.d.ts +31 -0
  96. package/dist/metrics/metrics/base/types.js +3 -0
  97. package/dist/metrics/metrics/base/types.js.map +1 -0
  98. package/dist/metrics/metrics/layout/startup.d.ts +18 -0
  99. package/dist/metrics/metrics/layout/startup.js +46 -0
  100. package/dist/metrics/metrics/layout/startup.js.map +1 -0
  101. package/dist/metrics/metrics/platform/error.d.ts +18 -0
  102. package/dist/metrics/metrics/platform/error.js +46 -0
  103. package/dist/metrics/metrics/platform/error.js.map +1 -0
  104. package/dist/metrics/metrics/platform/startup.d.ts +18 -0
  105. package/dist/metrics/metrics/platform/startup.js +58 -0
  106. package/dist/metrics/metrics/platform/startup.js.map +1 -0
  107. package/dist/metrics/metrics/system/cpu.d.ts +14 -0
  108. package/dist/metrics/metrics/system/cpu.js +46 -0
  109. package/dist/metrics/metrics/system/cpu.js.map +1 -0
  110. package/dist/metrics/metrics/system/memory.d.ts +14 -0
  111. package/dist/metrics/metrics/system/memory.js +47 -0
  112. package/dist/metrics/metrics/system/memory.js.map +1 -0
  113. package/dist/metrics/metrics/workspace/count.d.ts +21 -0
  114. package/dist/metrics/metrics/workspace/count.js +62 -0
  115. package/dist/metrics/metrics/workspace/count.js.map +1 -0
  116. package/dist/metrics/metrics/workspace/startup.d.ts +9 -0
  117. package/dist/metrics/metrics/workspace/startup.js +12 -0
  118. package/dist/metrics/metrics/workspace/startup.js.map +1 -0
  119. package/dist/metrics/metrics/workspace/stopped.d.ts +18 -0
  120. package/dist/metrics/metrics/workspace/stopped.js +46 -0
  121. package/dist/metrics/metrics/workspace/stopped.js.map +1 -0
  122. package/dist/metrics/settings/builder.d.ts +24 -0
  123. package/dist/metrics/settings/builder.js +115 -0
  124. package/dist/metrics/settings/builder.js.map +1 -0
  125. package/dist/metrics/settings/default.d.ts +30 -0
  126. package/dist/metrics/settings/default.js +121 -0
  127. package/dist/metrics/settings/default.js.map +1 -0
  128. package/dist/metrics/settings/types.d.ts +14 -0
  129. package/dist/metrics/settings/types.js +3 -0
  130. package/dist/metrics/settings/types.js.map +1 -0
  131. package/dist/metrics/types.d.ts +16 -0
  132. package/dist/metrics/types.js +3 -0
  133. package/dist/metrics/types.js.map +1 -0
  134. package/dist/metrics/utils/nullMetricsManager.d.ts +6 -0
  135. package/dist/metrics/utils/nullMetricsManager.js +11 -0
  136. package/dist/metrics/utils/nullMetricsManager.js.map +1 -0
  137. package/dist/metrics/utils/nullPerfProvider.d.ts +7 -0
  138. package/dist/metrics/utils/nullPerfProvider.js +19 -0
  139. package/dist/metrics/utils/nullPerfProvider.js.map +1 -0
  140. package/dist/traces/builder.d.ts +15 -0
  141. package/dist/traces/builder.js +39 -0
  142. package/dist/traces/builder.js.map +1 -0
  143. package/dist/traces/ioInsightsSampler.d.ts +16 -0
  144. package/dist/traces/ioInsightsSampler.js +123 -0
  145. package/dist/traces/ioInsightsSampler.js.map +1 -0
  146. package/dist/traces/manager.d.ts +19 -0
  147. package/dist/traces/manager.js +151 -0
  148. package/dist/traces/manager.js.map +1 -0
  149. package/dist/traces/nullTracesManager.d.ts +6 -0
  150. package/dist/traces/nullTracesManager.js +23 -0
  151. package/dist/traces/nullTracesManager.js.map +1 -0
  152. package/dist/traces/tracingState.d.ts +28 -0
  153. package/dist/traces/tracingState.js +103 -0
  154. package/dist/traces/tracingState.js.map +1 -0
  155. package/dist/traces/types.d.ts +96 -0
  156. package/dist/traces/types.js +14 -0
  157. package/dist/traces/types.js.map +1 -0
  158. package/dist/traces/utils/index.d.ts +13 -0
  159. package/dist/traces/utils/index.js +119 -0
  160. package/dist/traces/utils/index.js.map +1 -0
  161. package/dist/types.d.ts +20 -0
  162. package/dist/types.js +3 -0
  163. package/dist/types.js.map +1 -0
  164. package/dist/utils/nullManager.d.ts +7 -0
  165. package/dist/utils/nullManager.js +21 -0
  166. package/dist/utils/nullManager.js.map +1 -0
  167. package/dist/validation/builder.d.ts +4 -0
  168. package/dist/validation/builder.js +12 -0
  169. package/dist/validation/builder.js.map +1 -0
  170. package/dist/validation/container.d.ts +4 -0
  171. package/dist/validation/container.js +14 -0
  172. package/dist/validation/container.js.map +1 -0
  173. package/dist/validation/metrics/application/count.d.ts +7 -0
  174. package/dist/validation/metrics/application/count.js +21 -0
  175. package/dist/validation/metrics/application/count.js.map +1 -0
  176. package/dist/validation/metrics/application/duration.d.ts +6 -0
  177. package/dist/validation/metrics/application/duration.js +17 -0
  178. package/dist/validation/metrics/application/duration.js.map +1 -0
  179. package/dist/validation/metrics/application/error.d.ts +6 -0
  180. package/dist/validation/metrics/application/error.js +16 -0
  181. package/dist/validation/metrics/application/error.js.map +1 -0
  182. package/dist/validation/metrics/application/started.d.ts +6 -0
  183. package/dist/validation/metrics/application/started.js +16 -0
  184. package/dist/validation/metrics/application/started.js.map +1 -0
  185. package/dist/validation/metrics/application/startupHistogram.d.ts +6 -0
  186. package/dist/validation/metrics/application/startupHistogram.js +18 -0
  187. package/dist/validation/metrics/application/startupHistogram.js.map +1 -0
  188. package/dist/validation/metrics/application/stopped.d.ts +6 -0
  189. package/dist/validation/metrics/application/stopped.js +16 -0
  190. package/dist/validation/metrics/application/stopped.js.map +1 -0
  191. package/dist/validation/metrics/base/base.d.ts +5 -0
  192. package/dist/validation/metrics/base/base.js +22 -0
  193. package/dist/validation/metrics/base/base.js.map +1 -0
  194. package/dist/validation/metrics/base/gauge.d.ts +6 -0
  195. package/dist/validation/metrics/base/gauge.js +12 -0
  196. package/dist/validation/metrics/base/gauge.js.map +1 -0
  197. package/dist/validation/metrics/builder.d.ts +4 -0
  198. package/dist/validation/metrics/builder.js +13 -0
  199. package/dist/validation/metrics/builder.js.map +1 -0
  200. package/dist/validation/metrics/factory.d.ts +4 -0
  201. package/dist/validation/metrics/factory.js +13 -0
  202. package/dist/validation/metrics/factory.js.map +1 -0
  203. package/dist/validation/metrics/factoryBuilder.d.ts +5 -0
  204. package/dist/validation/metrics/factoryBuilder.js +23 -0
  205. package/dist/validation/metrics/factoryBuilder.js.map +1 -0
  206. package/dist/validation/metrics/layout/startupHistogram.d.ts +6 -0
  207. package/dist/validation/metrics/layout/startupHistogram.js +18 -0
  208. package/dist/validation/metrics/layout/startupHistogram.js.map +1 -0
  209. package/dist/validation/metrics/manager.d.ts +4 -0
  210. package/dist/validation/metrics/manager.js +15 -0
  211. package/dist/validation/metrics/manager.js.map +1 -0
  212. package/dist/validation/metrics/meterFactory.d.ts +4 -0
  213. package/dist/validation/metrics/meterFactory.js +16 -0
  214. package/dist/validation/metrics/meterFactory.js.map +1 -0
  215. package/dist/validation/metrics/perf.d.ts +8 -0
  216. package/dist/validation/metrics/perf.js +41 -0
  217. package/dist/validation/metrics/perf.js.map +1 -0
  218. package/dist/validation/metrics/platform/crash.d.ts +6 -0
  219. package/dist/validation/metrics/platform/crash.js +16 -0
  220. package/dist/validation/metrics/platform/crash.js.map +1 -0
  221. package/dist/validation/metrics/platform/error.d.ts +6 -0
  222. package/dist/validation/metrics/platform/error.js +15 -0
  223. package/dist/validation/metrics/platform/error.js.map +1 -0
  224. package/dist/validation/metrics/platform/startup.d.ts +6 -0
  225. package/dist/validation/metrics/platform/startup.js +18 -0
  226. package/dist/validation/metrics/platform/startup.js.map +1 -0
  227. package/dist/validation/metrics/settingsBuilder.d.ts +4 -0
  228. package/dist/validation/metrics/settingsBuilder.js +22 -0
  229. package/dist/validation/metrics/settingsBuilder.js.map +1 -0
  230. package/dist/validation/metrics/workspace/count.d.ts +7 -0
  231. package/dist/validation/metrics/workspace/count.js +21 -0
  232. package/dist/validation/metrics/workspace/count.js.map +1 -0
  233. package/dist/validation/metrics/workspace/stopped.d.ts +6 -0
  234. package/dist/validation/metrics/workspace/stopped.js +16 -0
  235. package/dist/validation/metrics/workspace/stopped.js.map +1 -0
  236. package/dist/validation/traces/attributeData.d.ts +3 -0
  237. package/dist/validation/traces/attributeData.js +18 -0
  238. package/dist/validation/traces/attributeData.js.map +1 -0
  239. package/dist/validation/traces/filter.d.ts +4 -0
  240. package/dist/validation/traces/filter.js +12 -0
  241. package/dist/validation/traces/filter.js.map +1 -0
  242. package/dist/validation/traces/manager.d.ts +4 -0
  243. package/dist/validation/traces/manager.js +12 -0
  244. package/dist/validation/traces/manager.js.map +1 -0
  245. package/dist/validation/traces/withSpan.d.ts +4 -0
  246. package/dist/validation/traces/withSpan.js +18 -0
  247. package/dist/validation/traces/withSpan.js.map +1 -0
  248. package/dist/validation/validator.d.ts +4 -0
  249. package/dist/validation/validator.js +15 -0
  250. package/dist/validation/validator.js.map +1 -0
  251. package/package.json +12 -4
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApplicationStartupMetric = void 0;
4
+ const startupHistogram_1 = require("../../../validation/metrics/application/startupHistogram");
5
+ const base_1 = require("../base/base");
6
+ class ApplicationStartupMetric extends base_1.MetricBase {
7
+ constructor(settings, meter, logger, instanceReadyHandler) {
8
+ super(settings, logger);
9
+ this.meter = meter;
10
+ this.instanceReadyHandler = instanceReadyHandler;
11
+ this.validator = new startupHistogram_1.ApplicationStartupHistogramMetricValidator();
12
+ this.validator.validate(this);
13
+ }
14
+ createMetric() {
15
+ const advice = { explicitBucketBoundaries: this.settings.buckets };
16
+ this.appStartupMetric = this.meter.createHistogram(this.settings.name, { description: this.settings.description, unit: this.settings.unit, advice });
17
+ return Promise.resolve();
18
+ }
19
+ subscribe() {
20
+ this.instanceReadyUn = this.instanceReadyHandler(this.handleInstanceReady.bind(this));
21
+ return Promise.resolve();
22
+ }
23
+ unsubscribe() {
24
+ this.instanceReadyUn();
25
+ return Promise.resolve();
26
+ }
27
+ destroyMetric() {
28
+ return Promise.resolve();
29
+ }
30
+ handleInstanceReady(args) {
31
+ try {
32
+ this.validator.validateInstanceReady(args);
33
+ this.logger.debug(`instance ready for application ${args.application} and metric ${this.settings.name} is being invoked`);
34
+ const startupTime = args.endTime.getTime() - args.startTime.getTime();
35
+ const data = Object.assign({ api: args.api }, this.getApplicationData(args.application));
36
+ this.appStartupMetric.record(startupTime, data);
37
+ this.logger.debug(`start up time ${startupTime} has been added for metric ${this.settings.name}`);
38
+ }
39
+ catch (error) {
40
+ const message = `error while executing handleInstanceReady for metric from type: ${this.settings.type}`;
41
+ this.logger.warn(message, error);
42
+ }
43
+ }
44
+ }
45
+ exports.ApplicationStartupMetric = ApplicationStartupMetric;
46
+ //# sourceMappingURL=startup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startup.js","sourceRoot":"","sources":["../../../../src/metrics/metrics/application/startup.ts"],"names":[],"mappings":";;;AAEA,+FAAsH;AACtH,uCAA0C;AAI1C,MAAa,wBAAyB,SAAQ,iBAAU;IAKpD,YACI,QAAgC,EACxB,KAAY,EACpB,MAAc,EACP,oBAA0C;QAEjD,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAJhB,UAAK,GAAL,KAAK,CAAO;QAEb,yBAAoB,GAApB,oBAAoB,CAAsB;QAIjD,IAAI,CAAC,SAAS,GAAG,IAAI,6DAA0C,EAAE,CAAC;QAClE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEkB,YAAY;QAC3B,MAAM,MAAM,GAAG,EAAE,wBAAwB,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAErJ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,SAAS;QACxB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,WAAW;QAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,aAAa;QAC5B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEO,mBAAmB,CAAC,IAA8B;QACtD,IAAI;YACA,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAE3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,IAAI,CAAC,WAAW,eAAe,IAAI,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC;YAE1H,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACtE,MAAM,IAAI,mBAAK,GAAG,EAAE,IAAI,CAAC,GAAG,IAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAE,CAAC;YAC7E,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAEhD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,WAAW,8BAA8B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;SACrG;QAAC,OAAO,KAAK,EAAE;YACZ,MAAM,OAAO,GAAG,mEAAmE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACpC;IACL,CAAC;CACJ;AAtDD,4DAsDC"}
@@ -0,0 +1,18 @@
1
+ import { Meter } from "@opentelemetry/api";
2
+ import { InternalMetricSettings } from "../base/types";
3
+ import { MetricBase } from "../base/base";
4
+ import { Logger } from "../../../logger/types";
5
+ import { InstanceActionHandler } from "../../dependencies/types";
6
+ export declare class ApplicationStoppedMetric extends MetricBase {
7
+ meter: Meter;
8
+ instanceStoppedHandler: InstanceActionHandler;
9
+ private appStoppedMetric;
10
+ private instanceStoppedUn;
11
+ private validator;
12
+ constructor(settings: InternalMetricSettings, meter: Meter, logger: Logger, instanceStoppedHandler: InstanceActionHandler);
13
+ protected createMetric(): Promise<void>;
14
+ protected subscribe(): Promise<void>;
15
+ protected unsubscribe(): Promise<void>;
16
+ protected destroyMetric(): Promise<void>;
17
+ private handleInstanceStopped;
18
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApplicationStoppedMetric = void 0;
4
+ const base_1 = require("../base/base");
5
+ const stopped_1 = require("../../../validation/metrics/application/stopped");
6
+ class ApplicationStoppedMetric extends base_1.MetricBase {
7
+ constructor(settings, meter, logger, instanceStoppedHandler) {
8
+ super(settings, logger);
9
+ this.meter = meter;
10
+ this.instanceStoppedHandler = instanceStoppedHandler;
11
+ this.validator = new stopped_1.ApplicationStoppedMetricValidator();
12
+ this.validator.validate(this);
13
+ }
14
+ createMetric() {
15
+ const name = this.settings.name;
16
+ const description = this.settings.description;
17
+ this.appStoppedMetric = this.meter.createCounter(name, { description });
18
+ return Promise.resolve();
19
+ }
20
+ subscribe() {
21
+ this.instanceStoppedUn = this.instanceStoppedHandler(this.handleInstanceStopped.bind(this));
22
+ return Promise.resolve();
23
+ }
24
+ unsubscribe() {
25
+ this.instanceStoppedUn();
26
+ return Promise.resolve();
27
+ }
28
+ destroyMetric() {
29
+ return Promise.resolve();
30
+ }
31
+ handleInstanceStopped(args) {
32
+ try {
33
+ this.validator.validateInstanceStopped(args);
34
+ this.logger.debug(`instance stopped for application ${args.application} and metric ${this.settings.name} is being invoked`);
35
+ const data = this.getApplicationData(args.application);
36
+ this.appStoppedMetric.add(1, data);
37
+ this.logger.debug(`metric ${this.settings.name} sent 1 more for app ${data.application}`);
38
+ }
39
+ catch (error) {
40
+ const message = `error while executing handleInstanceStopped for metric from type: ${this.settings.type}`;
41
+ this.logger.warn(message, error);
42
+ }
43
+ }
44
+ }
45
+ exports.ApplicationStoppedMetric = ApplicationStoppedMetric;
46
+ //# sourceMappingURL=stopped.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stopped.js","sourceRoot":"","sources":["../../../../src/metrics/metrics/application/stopped.ts"],"names":[],"mappings":";;;AAEA,uCAA0C;AAC1C,6EAAoG;AAIpG,MAAa,wBAAyB,SAAQ,iBAAU;IAKpD,YACI,QAAgC,EACzB,KAAY,EACnB,MAAc,EACP,sBAA6C;QAEpD,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAJjB,UAAK,GAAL,KAAK,CAAO;QAEZ,2BAAsB,GAAtB,sBAAsB,CAAuB;QAGpD,IAAI,CAAC,SAAS,GAAG,IAAI,2CAAiC,EAAE,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEkB,YAAY;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAChC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC9C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAExE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,SAAS;QACxB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE5F,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,WAAW;QAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,aAAa;QAC5B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEO,qBAAqB,CAAC,IAA+B;QACzD,IAAI;YACA,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAE7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,IAAI,CAAC,WAAW,eAAe,IAAI,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC;YAE5H,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAEnC,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,qEAAqE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC1G,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACpC;IACL,CAAC;CACJ;AAvDD,4DAuDC"}
@@ -0,0 +1,17 @@
1
+ import { Logger } from "../../../logger/types";
2
+ import { ApplicationMetricData, Metric, InternalMetricSettings, LayoutMetricData, MetricData } from "./types";
3
+ export declare abstract class MetricBase implements Metric {
4
+ settings: InternalMetricSettings;
5
+ logger: Logger;
6
+ started: boolean;
7
+ constructor(settings: InternalMetricSettings, logger: Logger);
8
+ start(): Promise<void>;
9
+ stop(): Promise<void>;
10
+ protected abstract createMetric(): Promise<void>;
11
+ protected abstract subscribe(): Promise<void>;
12
+ protected abstract unsubscribe(): Promise<void>;
13
+ protected abstract destroyMetric(): Promise<void>;
14
+ protected getData(): MetricData;
15
+ protected getApplicationData(application: string): ApplicationMetricData;
16
+ protected getLayoutData(layout: string): LayoutMetricData;
17
+ }
@@ -0,0 +1,71 @@
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.MetricBase = void 0;
13
+ const base_1 = require("../../../validation/metrics/base/base");
14
+ class MetricBase {
15
+ constructor(settings, logger) {
16
+ this.settings = settings;
17
+ this.logger = logger;
18
+ this.started = false;
19
+ const validator = new base_1.MetricBaseValidator();
20
+ validator.validate(this);
21
+ }
22
+ start() {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ try {
25
+ yield this.createMetric();
26
+ this.logger.debug(`metric ${this.settings.name} has been created`);
27
+ yield this.subscribe();
28
+ this.logger.debug(`metric ${this.settings.name} has subscribed`);
29
+ this.started = true;
30
+ }
31
+ catch (error) {
32
+ const message = `error while starting and subscribing for metric from type: ${this.settings.type}`;
33
+ this.logger.warn(message, error);
34
+ }
35
+ return Promise.resolve();
36
+ });
37
+ }
38
+ stop() {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ try {
41
+ yield this.unsubscribe();
42
+ this.logger.debug(`metric ${this.settings.name} has unsubscribed`);
43
+ yield this.destroyMetric();
44
+ this.logger.debug(`metric ${this.settings.name} has been destroyed`);
45
+ this.started = false;
46
+ }
47
+ catch (error) {
48
+ const message = `error while stopping and unsubscribing for metric from type: ${this.settings.type}`;
49
+ this.logger.warn(message, error);
50
+ }
51
+ return Promise.resolve();
52
+ });
53
+ }
54
+ getData() {
55
+ const data = {
56
+ user: this.settings.user,
57
+ platformVersion: this.settings.platformVersion
58
+ };
59
+ return data;
60
+ }
61
+ getApplicationData(application) {
62
+ const data = Object.assign(Object.assign({}, this.getData()), { application });
63
+ return data;
64
+ }
65
+ getLayoutData(layout) {
66
+ const data = Object.assign(Object.assign({}, this.getData()), { layout });
67
+ return data;
68
+ }
69
+ }
70
+ exports.MetricBase = MetricBase;
71
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/metrics/metrics/base/base.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,gEAA4E;AAS5E,MAAsB,UAAU;IAG5B,YAAmB,QAAgC,EAAS,MAAc;QAAvD,aAAQ,GAAR,QAAQ,CAAwB;QAAS,WAAM,GAAN,MAAM,CAAQ;QAFnE,YAAO,GAAY,KAAK,CAAC;QAI5B,MAAM,SAAS,GAAG,IAAI,0BAAmB,EAAE,CAAC;QAC5C,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAEY,KAAK;;YACd,IAAI;gBACA,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC;gBAEnE,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,CAAC;gBAEjE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACvB;YAAC,OAAO,KAAK,EAAE;gBACZ,MAAM,OAAO,GAAG,8DAA8D,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;aACpC;YACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;KAAA;IAEY,IAAI;;YACb,IAAI;gBACA,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC;gBAEnE,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,qBAAqB,CAAC,CAAC;gBAErE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACxB;YAAC,OAAO,KAAK,EAAE;gBACZ,MAAM,OAAO,GAAG,gEAAgE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACrG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;aACpC;YACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;KAAA;IAQS,OAAO;QACb,MAAM,IAAI,GAAe;YACrB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YACxB,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe;SACjD,CAAC;QACF,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,kBAAkB,CAAC,WAAmB;QAC5C,MAAM,IAAI,mCACH,IAAI,CAAC,OAAO,EAAE,KACjB,WAAW,GACd,CAAC;QACF,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,aAAa,CAAC,MAAc;QAClC,MAAM,IAAI,mCACH,IAAI,CAAC,OAAO,EAAE,KACjB,MAAM,GACT,CAAC;QACF,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAtED,gCAsEC"}
@@ -0,0 +1,18 @@
1
+ import { Attributes, Meter, Observable, ObservableCallback, ObservableResult } from "@opentelemetry/api";
2
+ import { InternalMetricSettings } from "./types";
3
+ import { MetricBase } from "./base";
4
+ import { Logger } from "../../../logger/types";
5
+ export declare abstract class GaugeMetricBase<TData extends Attributes> extends MetricBase {
6
+ meter: Meter;
7
+ protected metric: Observable<TData>;
8
+ protected observableCallback: ObservableCallback<TData>;
9
+ constructor(settings: InternalMetricSettings, meter: Meter, logger: Logger);
10
+ protected createMetric(): Promise<void>;
11
+ protected subscribe(): Promise<void>;
12
+ protected destroyMetric(): Promise<void>;
13
+ protected unsubscribe(): Promise<void>;
14
+ protected observe(result: ObservableResult<TData>): Promise<void>;
15
+ protected abstract subscribeCore(): Promise<void>;
16
+ protected abstract observeCore(result: ObservableResult<TData>): Promise<void>;
17
+ protected abstract unsubscribeCore(): Promise<void>;
18
+ }
@@ -0,0 +1,61 @@
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.GaugeMetricBase = void 0;
13
+ const base_1 = require("./base");
14
+ const gauge_1 = require("../../../validation/metrics/base/gauge");
15
+ class GaugeMetricBase extends base_1.MetricBase {
16
+ constructor(settings, meter, logger) {
17
+ super(settings, logger);
18
+ this.meter = meter;
19
+ this.meter = meter;
20
+ const validator = new gauge_1.GaugeMetricBaseValidator();
21
+ validator.validate(this);
22
+ }
23
+ createMetric() {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ const name = this.settings.name;
26
+ const description = this.settings.description;
27
+ const unit = this.settings.unit;
28
+ this.metric = this.meter.createObservableGauge(name, { description, unit });
29
+ yield Promise.resolve();
30
+ });
31
+ }
32
+ subscribe() {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ this.observableCallback = this.observe.bind(this);
35
+ this.metric.addCallback(this.observableCallback);
36
+ yield this.subscribeCore();
37
+ });
38
+ }
39
+ destroyMetric() {
40
+ this.metric.removeCallback(this.observableCallback);
41
+ return Promise.resolve();
42
+ }
43
+ unsubscribe() {
44
+ return this.unsubscribeCore();
45
+ }
46
+ observe(result) {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ try {
49
+ this.logger.debug(`observe is being invoked for gauge metric ${this.settings.name}`);
50
+ yield this.observeCore(result);
51
+ this.logger.debug(`gauge metric ${this.settings.name} has been observed`);
52
+ }
53
+ catch (error) {
54
+ const message = `error while executing observe for metric from type: ${this.settings.type}`;
55
+ this.logger.warn(message, error);
56
+ }
57
+ });
58
+ }
59
+ }
60
+ exports.GaugeMetricBase = GaugeMetricBase;
61
+ //# sourceMappingURL=gauge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gauge.js","sourceRoot":"","sources":["../../../../src/metrics/metrics/base/gauge.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,iCAAoC;AACpC,kEAAkF;AAGlF,MAAsB,eAA0C,SAAQ,iBAAU;IAI9E,YAAY,QAAgC,EAAS,KAAY,EAAE,MAAc;QAC7E,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QADyB,UAAK,GAAL,KAAK,CAAO;QAG7D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,MAAM,SAAS,GAAG,IAAI,gCAAwB,EAAE,CAAC;QACjD,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAEwB,YAAY;;YACjC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAChC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAEhC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YAE5E,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC;KAAA;IAEwB,SAAS;;YAC9B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAEjD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/B,CAAC;KAAA;IAEkB,aAAa;QAC5B,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,WAAW;QAC1B,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;IAClC,CAAC;IAEe,OAAO,CAAC,MAA+B;;YACnD,IAAI;gBACA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;gBAErF,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAE/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC,CAAC;aAC7E;YAAC,OAAO,KAAK,EAAE;gBACZ,MAAM,OAAO,GAAG,uDAAuD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC5F,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;aACpC;QACL,CAAC;KAAA;CAKJ;AAvDD,0CAuDC"}
@@ -0,0 +1,10 @@
1
+ import { Logger } from "../../../logger/types";
2
+ import { Metric, InternalMetricSettings } from "./types";
3
+ export declare class NullMetric implements Metric {
4
+ settings: InternalMetricSettings;
5
+ private logger;
6
+ started: boolean;
7
+ constructor(settings: InternalMetricSettings, logger: Logger);
8
+ start(): Promise<void>;
9
+ stop(): Promise<void>;
10
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NullMetric = void 0;
4
+ class NullMetric {
5
+ constructor(settings, logger) {
6
+ this.settings = settings;
7
+ this.logger = logger;
8
+ this.started = false;
9
+ }
10
+ start() {
11
+ this.logger.debug(`null metric has been started instead of ${this.settings.type} one`);
12
+ this.started = true;
13
+ return Promise.resolve();
14
+ }
15
+ stop() {
16
+ this.logger.debug(`null metric has been stopped instead of ${this.settings.type} one`);
17
+ this.started = false;
18
+ return Promise.resolve();
19
+ }
20
+ }
21
+ exports.NullMetric = NullMetric;
22
+ //# sourceMappingURL=null.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"null.js","sourceRoot":"","sources":["../../../../src/metrics/metrics/base/null.ts"],"names":[],"mappings":";;;AAGA,MAAa,UAAU;IAGnB,YAAmB,QAAgC,EAAU,MAAc;QAAxD,aAAQ,GAAR,QAAQ,CAAwB;QAAU,WAAM,GAAN,MAAM,CAAQ;QAFpE,YAAO,GAAY,KAAK,CAAC;IAE+C,CAAC;IAEzE,KAAK;QACR,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC;QACvF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEM,IAAI;QACP,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC;QACvF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;CACJ;AAhBD,gCAgBC"}
@@ -0,0 +1,20 @@
1
+ import { Attributes, Meter, Observable, ObservableCallback } from "@opentelemetry/api";
2
+ import { MetricBase } from "./base";
3
+ import { InternalMetricSettings } from "./types";
4
+ import { Logger } from "../../../logger/types";
5
+ export declare abstract class ObservableMetricBase<TData extends Attributes> extends MetricBase {
6
+ meter: Meter;
7
+ protected metric: Observable<TData>;
8
+ protected observableCallback: ObservableCallback<TData>;
9
+ constructor(settings: InternalMetricSettings, meter: Meter, logger: Logger);
10
+ protected createMetric(): Promise<void>;
11
+ protected subscribe(): Promise<void>;
12
+ protected destroyMetric(): Promise<void>;
13
+ protected unsubscribe(): Promise<void>;
14
+ protected observe(): Promise<void>;
15
+ protected abstract createMetricCore(): Promise<void>;
16
+ protected abstract subscribeCore(): Promise<void>;
17
+ protected abstract observeCore(): Promise<void>;
18
+ protected abstract unsubscribeCore(): Promise<void>;
19
+ private createUniqueName;
20
+ }
@@ -0,0 +1,69 @@
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.ObservableMetricBase = void 0;
13
+ const base_1 = require("./base");
14
+ const gauge_1 = require("../../../validation/metrics/base/gauge");
15
+ class ObservableMetricBase extends base_1.MetricBase {
16
+ constructor(settings, meter, logger) {
17
+ super(settings, logger);
18
+ this.meter = meter;
19
+ this.meter = meter;
20
+ const validator = new gauge_1.GaugeMetricBaseValidator();
21
+ validator.validate(this);
22
+ }
23
+ createMetric() {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ const gaugeName = this.createUniqueName(64);
26
+ this.metric = this.meter.createObservableGauge(gaugeName);
27
+ yield this.createMetricCore();
28
+ });
29
+ }
30
+ subscribe() {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ this.observableCallback = this.observe.bind(this);
33
+ this.metric.addCallback(this.observableCallback);
34
+ yield this.subscribeCore();
35
+ });
36
+ }
37
+ destroyMetric() {
38
+ this.metric.removeCallback(this.observableCallback);
39
+ return Promise.resolve();
40
+ }
41
+ unsubscribe() {
42
+ return this.unsubscribeCore();
43
+ }
44
+ observe() {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ try {
47
+ this.logger.debug(`observe is being invoked for gauge metric ${this.settings.name}`);
48
+ yield this.observeCore();
49
+ this.logger.debug(`gauge metric ${this.settings.name} has been observed`);
50
+ }
51
+ catch (error) {
52
+ const message = `error while executing observe for metric from type: ${this.settings.type}`;
53
+ this.logger.warn(message, error);
54
+ }
55
+ });
56
+ }
57
+ createUniqueName(length) {
58
+ const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
59
+ let result = "";
60
+ const randomArray = new Uint8Array(length);
61
+ crypto.getRandomValues(randomArray);
62
+ randomArray.forEach((number) => {
63
+ result += chars[number % chars.length];
64
+ });
65
+ return result;
66
+ }
67
+ }
68
+ exports.ObservableMetricBase = ObservableMetricBase;
69
+ //# sourceMappingURL=observable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observable.js","sourceRoot":"","sources":["../../../../src/metrics/metrics/base/observable.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,iCAAoC;AAEpC,kEAAkF;AAGlF,MAAsB,oBAA+C,SAAQ,iBAAU;IAInF,YAAY,QAAgC,EAAS,KAAY,EAAE,MAAc;QAC7E,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QADyB,UAAK,GAAL,KAAK,CAAO;QAG7D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,MAAM,SAAS,GAAG,IAAI,gCAAwB,EAAE,CAAC;QACjD,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAEe,YAAY;;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;YAE1D,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAClC,CAAC;KAAA;IAEwB,SAAS;;YAC9B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAEjD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/B,CAAC;KAAA;IAEkB,aAAa;QAC5B,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,WAAW;QAC1B,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;IAClC,CAAC;IAEe,OAAO;;YACnB,IAAI;gBACA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;gBAErF,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;gBAEzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC,CAAC;aAC7E;YAAC,OAAO,KAAK,EAAE;gBACZ,MAAM,OAAO,GAAG,uDAAuD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC5F,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;aACpC;QACL,CAAC;KAAA;IAOO,gBAAgB,CAAC,MAAc;QACnC,MAAM,KAAK,GAAG,sDAAsD,CAAC;QACrE,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACpC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAhED,oDAgEC"}
@@ -0,0 +1,31 @@
1
+ import { Attributes } from "@opentelemetry/api";
2
+ export interface InternalMetricSettings {
3
+ enabled: boolean;
4
+ type: MetricType;
5
+ name: string;
6
+ description: string;
7
+ user: string;
8
+ platformVersion: string;
9
+ unit?: string;
10
+ buckets?: number[];
11
+ }
12
+ export interface MetricSettings extends Partial<Omit<InternalMetricSettings, "type" | "user" | "platformVersion">> {
13
+ type: MetricType;
14
+ }
15
+ export interface MetricData extends Attributes {
16
+ user: string;
17
+ platformVersion: string;
18
+ }
19
+ export interface ApplicationMetricData extends MetricData {
20
+ application: string;
21
+ }
22
+ export interface LayoutMetricData extends MetricData {
23
+ layout: string;
24
+ }
25
+ export interface Metric {
26
+ settings: MetricSettings;
27
+ started: boolean;
28
+ start(): Promise<void>;
29
+ stop(): Promise<void>;
30
+ }
31
+ export type MetricType = "app_started" | "app_stopped" | "app_startup" | "app_count" | "app_duration" | "app_memory" | "app_cpu" | "app_error" | "app_crash" | "layout_startup" | "workspace_startup" | "workspace_stopped" | "workspace_count" | "platform_startup" | "platform_error" | "system_memory" | "system_cpu" | "null";
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/metrics/metrics/base/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import { Meter } from "@opentelemetry/api";
2
+ import { InternalMetricSettings } from "../base/types";
3
+ import { MetricBase } from "../base/base";
4
+ import { Logger } from "../../../logger/types";
5
+ import { LayoutRestoredHandler } from "../../dependencies/types";
6
+ export declare class LayoutStartupMetric extends MetricBase {
7
+ private meter;
8
+ layoutRestoredHandler: LayoutRestoredHandler;
9
+ private layoutRestoredUn;
10
+ private validator;
11
+ private layoutStartupMetric;
12
+ constructor(settings: InternalMetricSettings, meter: Meter, logger: Logger, layoutRestoredHandler: LayoutRestoredHandler);
13
+ protected createMetric(): Promise<void>;
14
+ protected subscribe(): Promise<void>;
15
+ protected unsubscribe(): Promise<void>;
16
+ protected destroyMetric(): Promise<void>;
17
+ private handleLayoutRestored;
18
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LayoutStartupMetric = void 0;
4
+ const startupHistogram_1 = require("../../../validation/metrics/layout/startupHistogram");
5
+ const base_1 = require("../base/base");
6
+ class LayoutStartupMetric extends base_1.MetricBase {
7
+ constructor(settings, meter, logger, layoutRestoredHandler) {
8
+ super(settings, logger);
9
+ this.meter = meter;
10
+ this.layoutRestoredHandler = layoutRestoredHandler;
11
+ this.validator = new startupHistogram_1.LayoutStartupMetricHistogramValidator();
12
+ this.validator.validate(this);
13
+ }
14
+ createMetric() {
15
+ const advice = { explicitBucketBoundaries: this.settings.buckets };
16
+ this.layoutStartupMetric = this.meter.createHistogram(this.settings.name, { description: this.settings.description, unit: this.settings.unit, advice });
17
+ return Promise.resolve();
18
+ }
19
+ subscribe() {
20
+ this.layoutRestoredUn = this.layoutRestoredHandler(this.handleLayoutRestored.bind(this));
21
+ return Promise.resolve();
22
+ }
23
+ unsubscribe() {
24
+ this.layoutRestoredUn();
25
+ return Promise.resolve();
26
+ }
27
+ destroyMetric() {
28
+ return Promise.resolve();
29
+ }
30
+ handleLayoutRestored(args) {
31
+ try {
32
+ this.validator.validateLayoutRestored(args);
33
+ this.logger.debug(`layout restored is being invoked for metric ${this.settings.name}`);
34
+ const startupTime = args.endTime.getTime() - args.startTime.getTime();
35
+ const data = this.getLayoutData(args.layout);
36
+ this.layoutStartupMetric.record(startupTime, data);
37
+ this.logger.debug(`metric ${this.settings.name} sent startup time ${startupTime} for layout ${data.layout}`);
38
+ }
39
+ catch (error) {
40
+ const message = `error while executing handleLayoutRestored for metric from type: ${this.settings.type}`;
41
+ this.logger.warn(message, error);
42
+ }
43
+ }
44
+ }
45
+ exports.LayoutStartupMetric = LayoutStartupMetric;
46
+ //# sourceMappingURL=startup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startup.js","sourceRoot":"","sources":["../../../../src/metrics/metrics/layout/startup.ts"],"names":[],"mappings":";;;AAEA,0FAA4G;AAC5G,uCAA0C;AAI1C,MAAa,mBAAoB,SAAQ,iBAAU;IAK/C,YACI,QAAgC,EACxB,KAAY,EACpB,MAAc,EACP,qBAA4C;QAEnD,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAJhB,UAAK,GAAL,KAAK,CAAO;QAEb,0BAAqB,GAArB,qBAAqB,CAAuB;QAInD,IAAI,CAAC,SAAS,GAAG,IAAI,wDAAqC,EAAE,CAAC;QAC7D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEkB,YAAY;QAC3B,MAAM,MAAM,GAAG,EAAE,wBAAwB,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAExJ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,SAAS;QACxB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,WAAW;QAC1B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,aAAa;QAC5B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEO,oBAAoB,CAAC,IAA+B;QACxD,IAAI;YACA,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAE5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAEvF,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACtE,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAEnD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,sBAAsB,WAAW,eAAe,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;SAChH;QAAC,OAAO,KAAK,EAAE;YACZ,MAAM,OAAO,GAAG,oEAAoE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACzG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACpC;IACL,CAAC;CACJ;AAtDD,kDAsDC"}
@@ -0,0 +1,18 @@
1
+ import { Meter } from "@opentelemetry/api";
2
+ import { MetricBase } from "../base/base";
3
+ import { InternalMetricSettings } from "../base/types";
4
+ import { Logger } from "../../../logger/types";
5
+ import { PlatformErrorHandler } from "../../dependencies/types";
6
+ export declare class PlatformErrorMetric extends MetricBase {
7
+ meter: Meter;
8
+ platformErrorHandler: PlatformErrorHandler;
9
+ private platformErrorMetric;
10
+ private platformErrorUn;
11
+ private validator;
12
+ constructor(settings: InternalMetricSettings, meter: Meter, logger: Logger, platformErrorHandler: PlatformErrorHandler);
13
+ protected createMetric(): Promise<void>;
14
+ protected subscribe(): Promise<void>;
15
+ protected destroyMetric(): Promise<void>;
16
+ protected unsubscribe(): Promise<void>;
17
+ private handlePlatformError;
18
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PlatformErrorMetric = void 0;
4
+ const base_1 = require("../base/base");
5
+ const error_1 = require("../../../validation/metrics/platform/error");
6
+ class PlatformErrorMetric extends base_1.MetricBase {
7
+ constructor(settings, meter, logger, platformErrorHandler) {
8
+ super(settings, logger);
9
+ this.meter = meter;
10
+ this.platformErrorHandler = platformErrorHandler;
11
+ this.validator = new error_1.PlatformErrorMetricValidator();
12
+ this.validator.validate(this);
13
+ }
14
+ createMetric() {
15
+ const name = this.settings.name;
16
+ const description = this.settings.description;
17
+ this.platformErrorMetric = this.meter.createCounter(name, { description });
18
+ return Promise.resolve();
19
+ }
20
+ subscribe() {
21
+ this.platformErrorUn = this.platformErrorHandler(this.handlePlatformError.bind(this));
22
+ return Promise.resolve();
23
+ }
24
+ destroyMetric() {
25
+ return Promise.resolve();
26
+ }
27
+ unsubscribe() {
28
+ this.platformErrorUn();
29
+ return Promise.resolve();
30
+ }
31
+ handlePlatformError(args) {
32
+ try {
33
+ this.validator.validatePlatformError(args);
34
+ this.logger.debug(`platform error for metric ${this.settings.name} is being invoked`);
35
+ const data = this.getData();
36
+ this.platformErrorMetric.add(1, data);
37
+ this.logger.debug(`metric ${this.settings.name} sent 1 more for app ${data.application}`);
38
+ }
39
+ catch (error) {
40
+ const message = `error while executing handlePlatformError for metric from type: ${this.settings.type}`;
41
+ this.logger.warn(message, error);
42
+ }
43
+ }
44
+ }
45
+ exports.PlatformErrorMetric = PlatformErrorMetric;
46
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../../../src/metrics/metrics/platform/error.ts"],"names":[],"mappings":";;;AACA,uCAA0C;AAC1C,sEAA0F;AAK1F,MAAa,mBAAoB,SAAQ,iBAAU;IAK/C,YACI,QAAgC,EACzB,KAAY,EACnB,MAAc,EACP,oBAA0C;QAEjD,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAJjB,UAAK,GAAL,KAAK,CAAO;QAEZ,yBAAoB,GAApB,oBAAoB,CAAsB;QAGjD,IAAI,CAAC,SAAS,GAAG,IAAI,oCAA4B,EAAE,CAAC;QACpD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEkB,YAAY;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAChC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC9C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAE3E,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,SAAS;QACxB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEtF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,aAAa;QAC5B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,WAAW;QAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEO,mBAAmB,CAAC,IAA8B;QACtD,IAAI;YACA,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAE3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,IAAI,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC;YAEtF,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAEtC,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,mEAAmE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACpC;IACL,CAAC;CACJ;AAtDD,kDAsDC"}