1 | "use strict";
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 | Object.defineProperty(exports, "__esModule", { value: true });
|
18 | exports.MetricRegistry = void 0;
|
19 | const time_util_1 = require("../common/time-util");
|
20 | const validations_1 = require("../common/validations");
|
21 | const types_1 = require("../stats/types");
|
22 | const cumulative_1 = require("./cumulative/cumulative");
|
23 | const derived_cumulative_1 = require("./cumulative/derived-cumulative");
|
24 | const base_metric_producer_1 = require("./export/base-metric-producer");
|
25 | const types_2 = require("./export/types");
|
26 | const derived_gauge_1 = require("./gauges/derived-gauge");
|
27 | const gauge_1 = require("./gauges/gauge");
|
28 |
|
29 |
|
30 |
|
31 | class MetricRegistry {
|
32 | constructor() {
|
33 | this.registeredMetrics = new Map();
|
34 | this.metricProducer = new MetricProducerForRegistry(this.registeredMetrics);
|
35 | }
|
36 | |
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 | addInt64Gauge(name, options) {
|
46 | const description = (options && options.description) || MetricRegistry.DEFAULT_DESCRIPTION;
|
47 | const unit = (options && options.unit) || MetricRegistry.DEFAULT_UNIT;
|
48 | const labelKeys = (options && options.labelKeys) || MetricRegistry.DEFAULT_LABEL_KEYS;
|
49 | const constantLabels = (options && options.constantLabels) ||
|
50 | MetricRegistry.DEFAULT_CONSTANT_LABEL;
|
51 |
|
52 | this.validateLables(labelKeys, constantLabels);
|
53 | const labelKeysCopy = Object.assign([], labelKeys);
|
54 | const int64Gauge = new gauge_1.Gauge(validations_1.validateNotNull(name, MetricRegistry.NAME), description, unit, types_2.MetricDescriptorType.GAUGE_INT64, labelKeysCopy, constantLabels);
|
55 | this.registerMetric(name, int64Gauge);
|
56 | return int64Gauge;
|
57 | }
|
58 | |
59 |
|
60 |
|
61 |
|
62 |
|
63 |
|
64 |
|
65 |
|
66 |
|
67 | addDoubleGauge(name, options) {
|
68 | const description = (options && options.description) || MetricRegistry.DEFAULT_DESCRIPTION;
|
69 | const unit = (options && options.unit) || MetricRegistry.DEFAULT_UNIT;
|
70 | const labelKeys = (options && options.labelKeys) || MetricRegistry.DEFAULT_LABEL_KEYS;
|
71 | const constantLabels = (options && options.constantLabels) ||
|
72 | MetricRegistry.DEFAULT_CONSTANT_LABEL;
|
73 |
|
74 | this.validateLables(labelKeys, constantLabels);
|
75 | const labelKeysCopy = Object.assign([], labelKeys);
|
76 | const doubleGauge = new gauge_1.Gauge(validations_1.validateNotNull(name, MetricRegistry.NAME), description, unit, types_2.MetricDescriptorType.GAUGE_DOUBLE, labelKeysCopy, constantLabels);
|
77 | this.registerMetric(name, doubleGauge);
|
78 | return doubleGauge;
|
79 | }
|
80 | |
81 |
|
82 |
|
83 |
|
84 |
|
85 |
|
86 |
|
87 |
|
88 |
|
89 | addDerivedInt64Gauge(name, options) {
|
90 | const description = (options && options.description) || MetricRegistry.DEFAULT_DESCRIPTION;
|
91 | const unit = (options && options.unit) || MetricRegistry.DEFAULT_UNIT;
|
92 | const labelKeys = (options && options.labelKeys) || MetricRegistry.DEFAULT_LABEL_KEYS;
|
93 | const constantLabels = (options && options.constantLabels) ||
|
94 | MetricRegistry.DEFAULT_CONSTANT_LABEL;
|
95 |
|
96 | this.validateLables(labelKeys, constantLabels);
|
97 | const labelKeysCopy = Object.assign([], labelKeys);
|
98 | const derivedInt64Gauge = new derived_gauge_1.DerivedGauge(validations_1.validateNotNull(name, MetricRegistry.NAME), description, unit, types_2.MetricDescriptorType.GAUGE_INT64, labelKeysCopy, constantLabels);
|
99 | this.registerMetric(name, derivedInt64Gauge);
|
100 | return derivedInt64Gauge;
|
101 | }
|
102 | |
103 |
|
104 |
|
105 |
|
106 |
|
107 |
|
108 |
|
109 |
|
110 |
|
111 | addDerivedDoubleGauge(name, options) {
|
112 | const description = (options && options.description) || MetricRegistry.DEFAULT_DESCRIPTION;
|
113 | const unit = (options && options.unit) || MetricRegistry.DEFAULT_UNIT;
|
114 | const labelKeys = (options && options.labelKeys) || MetricRegistry.DEFAULT_LABEL_KEYS;
|
115 | const constantLabels = (options && options.constantLabels) ||
|
116 | MetricRegistry.DEFAULT_CONSTANT_LABEL;
|
117 |
|
118 | this.validateLables(labelKeys, constantLabels);
|
119 | const labelKeysCopy = Object.assign([], labelKeys);
|
120 | const derivedDoubleGauge = new derived_gauge_1.DerivedGauge(validations_1.validateNotNull(name, MetricRegistry.NAME), description, unit, types_2.MetricDescriptorType.GAUGE_DOUBLE, labelKeysCopy, constantLabels);
|
121 | this.registerMetric(name, derivedDoubleGauge);
|
122 | return derivedDoubleGauge;
|
123 | }
|
124 | |
125 |
|
126 |
|
127 |
|
128 |
|
129 |
|
130 |
|
131 |
|
132 |
|
133 | addInt64Cumulative(name, options) {
|
134 | const description = (options && options.description) || MetricRegistry.DEFAULT_DESCRIPTION;
|
135 | const unit = (options && options.unit) || MetricRegistry.DEFAULT_UNIT;
|
136 | const labelKeys = (options && options.labelKeys) || MetricRegistry.DEFAULT_LABEL_KEYS;
|
137 | const constantLabels = (options && options.constantLabels) ||
|
138 | MetricRegistry.DEFAULT_CONSTANT_LABEL;
|
139 |
|
140 | this.validateLables(labelKeys, constantLabels);
|
141 | const labelKeysCopy = Object.assign([], labelKeys);
|
142 | const int64Cumulative = new cumulative_1.Cumulative(validations_1.validateNotNull(name, MetricRegistry.NAME), description, unit, types_2.MetricDescriptorType.CUMULATIVE_INT64, labelKeysCopy, constantLabels);
|
143 | this.registerMetric(name, int64Cumulative);
|
144 | return int64Cumulative;
|
145 | }
|
146 | |
147 |
|
148 |
|
149 |
|
150 |
|
151 |
|
152 |
|
153 |
|
154 |
|
155 | addDoubleCumulative(name, options) {
|
156 | const description = (options && options.description) || MetricRegistry.DEFAULT_DESCRIPTION;
|
157 | const unit = (options && options.unit) || MetricRegistry.DEFAULT_UNIT;
|
158 | const labelKeys = (options && options.labelKeys) || MetricRegistry.DEFAULT_LABEL_KEYS;
|
159 | const constantLabels = (options && options.constantLabels) ||
|
160 | MetricRegistry.DEFAULT_CONSTANT_LABEL;
|
161 |
|
162 | this.validateLables(labelKeys, constantLabels);
|
163 | const labelKeysCopy = Object.assign([], labelKeys);
|
164 | const doubleCumulative = new cumulative_1.Cumulative(validations_1.validateNotNull(name, MetricRegistry.NAME), description, unit, types_2.MetricDescriptorType.CUMULATIVE_DOUBLE, labelKeysCopy, constantLabels);
|
165 | this.registerMetric(name, doubleCumulative);
|
166 | return doubleCumulative;
|
167 | }
|
168 | |
169 |
|
170 |
|
171 |
|
172 |
|
173 |
|
174 |
|
175 | addDerivedInt64Cumulative(name, options) {
|
176 | const description = (options && options.description) || MetricRegistry.DEFAULT_DESCRIPTION;
|
177 | const unit = (options && options.unit) || MetricRegistry.DEFAULT_UNIT;
|
178 | const labelKeys = (options && options.labelKeys) || MetricRegistry.DEFAULT_LABEL_KEYS;
|
179 | const constantLabels = (options && options.constantLabels) ||
|
180 | MetricRegistry.DEFAULT_CONSTANT_LABEL;
|
181 |
|
182 | this.validateLables(labelKeys, constantLabels);
|
183 | const labelKeysCopy = Object.assign([], labelKeys);
|
184 | const startTime = time_util_1.getTimestampWithProcessHRTime();
|
185 | const derivedInt64Cumulative = new derived_cumulative_1.DerivedCumulative(validations_1.validateNotNull(name, MetricRegistry.NAME), description, unit, types_2.MetricDescriptorType.CUMULATIVE_INT64, labelKeysCopy, constantLabels, startTime);
|
186 | this.registerMetric(name, derivedInt64Cumulative);
|
187 | return derivedInt64Cumulative;
|
188 | }
|
189 | |
190 |
|
191 |
|
192 |
|
193 |
|
194 |
|
195 |
|
196 | addDerivedDoubleCumulative(name, options) {
|
197 | const description = (options && options.description) || MetricRegistry.DEFAULT_DESCRIPTION;
|
198 | const unit = (options && options.unit) || MetricRegistry.DEFAULT_UNIT;
|
199 | const labelKeys = (options && options.labelKeys) || MetricRegistry.DEFAULT_LABEL_KEYS;
|
200 | const constantLabels = (options && options.constantLabels) ||
|
201 | MetricRegistry.DEFAULT_CONSTANT_LABEL;
|
202 |
|
203 | this.validateLables(labelKeys, constantLabels);
|
204 | const labelKeysCopy = Object.assign([], labelKeys);
|
205 | const startTime = time_util_1.getTimestampWithProcessHRTime();
|
206 | const derivedDoubleCumulative = new derived_cumulative_1.DerivedCumulative(validations_1.validateNotNull(name, MetricRegistry.NAME), description, unit, types_2.MetricDescriptorType.CUMULATIVE_DOUBLE, labelKeysCopy, constantLabels, startTime);
|
207 | this.registerMetric(name, derivedDoubleCumulative);
|
208 | return derivedDoubleCumulative;
|
209 | }
|
210 | |
211 |
|
212 |
|
213 |
|
214 |
|
215 |
|
216 | registerMetric(name, meter) {
|
217 | if (this.registeredMetrics.has(name)) {
|
218 | throw new Error(`A metric with the name ${name} has already been registered.`);
|
219 | }
|
220 | this.registeredMetrics.set(name, meter);
|
221 | }
|
222 | |
223 |
|
224 |
|
225 |
|
226 |
|
227 | getMetricProducer() {
|
228 | return this.metricProducer;
|
229 | }
|
230 |
|
231 | validateLables(labelKeys, constantLabels) {
|
232 | validations_1.validateArrayElementsNotNull(labelKeys, MetricRegistry.LABEL_KEY);
|
233 | validations_1.validateMapElementNotNull(constantLabels, MetricRegistry.CONSTANT_LABELS);
|
234 | validations_1.validateDuplicateKeys(labelKeys, constantLabels);
|
235 | }
|
236 | }
|
237 | exports.MetricRegistry = MetricRegistry;
|
238 | MetricRegistry.NAME = 'name';
|
239 | MetricRegistry.LABEL_KEY = 'labelKey';
|
240 | MetricRegistry.CONSTANT_LABELS = 'constantLabels';
|
241 | MetricRegistry.DEFAULT_DESCRIPTION = '';
|
242 | MetricRegistry.DEFAULT_UNIT = types_1.MeasureUnit.UNIT;
|
243 | MetricRegistry.DEFAULT_LABEL_KEYS = [];
|
244 | MetricRegistry.DEFAULT_CONSTANT_LABEL = new Map();
|
245 |
|
246 |
|
247 |
|
248 |
|
249 | class MetricProducerForRegistry extends base_metric_producer_1.BaseMetricProducer {
|
250 | constructor(registeredMetrics) {
|
251 | super();
|
252 | this.registeredMetrics = registeredMetrics;
|
253 | }
|
254 | |
255 |
|
256 |
|
257 |
|
258 |
|
259 | getMetrics() {
|
260 | return Array.from(this.registeredMetrics.values())
|
261 | .map(meter => meter.getMetric())
|
262 | .filter(meter => !!meter);
|
263 | }
|
264 | }
|
265 |
|
\ | No newline at end of file |