@libp2p/prometheus-metrics 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/counter-group.d.ts +3 -2
- package/dist/src/counter-group.d.ts.map +1 -1
- package/dist/src/counter-group.js +1 -0
- package/dist/src/counter-group.js.map +1 -1
- package/dist/src/counter.d.ts +3 -2
- package/dist/src/counter.d.ts.map +1 -1
- package/dist/src/counter.js +1 -0
- package/dist/src/counter.js.map +1 -1
- package/dist/src/index.d.ts +10 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -6
- package/dist/src/index.js.map +1 -1
- package/dist/src/metric-group.d.ts +3 -2
- package/dist/src/metric-group.d.ts.map +1 -1
- package/dist/src/metric-group.js +1 -0
- package/dist/src/metric-group.js.map +1 -1
- package/dist/src/metric.d.ts +3 -2
- package/dist/src/metric.d.ts.map +1 -1
- package/dist/src/metric.js +1 -0
- package/dist/src/metric.js.map +1 -1
- package/package.json +1 -1
- package/src/counter-group.ts +4 -2
- package/src/counter.ts +4 -2
- package/src/index.ts +24 -11
- package/src/metric-group.ts +4 -2
- package/src/metric.ts +4 -2
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import type { CounterGroup
|
|
1
|
+
import type { CounterGroup } from '@libp2p/interface-metrics';
|
|
2
|
+
import type { PrometheusCalculatedMetricOptions } from './index.js';
|
|
2
3
|
export declare class PrometheusCounterGroup implements CounterGroup {
|
|
3
4
|
private readonly counter;
|
|
4
5
|
private readonly label;
|
|
5
|
-
constructor(name: string, opts:
|
|
6
|
+
constructor(name: string, opts: PrometheusCalculatedMetricOptions<Record<string, number>>);
|
|
6
7
|
increment(values: Record<string, number | unknown>): void;
|
|
7
8
|
reset(): void;
|
|
8
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"counter-group.d.ts","sourceRoot":"","sources":["../../src/counter-group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"counter-group.d.ts","sourceRoot":"","sources":["../../src/counter-group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,2BAA2B,CAAA;AAE9E,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAA;AAGnE,qBAAa,sBAAuB,YAAW,YAAY;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;gBAEjB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IA4B1F,SAAS,CAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI;IAQ1D,KAAK,IAAK,IAAI;CAGf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"counter-group.js","sourceRoot":"","sources":["../../src/counter-group.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAmB,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"counter-group.js","sourceRoot":"","sources":["../../src/counter-group.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAmB,MAAM,aAAa,CAAA;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,MAAM,OAAO,sBAAsB;IAIjC,YAAa,IAAY,EAAE,IAA+D;QACxF,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;QAC5B,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAA;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAA;QAC9D,IAAI,OAAsD,CAAA;QAE1D,oBAAoB;QACpB,IAAI,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE;YAC3B,MAAM,SAAS,GAA4C,IAAI,CAAC,SAAS,CAAA;YAEzE,OAAO,GAAG,KAAK;gBACb,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAA;gBAEhC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;oBAC9C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;gBACnC,CAAC,CAAC,CAAA;YACJ,CAAC,CAAA;SACF;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC;YAC7B,IAAI;YACJ,IAAI;YACJ,UAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YACxB,SAAS,EAAE,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;YACpE,OAAO;SACR,CAAC,CAAA;IACJ,CAAC;IAED,SAAS,CAAE,MAAwC;QACjD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC9C,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YAEjD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAA;QAC9C,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;CACF"}
|
package/dist/src/counter.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { Counter
|
|
1
|
+
import type { Counter } from '@libp2p/interface-metrics';
|
|
2
|
+
import type { PrometheusCalculatedMetricOptions } from './index.js';
|
|
2
3
|
export declare class PrometheusCounter implements Counter {
|
|
3
4
|
private readonly counter;
|
|
4
|
-
constructor(name: string, opts:
|
|
5
|
+
constructor(name: string, opts: PrometheusCalculatedMetricOptions);
|
|
5
6
|
increment(value?: number): void;
|
|
6
7
|
reset(): void;
|
|
7
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"counter.d.ts","sourceRoot":"","sources":["../../src/counter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"counter.d.ts","sourceRoot":"","sources":["../../src/counter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAExD,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAA;AAGnE,qBAAa,iBAAkB,YAAW,OAAO;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;gBAExB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC;IA0BlE,SAAS,CAAE,KAAK,GAAE,MAAU,GAAG,IAAI;IAInC,KAAK,IAAK,IAAI;CAGf"}
|
package/dist/src/counter.js
CHANGED
package/dist/src/counter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"counter.js","sourceRoot":"","sources":["../../src/counter.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,OAAO,IAAI,WAAW,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"counter.js","sourceRoot":"","sources":["../../src/counter.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,OAAO,IAAI,WAAW,EAAE,MAAM,aAAa,CAAA;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,MAAM,OAAO,iBAAiB;IAG5B,YAAa,IAAY,EAAE,IAAuC;QAChE,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;QAC5B,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QACtE,IAAI,OAAsD,CAAA;QAE1D,oBAAoB;QACpB,IAAI,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;YAEhC,OAAO,GAAG,KAAK;gBACb,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAA;gBAE/B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YACjB,CAAC,CAAA;SACF;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC;YAC7B,IAAI;YACJ,IAAI;YACJ,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;YACpE,OAAO;SACR,CAAC,CAAA;IACJ,CAAC;IAED,SAAS,CAAE,QAAgB,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;CACF"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import type { Metrics } from '@libp2p/interface-metrics';
|
|
2
|
-
import { DefaultMetricsCollectorConfiguration } from 'prom-client';
|
|
1
|
+
import type { CalculatedMetricOptions, Metrics } from '@libp2p/interface-metrics';
|
|
2
|
+
import { DefaultMetricsCollectorConfiguration, Registry } from 'prom-client';
|
|
3
3
|
export interface PrometheusMetricsInit {
|
|
4
|
+
/**
|
|
5
|
+
* Use a custom registry to register metrics.
|
|
6
|
+
* By default, the global registry is used to register metrics.
|
|
7
|
+
*/
|
|
8
|
+
registry?: Registry;
|
|
4
9
|
/**
|
|
5
10
|
* By default we collect default metrics - CPU, memory etc, to not do
|
|
6
11
|
* this, pass true here
|
|
@@ -17,5 +22,8 @@ export interface PrometheusMetricsInit {
|
|
|
17
22
|
*/
|
|
18
23
|
preserveExistingMetrics?: boolean;
|
|
19
24
|
}
|
|
25
|
+
export interface PrometheusCalculatedMetricOptions<T = number> extends CalculatedMetricOptions<T> {
|
|
26
|
+
registry?: Registry;
|
|
27
|
+
}
|
|
20
28
|
export declare function prometheusMetrics(init?: Partial<PrometheusMetricsInit>): () => Metrics;
|
|
21
29
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAA6D,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAC5I,OAAO,EAAyB,oCAAoC,EAAY,QAAQ,EAAE,MAAM,aAAa,CAAA;AAY7G,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAA;IAEnB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAE/B;;OAEG;IACH,cAAc,CAAC,EAAE,oCAAoC,CAAA;IAErD;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAClC;AAED,MAAM,WAAW,iCAAiC,CAAC,CAAC,GAAC,MAAM,CAAE,SAAQ,uBAAuB,CAAC,CAAC,CAAC;IAC7F,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACpB;AA2JD,wBAAgB,iBAAiB,CAAE,IAAI,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,MAAM,OAAO,CAIvF"}
|
package/dist/src/index.js
CHANGED
|
@@ -8,13 +8,14 @@ import { logger } from '@libp2p/logger';
|
|
|
8
8
|
const log = logger('libp2p:prometheus-metrics');
|
|
9
9
|
class PrometheusMetrics {
|
|
10
10
|
constructor(init) {
|
|
11
|
+
this.registry = init?.registry;
|
|
11
12
|
if (init?.preserveExistingMetrics !== true) {
|
|
12
13
|
log('Clearing existing metrics');
|
|
13
|
-
register.clear();
|
|
14
|
+
(this.registry ?? register).clear();
|
|
14
15
|
}
|
|
15
16
|
if (init?.preserveExistingMetrics !== false) {
|
|
16
17
|
log('Collecting default metrics');
|
|
17
|
-
collectDefaultMetrics(init?.defaultMetrics);
|
|
18
|
+
collectDefaultMetrics({ ...init?.defaultMetrics, register: this.registry ?? init?.defaultMetrics?.register });
|
|
18
19
|
}
|
|
19
20
|
// holds global and per-protocol sent/received stats
|
|
20
21
|
this.transferStats = new Map();
|
|
@@ -82,7 +83,7 @@ class PrometheusMetrics {
|
|
|
82
83
|
throw new Error('Metric name is required');
|
|
83
84
|
}
|
|
84
85
|
log('Register metric', name);
|
|
85
|
-
const metric = new PrometheusMetric(name, opts
|
|
86
|
+
const metric = new PrometheusMetric(name, { registry: this.registry, ...opts });
|
|
86
87
|
if (opts.calculate == null) {
|
|
87
88
|
return metric;
|
|
88
89
|
}
|
|
@@ -92,7 +93,7 @@ class PrometheusMetrics {
|
|
|
92
93
|
throw new Error('Metric name is required');
|
|
93
94
|
}
|
|
94
95
|
log('Register metric group', name);
|
|
95
|
-
const group = new PrometheusMetricGroup(name, opts
|
|
96
|
+
const group = new PrometheusMetricGroup(name, { registry: this.registry, ...opts });
|
|
96
97
|
if (opts.calculate == null) {
|
|
97
98
|
return group;
|
|
98
99
|
}
|
|
@@ -102,7 +103,7 @@ class PrometheusMetrics {
|
|
|
102
103
|
throw new Error('Counter name is required');
|
|
103
104
|
}
|
|
104
105
|
log('Register counter', name);
|
|
105
|
-
const counter = new PrometheusCounter(name, opts);
|
|
106
|
+
const counter = new PrometheusCounter(name, { registry: this.registry, ...opts });
|
|
106
107
|
if (opts.calculate == null) {
|
|
107
108
|
return counter;
|
|
108
109
|
}
|
|
@@ -112,7 +113,7 @@ class PrometheusMetrics {
|
|
|
112
113
|
throw new Error('Metric name is required');
|
|
113
114
|
}
|
|
114
115
|
log('Register counter group', name);
|
|
115
|
-
const group = new PrometheusCounterGroup(name, opts);
|
|
116
|
+
const group = new PrometheusCounterGroup(name, { registry: this.registry, ...opts });
|
|
116
117
|
if (opts.calculate == null) {
|
|
117
118
|
return group;
|
|
118
119
|
}
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAwC,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { MetricGroup, StopTimer } from '@libp2p/interface-metrics';
|
|
2
|
+
import type { PrometheusCalculatedMetricOptions } from './index.js';
|
|
2
3
|
export declare class PrometheusMetricGroup implements MetricGroup {
|
|
3
4
|
private readonly gauge;
|
|
4
5
|
private readonly label;
|
|
5
|
-
constructor(name: string, opts:
|
|
6
|
+
constructor(name: string, opts: PrometheusCalculatedMetricOptions<Record<string, number>>);
|
|
6
7
|
update(values: Record<string, number>): void;
|
|
7
8
|
increment(values: Record<string, number | unknown>): void;
|
|
8
9
|
decrement(values: Record<string, number | unknown>): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metric-group.d.ts","sourceRoot":"","sources":["../../src/metric-group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"metric-group.d.ts","sourceRoot":"","sources":["../../src/metric-group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,WAAW,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAExF,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAA;AAGnE,qBAAa,qBAAsB,YAAW,WAAW;IACvD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;gBAEjB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IA4B1F,MAAM,CAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAM7C,SAAS,CAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI;IAQ1D,SAAS,CAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI;IAQ1D,KAAK,IAAK,IAAI;IAId,KAAK,CAAE,GAAG,EAAE,MAAM,GAAG,SAAS;CAK/B"}
|
package/dist/src/metric-group.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metric-group.js","sourceRoot":"","sources":["../../src/metric-group.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"metric-group.js","sourceRoot":"","sources":["../../src/metric-group.ts"],"names":[],"mappings":"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"}
|
package/dist/src/metric.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { Metric,
|
|
1
|
+
import type { Metric, StopTimer } from '@libp2p/interface-metrics';
|
|
2
|
+
import type { PrometheusCalculatedMetricOptions } from './index.js';
|
|
2
3
|
export declare class PrometheusMetric implements Metric {
|
|
3
4
|
private readonly gauge;
|
|
4
|
-
constructor(name: string, opts:
|
|
5
|
+
constructor(name: string, opts: PrometheusCalculatedMetricOptions);
|
|
5
6
|
update(value: number): void;
|
|
6
7
|
increment(value?: number): void;
|
|
7
8
|
decrement(value?: number): void;
|
package/dist/src/metric.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metric.d.ts","sourceRoot":"","sources":["../../src/metric.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"metric.d.ts","sourceRoot":"","sources":["../../src/metric.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAElE,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAA;AAGnE,qBAAa,gBAAiB,YAAW,MAAM;IAC7C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;gBAEhB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC;IA0BlE,MAAM,CAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI5B,SAAS,CAAE,KAAK,GAAE,MAAU,GAAG,IAAI;IAInC,SAAS,CAAE,KAAK,GAAE,MAAU,GAAG,IAAI;IAInC,KAAK,IAAK,IAAI;IAId,KAAK,IAAK,SAAS;CAGpB"}
|
package/dist/src/metric.js
CHANGED
package/dist/src/metric.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metric.js","sourceRoot":"","sources":["../../src/metric.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"metric.js","sourceRoot":"","sources":["../../src/metric.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,EAAE,MAAM,aAAa,CAAA;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,MAAM,OAAO,gBAAgB;IAG3B,YAAa,IAAY,EAAE,IAAuC;QAChE,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;QAC5B,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QACtE,IAAI,OAAgD,CAAA;QAEpD,oBAAoB;QACpB,IAAI,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;YAEhC,OAAO,GAAG,KAAK;gBACb,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAA;gBAE/B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YACjB,CAAC,CAAA;SACF;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC;YACrB,IAAI;YACJ,IAAI;YACJ,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;YACpE,OAAO;SACR,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAE,KAAa;QACnB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC;IAED,SAAS,CAAE,QAAgB,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC;IAED,SAAS,CAAE,QAAgB,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAA;IAChC,CAAC;CACF"}
|
package/package.json
CHANGED
package/src/counter-group.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import type { CounterGroup,
|
|
1
|
+
import type { CounterGroup, CalculateMetric } from '@libp2p/interface-metrics'
|
|
2
2
|
import { Counter as PromCounter, CollectFunction } from 'prom-client'
|
|
3
|
+
import type { PrometheusCalculatedMetricOptions } from './index.js'
|
|
3
4
|
import { normaliseString } from './utils.js'
|
|
4
5
|
|
|
5
6
|
export class PrometheusCounterGroup implements CounterGroup {
|
|
6
7
|
private readonly counter: PromCounter
|
|
7
8
|
private readonly label: string
|
|
8
9
|
|
|
9
|
-
constructor (name: string, opts:
|
|
10
|
+
constructor (name: string, opts: PrometheusCalculatedMetricOptions<Record<string, number>>) {
|
|
10
11
|
name = normaliseString(name)
|
|
11
12
|
const help = normaliseString(opts.help ?? name)
|
|
12
13
|
const label = this.label = normaliseString(opts.label ?? name)
|
|
@@ -29,6 +30,7 @@ export class PrometheusCounterGroup implements CounterGroup {
|
|
|
29
30
|
name,
|
|
30
31
|
help,
|
|
31
32
|
labelNames: [this.label],
|
|
33
|
+
registers: opts.registry !== undefined ? [opts.registry] : undefined,
|
|
32
34
|
collect
|
|
33
35
|
})
|
|
34
36
|
}
|
package/src/counter.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import type { Counter
|
|
1
|
+
import type { Counter } from '@libp2p/interface-metrics'
|
|
2
2
|
import { CollectFunction, Counter as PromCounter } from 'prom-client'
|
|
3
|
+
import type { PrometheusCalculatedMetricOptions } from './index.js'
|
|
3
4
|
import { normaliseString } from './utils.js'
|
|
4
5
|
|
|
5
6
|
export class PrometheusCounter implements Counter {
|
|
6
7
|
private readonly counter: PromCounter
|
|
7
8
|
|
|
8
|
-
constructor (name: string, opts:
|
|
9
|
+
constructor (name: string, opts: PrometheusCalculatedMetricOptions) {
|
|
9
10
|
name = normaliseString(name)
|
|
10
11
|
const help = normaliseString(opts.help ?? name)
|
|
11
12
|
const labels = opts.label != null ? [normaliseString(opts.label)] : []
|
|
@@ -26,6 +27,7 @@ export class PrometheusCounter implements Counter {
|
|
|
26
27
|
name,
|
|
27
28
|
help,
|
|
28
29
|
labelNames: labels,
|
|
30
|
+
registers: opts.registry !== undefined ? [opts.registry] : undefined,
|
|
29
31
|
collect
|
|
30
32
|
})
|
|
31
33
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CalculatedMetricOptions, Counter, CounterGroup, Metric, MetricGroup, MetricOptions, Metrics } from '@libp2p/interface-metrics'
|
|
2
|
-
import { collectDefaultMetrics, DefaultMetricsCollectorConfiguration, register } from 'prom-client'
|
|
2
|
+
import { collectDefaultMetrics, DefaultMetricsCollectorConfiguration, register, Registry } from 'prom-client'
|
|
3
3
|
import type { MultiaddrConnection, Stream, Connection } from '@libp2p/interface-connection'
|
|
4
4
|
import type { Duplex } from 'it-stream-types'
|
|
5
5
|
import each from 'it-foreach'
|
|
@@ -12,6 +12,12 @@ import { logger } from '@libp2p/logger'
|
|
|
12
12
|
const log = logger('libp2p:prometheus-metrics')
|
|
13
13
|
|
|
14
14
|
export interface PrometheusMetricsInit {
|
|
15
|
+
/**
|
|
16
|
+
* Use a custom registry to register metrics.
|
|
17
|
+
* By default, the global registry is used to register metrics.
|
|
18
|
+
*/
|
|
19
|
+
registry?: Registry
|
|
20
|
+
|
|
15
21
|
/**
|
|
16
22
|
* By default we collect default metrics - CPU, memory etc, to not do
|
|
17
23
|
* this, pass true here
|
|
@@ -31,18 +37,25 @@ export interface PrometheusMetricsInit {
|
|
|
31
37
|
preserveExistingMetrics?: boolean
|
|
32
38
|
}
|
|
33
39
|
|
|
40
|
+
export interface PrometheusCalculatedMetricOptions<T=number> extends CalculatedMetricOptions<T> {
|
|
41
|
+
registry?: Registry
|
|
42
|
+
}
|
|
43
|
+
|
|
34
44
|
class PrometheusMetrics implements Metrics {
|
|
35
45
|
private transferStats: Map<string, number>
|
|
46
|
+
private readonly registry?: Registry
|
|
36
47
|
|
|
37
48
|
constructor (init?: Partial<PrometheusMetricsInit>) {
|
|
49
|
+
this.registry = init?.registry
|
|
50
|
+
|
|
38
51
|
if (init?.preserveExistingMetrics !== true) {
|
|
39
52
|
log('Clearing existing metrics')
|
|
40
|
-
register.clear()
|
|
53
|
+
;(this.registry ?? register).clear()
|
|
41
54
|
}
|
|
42
55
|
|
|
43
56
|
if (init?.preserveExistingMetrics !== false) {
|
|
44
57
|
log('Collecting default metrics')
|
|
45
|
-
collectDefaultMetrics(init?.defaultMetrics)
|
|
58
|
+
collectDefaultMetrics({ ...init?.defaultMetrics, register: this.registry ?? init?.defaultMetrics?.register })
|
|
46
59
|
}
|
|
47
60
|
|
|
48
61
|
// holds global and per-protocol sent/received stats
|
|
@@ -120,7 +133,7 @@ class PrometheusMetrics implements Metrics {
|
|
|
120
133
|
this._track(stream, stream.stat.protocol)
|
|
121
134
|
}
|
|
122
135
|
|
|
123
|
-
registerMetric (name: string, opts:
|
|
136
|
+
registerMetric (name: string, opts: PrometheusCalculatedMetricOptions): void
|
|
124
137
|
registerMetric (name: string, opts?: MetricOptions): Metric
|
|
125
138
|
registerMetric (name: string, opts: any = {}): any {
|
|
126
139
|
if (name == null ?? name.trim() === '') {
|
|
@@ -128,14 +141,14 @@ class PrometheusMetrics implements Metrics {
|
|
|
128
141
|
}
|
|
129
142
|
|
|
130
143
|
log('Register metric', name)
|
|
131
|
-
const metric = new PrometheusMetric(name, opts
|
|
144
|
+
const metric = new PrometheusMetric(name, { registry: this.registry, ...opts })
|
|
132
145
|
|
|
133
146
|
if (opts.calculate == null) {
|
|
134
147
|
return metric
|
|
135
148
|
}
|
|
136
149
|
}
|
|
137
150
|
|
|
138
|
-
registerMetricGroup (name: string, opts:
|
|
151
|
+
registerMetricGroup (name: string, opts: PrometheusCalculatedMetricOptions<Record<string, number>>): void
|
|
139
152
|
registerMetricGroup (name: string, opts?: MetricOptions): MetricGroup
|
|
140
153
|
registerMetricGroup (name: string, opts: any = {}): any {
|
|
141
154
|
if (name == null ?? name.trim() === '') {
|
|
@@ -143,14 +156,14 @@ class PrometheusMetrics implements Metrics {
|
|
|
143
156
|
}
|
|
144
157
|
|
|
145
158
|
log('Register metric group', name)
|
|
146
|
-
const group = new PrometheusMetricGroup(name, opts
|
|
159
|
+
const group = new PrometheusMetricGroup(name, { registry: this.registry, ...opts })
|
|
147
160
|
|
|
148
161
|
if (opts.calculate == null) {
|
|
149
162
|
return group
|
|
150
163
|
}
|
|
151
164
|
}
|
|
152
165
|
|
|
153
|
-
registerCounter (name: string, opts:
|
|
166
|
+
registerCounter (name: string, opts: PrometheusCalculatedMetricOptions): void
|
|
154
167
|
registerCounter (name: string, opts?: MetricOptions): Counter
|
|
155
168
|
registerCounter (name: string, opts: any = {}): any {
|
|
156
169
|
if (name == null ?? name.trim() === '') {
|
|
@@ -158,14 +171,14 @@ class PrometheusMetrics implements Metrics {
|
|
|
158
171
|
}
|
|
159
172
|
|
|
160
173
|
log('Register counter', name)
|
|
161
|
-
const counter = new PrometheusCounter(name, opts)
|
|
174
|
+
const counter = new PrometheusCounter(name, { registry: this.registry, ...opts })
|
|
162
175
|
|
|
163
176
|
if (opts.calculate == null) {
|
|
164
177
|
return counter
|
|
165
178
|
}
|
|
166
179
|
}
|
|
167
180
|
|
|
168
|
-
registerCounterGroup (name: string, opts:
|
|
181
|
+
registerCounterGroup (name: string, opts: PrometheusCalculatedMetricOptions<Record<string, number>>): void
|
|
169
182
|
registerCounterGroup (name: string, opts?: MetricOptions): CounterGroup
|
|
170
183
|
registerCounterGroup (name: string, opts: any = {}): any {
|
|
171
184
|
if (name == null ?? name.trim() === '') {
|
|
@@ -173,7 +186,7 @@ class PrometheusMetrics implements Metrics {
|
|
|
173
186
|
}
|
|
174
187
|
|
|
175
188
|
log('Register counter group', name)
|
|
176
|
-
const group = new PrometheusCounterGroup(name, opts)
|
|
189
|
+
const group = new PrometheusCounterGroup(name, { registry: this.registry, ...opts })
|
|
177
190
|
|
|
178
191
|
if (opts.calculate == null) {
|
|
179
192
|
return group
|
package/src/metric-group.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CalculateMetric, MetricGroup, StopTimer } from '@libp2p/interface-metrics'
|
|
2
2
|
import { CollectFunction, Gauge } from 'prom-client'
|
|
3
|
+
import type { PrometheusCalculatedMetricOptions } from './index.js'
|
|
3
4
|
import { normaliseString } from './utils.js'
|
|
4
5
|
|
|
5
6
|
export class PrometheusMetricGroup implements MetricGroup {
|
|
6
7
|
private readonly gauge: Gauge
|
|
7
8
|
private readonly label: string
|
|
8
9
|
|
|
9
|
-
constructor (name: string, opts:
|
|
10
|
+
constructor (name: string, opts: PrometheusCalculatedMetricOptions<Record<string, number>>) {
|
|
10
11
|
name = normaliseString(name)
|
|
11
12
|
const help = normaliseString(opts.help ?? name)
|
|
12
13
|
const label = this.label = normaliseString(opts.label ?? name)
|
|
@@ -29,6 +30,7 @@ export class PrometheusMetricGroup implements MetricGroup {
|
|
|
29
30
|
name,
|
|
30
31
|
help,
|
|
31
32
|
labelNames: [this.label],
|
|
33
|
+
registers: opts.registry !== undefined ? [opts.registry] : undefined,
|
|
32
34
|
collect
|
|
33
35
|
})
|
|
34
36
|
}
|
package/src/metric.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import type { Metric,
|
|
1
|
+
import type { Metric, StopTimer } from '@libp2p/interface-metrics'
|
|
2
2
|
import { CollectFunction, Gauge } from 'prom-client'
|
|
3
|
+
import type { PrometheusCalculatedMetricOptions } from './index.js'
|
|
3
4
|
import { normaliseString } from './utils.js'
|
|
4
5
|
|
|
5
6
|
export class PrometheusMetric implements Metric {
|
|
6
7
|
private readonly gauge: Gauge
|
|
7
8
|
|
|
8
|
-
constructor (name: string, opts:
|
|
9
|
+
constructor (name: string, opts: PrometheusCalculatedMetricOptions) {
|
|
9
10
|
name = normaliseString(name)
|
|
10
11
|
const help = normaliseString(opts.help ?? name)
|
|
11
12
|
const labels = opts.label != null ? [normaliseString(opts.label)] : []
|
|
@@ -26,6 +27,7 @@ export class PrometheusMetric implements Metric {
|
|
|
26
27
|
name,
|
|
27
28
|
help,
|
|
28
29
|
labelNames: labels,
|
|
30
|
+
registers: opts.registry !== undefined ? [opts.registry] : undefined,
|
|
29
31
|
collect
|
|
30
32
|
})
|
|
31
33
|
}
|