@libp2p/prometheus-metrics 1.1.2 → 1.1.4

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/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![libp2p.io](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/)
4
4
  [![Discuss](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg?style=flat-square)](https://discuss.libp2p.io)
5
5
  [![codecov](https://img.shields.io/codecov/c/github/libp2p/js-libp2p-prometheus-metrics.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p-prometheus-metrics)
6
- [![CI](https://img.shields.io/github/workflow/status/libp2p/js-libp2p-prometheus-metrics/test%20&%20maybe%20release/main?style=flat-square)](https://github.com/libp2p/js-libp2p-prometheus-metrics/actions/workflows/js-test-and-release.yml)
6
+ [![CI](https://img.shields.io/github/actions/workflow/status/libp2p/js-libp2p-prometheus-metrics/js-test-and-release.yml?branch=main\&style=flat-square)](https://github.com/libp2p/js-libp2p-prometheus-metrics/actions/workflows/js-test-and-release.yml?query=branch%3Amain)
7
7
 
8
8
  > Collect libp2p metrics for scraping by Prometheus or Graphana
9
9
 
@@ -17,8 +17,9 @@
17
17
  - [Memory usage](#memory-usage)
18
18
  - [DHT query time](#dht-query-time)
19
19
  - [TCP transport dialer errors](#tcp-transport-dialer-errors)
20
+ - [API Docs](#api-docs)
20
21
  - [License](#license)
21
- - [Contribute](#contribute)
22
+ - [Contribution](#contribution)
22
23
 
23
24
  ## Install
24
25
 
@@ -80,6 +81,10 @@ or
80
81
 
81
82
  rate(libp2p_tcp_dialer_errors_total[30s])
82
83
 
84
+ ## API Docs
85
+
86
+ - <https://libp2p.github.io/js-libp2p-prometheus-metrics>
87
+
83
88
  ## License
84
89
 
85
90
  Licensed under either of
@@ -87,6 +92,6 @@ Licensed under either of
87
92
  - Apache 2.0, ([LICENSE-APACHE](LICENSE-APACHE) / <http://www.apache.org/licenses/LICENSE-2.0>)
88
93
  - MIT ([LICENSE-MIT](LICENSE-MIT) / <http://opensource.org/licenses/MIT>)
89
94
 
90
- ## Contribute
95
+ ## Contribution
91
96
 
92
97
  Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
@@ -1,6 +1,6 @@
1
- import type { CounterGroup, CalculateMetric } from '@libp2p/interface-metrics';
2
- import { CalculatedMetric } from './utils.js';
1
+ import { type CalculatedMetric } from './utils.js';
3
2
  import type { PrometheusCalculatedMetricOptions } from './index.js';
3
+ import type { CounterGroup, CalculateMetric } from '@libp2p/interface-metrics';
4
4
  export declare class PrometheusCounterGroup implements CounterGroup, CalculatedMetric<Record<string, number>> {
5
5
  private readonly counter;
6
6
  private readonly label;
@@ -1 +1 @@
1
- {"version":3,"file":"counter-group.d.ts","sourceRoot":"","sources":["../../src/counter-group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE9E,OAAO,EAAmB,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAA;AAEnE,qBAAa,sBAAuB,YAAW,YAAY,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgD;gBAE/D,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAgC1F,aAAa,CAAE,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAIlE,SAAS,CAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI;IAQ1D,KAAK,IAAK,IAAI;CAGf"}
1
+ {"version":3,"file":"counter-group.d.ts","sourceRoot":"","sources":["../../src/counter-group.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE9E,qBAAa,sBAAuB,YAAW,YAAY,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgD;gBAE/D,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAgC1F,aAAa,CAAE,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI;IAIzE,SAAS,CAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI;IAQ1D,KAAK,IAAK,IAAI;CAGf"}
@@ -1,6 +1,9 @@
1
1
  import { Counter as PromCounter } from 'prom-client';
2
2
  import { normaliseString } from './utils.js';
3
3
  export class PrometheusCounterGroup {
4
+ counter;
5
+ label;
6
+ calculators;
4
7
  constructor(name, opts) {
5
8
  name = normaliseString(name);
6
9
  const help = normaliseString(opts.help ?? name);
@@ -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;AACrE,OAAO,EAAE,eAAe,EAAoB,MAAM,YAAY,CAAA;AAG9D,MAAM,OAAO,sBAAsB;IAKjC,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;QAC1D,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;QAErB,oBAAoB;QACpB,IAAI,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE;YAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACrC,MAAM,IAAI,GAAG,IAAI,CAAA;YAEjB,OAAO,GAAG,KAAK;gBACb,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAC,SAAS,EAAC,EAAE;oBACvD,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAA;oBAEhC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;wBAC9C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;oBACnC,CAAC,CAAC,CAAA;gBACJ,CAAC,CAAC,CAAC,CAAA;YACL,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,aAAa,CAAE,UAAmD;QAChE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACnC,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"}
1
+ {"version":3,"file":"counter-group.js","sourceRoot":"","sources":["../../src/counter-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAwB,MAAM,aAAa,CAAA;AAC1E,OAAO,EAAE,eAAe,EAAyB,MAAM,YAAY,CAAA;AAInE,MAAM,OAAO,sBAAsB;IAChB,OAAO,CAAa;IACpB,KAAK,CAAQ;IACb,WAAW,CAAgD;IAE5E,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;QAC1D,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;QAErB,oBAAoB;QACpB,IAAI,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE;YAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACrC,MAAM,IAAI,GAAG,IAAI,CAAA;YAEjB,OAAO,GAAG,KAAK;gBACb,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAC,SAAS,EAAC,EAAE;oBACvD,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAA;oBAEhC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;wBAC9C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;oBACnC,CAAC,CAAC,CAAA;gBACJ,CAAC,CAAC,CAAC,CAAA;YACL,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,aAAa,CAAE,UAAmD;QAChE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACnC,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"}
@@ -1,6 +1,6 @@
1
- import type { CalculateMetric, Counter } from '@libp2p/interface-metrics';
1
+ import { type CalculatedMetric } from './utils.js';
2
2
  import type { PrometheusCalculatedMetricOptions } from './index.js';
3
- import { CalculatedMetric } from './utils.js';
3
+ import type { CalculateMetric, Counter } from '@libp2p/interface-metrics';
4
4
  export declare class PrometheusCounter implements Counter, CalculatedMetric {
5
5
  private readonly counter;
6
6
  private readonly calculators;
@@ -1 +1 @@
1
- {"version":3,"file":"counter.d.ts","sourceRoot":"","sources":["../../src/counter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAEzE,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,EAAmB,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE9D,qBAAa,iBAAkB,YAAW,OAAO,EAAE,gBAAgB;IACjE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmB;gBAElC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC;IA6BlE,aAAa,CAAE,UAAU,EAAE,eAAe;IAI1C,SAAS,CAAE,KAAK,GAAE,MAAU,GAAG,IAAI;IAInC,KAAK,IAAK,IAAI;CAGf"}
1
+ {"version":3,"file":"counter.d.ts","sourceRoot":"","sources":["../../src/counter.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAEzE,qBAAa,iBAAkB,YAAW,OAAO,EAAE,gBAAgB;IACjE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmB;gBAElC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC;IA6BlE,aAAa,CAAE,UAAU,EAAE,eAAe,GAAG,IAAI;IAIjD,SAAS,CAAE,KAAK,GAAE,MAAU,GAAG,IAAI;IAInC,KAAK,IAAK,IAAI;CAGf"}
@@ -1,6 +1,8 @@
1
1
  import { Counter as PromCounter } from 'prom-client';
2
2
  import { normaliseString } from './utils.js';
3
3
  export class PrometheusCounter {
4
+ counter;
5
+ calculators;
4
6
  constructor(name, opts) {
5
7
  name = normaliseString(name);
6
8
  const help = normaliseString(opts.help ?? name);
@@ -12,7 +14,7 @@ export class PrometheusCounter {
12
14
  this.calculators.push(opts.calculate);
13
15
  const self = this;
14
16
  collect = async function () {
15
- const values = await Promise.all(self.calculators.map(async (calculate) => await calculate()));
17
+ const values = await Promise.all(self.calculators.map(async (calculate) => calculate()));
16
18
  const sum = values.reduce((acc, curr) => acc + curr, 0);
17
19
  this.inc(sum);
18
20
  };
@@ -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;AAErE,OAAO,EAAE,eAAe,EAAoB,MAAM,YAAY,CAAA;AAE9D,MAAM,OAAO,iBAAiB;IAI5B,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;QAC1D,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;QAErB,oBAAoB;QACpB,IAAI,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE;YAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACrC,MAAM,IAAI,GAAG,IAAI,CAAA;YAEjB,OAAO,GAAG,KAAK;gBACb,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAC,SAAS,EAAC,EAAE,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,CAAA;gBAC5F,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAA;gBAEvD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACf,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,aAAa,CAAE,UAA2B;QACxC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACnC,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"}
1
+ {"version":3,"file":"counter.js","sourceRoot":"","sources":["../../src/counter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,OAAO,IAAI,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1E,OAAO,EAAE,eAAe,EAAyB,MAAM,YAAY,CAAA;AAInE,MAAM,OAAO,iBAAiB;IACX,OAAO,CAAa;IACpB,WAAW,CAAmB;IAE/C,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;QAC1D,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;QAErB,oBAAoB;QACpB,IAAI,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE;YAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACrC,MAAM,IAAI,GAAG,IAAI,CAAA;YAEjB,OAAO,GAAG,KAAK;gBACb,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAC,SAAS,EAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;gBACtF,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAA;gBAEvD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACf,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,aAAa,CAAE,UAA2B;QACxC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACnC,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"}
@@ -1,5 +1,100 @@
1
+ /**
2
+ * @packageDocumentation
3
+ *
4
+ * Collect libp2p metrics for scraping by Prometheus or Graphana.
5
+ * @module libp2p-prometheus-metrics
6
+ *
7
+ * A tracked metric can be created by calling either `registerMetric` on the metrics object
8
+ *
9
+ * @example
10
+ *
11
+ * ```typescript
12
+ * import { prometheusMetrics } from '@libp2p/prometheus-metrics'
13
+ *
14
+ * const metrics = prometheusMetrics()()
15
+ * const myMetric = metrics.registerMetric({
16
+ * name: 'my_metric',
17
+ * label: 'my_label',
18
+ * help: 'my help text'
19
+ * })
20
+ *
21
+ * myMetric.update(1)
22
+ * ```
23
+ * A metric that is expensive to calculate can be created by passing a `calculate` function that will only be invoked when metrics are being scraped:
24
+ *
25
+ * @example
26
+ *
27
+ * ```typescript
28
+ * import { prometheusMetrics } from '@libp2p/prometheus-metrics'
29
+ *
30
+ * const metrics = prometheusMetrics()()
31
+ * const myMetric = metrics.registerMetric({
32
+ * name: 'my_metric',
33
+ * label: 'my_label',
34
+ * help: 'my help text',
35
+ * calculate: async () => {
36
+ * // do something expensive
37
+ * return 1
38
+ * }
39
+ * })
40
+ * ```
41
+ *
42
+ * If several metrics should be grouped together (e.g. for graphing purposes) `registerMetricGroup` can be used instead:
43
+ *
44
+ * @example
45
+ *
46
+ * ```typescript
47
+ * import { prometheusMetrics } from '@libp2p/prometheus-metrics'
48
+ *
49
+ * const metrics = prometheusMetrics()()
50
+ * const myMetricGroup = metrics.registerMetricGroup({
51
+ * name: 'my_metric_group',
52
+ * label: 'my_label',
53
+ * help: 'my help text'
54
+ * })
55
+ *
56
+ * myMetricGroup.increment({ my_label: 'my_value' })
57
+ * ```
58
+ *
59
+ * There are specific metric groups for tracking libp2p connections and streams:
60
+ *
61
+ * Track a newly opened multiaddr connection:
62
+ * @example
63
+ *
64
+ * ```typescript
65
+ * import { prometheusMetrics } from '@libp2p/prometheus-metrics'
66
+ * import { createLibp2p } from 'libp2p'
67
+ *
68
+ *
69
+ * const metrics = prometheusMetrics()()
70
+ *
71
+ * const libp2p = await createLibp2p({
72
+ * metrics: metrics,
73
+ * })
74
+ * // set up a multiaddr connection
75
+ * const connection = await libp2p.dial('multiaddr')
76
+ * const connections = metrics.trackMultiaddrConnection(connection)
77
+ * ```
78
+ *
79
+ * Track a newly opened stream:
80
+ * @example
81
+ *
82
+ * ```typescript
83
+ * import { prometheusMetrics } from '@libp2p/prometheus-metrics'
84
+ * import { createLibp2p } from 'libp2p'
85
+ *
86
+ * const metrics = prometheusMetrics()()
87
+ *
88
+ * const libp2p = await createLibp2p({
89
+ * metrics: metrics,
90
+ * })
91
+ *
92
+ * const stream = await connection.newStream('/my/protocol')
93
+ * const streams = metrics.trackProtocolStream(stream)
94
+ * ```
95
+ */
96
+ import { type DefaultMetricsCollectorConfiguration, type Registry } from 'prom-client';
1
97
  import type { CalculatedMetricOptions, Metrics } from '@libp2p/interface-metrics';
2
- import { DefaultMetricsCollectorConfiguration, Registry } from 'prom-client';
3
98
  export interface PrometheusMetricsInit {
4
99
  /**
5
100
  * Use a custom registry to register metrics.
@@ -1 +1 @@
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;AAe7G,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;AAoND,wBAAgB,iBAAiB,CAAE,IAAI,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,MAAM,OAAO,CAIvF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8FG;AAIH,OAAO,EAAyB,KAAK,oCAAoC,EAAY,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAA;AAMvH,OAAO,KAAK,EAAE,uBAAuB,EAA6D,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAQ5I,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;AAoND,wBAAgB,iBAAiB,CAAE,IAAI,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,MAAM,OAAO,CAIvF"}
package/dist/src/index.js CHANGED
@@ -1,14 +1,111 @@
1
- import { collectDefaultMetrics, register } from 'prom-client';
1
+ /**
2
+ * @packageDocumentation
3
+ *
4
+ * Collect libp2p metrics for scraping by Prometheus or Graphana.
5
+ * @module libp2p-prometheus-metrics
6
+ *
7
+ * A tracked metric can be created by calling either `registerMetric` on the metrics object
8
+ *
9
+ * @example
10
+ *
11
+ * ```typescript
12
+ * import { prometheusMetrics } from '@libp2p/prometheus-metrics'
13
+ *
14
+ * const metrics = prometheusMetrics()()
15
+ * const myMetric = metrics.registerMetric({
16
+ * name: 'my_metric',
17
+ * label: 'my_label',
18
+ * help: 'my help text'
19
+ * })
20
+ *
21
+ * myMetric.update(1)
22
+ * ```
23
+ * A metric that is expensive to calculate can be created by passing a `calculate` function that will only be invoked when metrics are being scraped:
24
+ *
25
+ * @example
26
+ *
27
+ * ```typescript
28
+ * import { prometheusMetrics } from '@libp2p/prometheus-metrics'
29
+ *
30
+ * const metrics = prometheusMetrics()()
31
+ * const myMetric = metrics.registerMetric({
32
+ * name: 'my_metric',
33
+ * label: 'my_label',
34
+ * help: 'my help text',
35
+ * calculate: async () => {
36
+ * // do something expensive
37
+ * return 1
38
+ * }
39
+ * })
40
+ * ```
41
+ *
42
+ * If several metrics should be grouped together (e.g. for graphing purposes) `registerMetricGroup` can be used instead:
43
+ *
44
+ * @example
45
+ *
46
+ * ```typescript
47
+ * import { prometheusMetrics } from '@libp2p/prometheus-metrics'
48
+ *
49
+ * const metrics = prometheusMetrics()()
50
+ * const myMetricGroup = metrics.registerMetricGroup({
51
+ * name: 'my_metric_group',
52
+ * label: 'my_label',
53
+ * help: 'my help text'
54
+ * })
55
+ *
56
+ * myMetricGroup.increment({ my_label: 'my_value' })
57
+ * ```
58
+ *
59
+ * There are specific metric groups for tracking libp2p connections and streams:
60
+ *
61
+ * Track a newly opened multiaddr connection:
62
+ * @example
63
+ *
64
+ * ```typescript
65
+ * import { prometheusMetrics } from '@libp2p/prometheus-metrics'
66
+ * import { createLibp2p } from 'libp2p'
67
+ *
68
+ *
69
+ * const metrics = prometheusMetrics()()
70
+ *
71
+ * const libp2p = await createLibp2p({
72
+ * metrics: metrics,
73
+ * })
74
+ * // set up a multiaddr connection
75
+ * const connection = await libp2p.dial('multiaddr')
76
+ * const connections = metrics.trackMultiaddrConnection(connection)
77
+ * ```
78
+ *
79
+ * Track a newly opened stream:
80
+ * @example
81
+ *
82
+ * ```typescript
83
+ * import { prometheusMetrics } from '@libp2p/prometheus-metrics'
84
+ * import { createLibp2p } from 'libp2p'
85
+ *
86
+ * const metrics = prometheusMetrics()()
87
+ *
88
+ * const libp2p = await createLibp2p({
89
+ * metrics: metrics,
90
+ * })
91
+ *
92
+ * const stream = await connection.newStream('/my/protocol')
93
+ * const streams = metrics.trackProtocolStream(stream)
94
+ * ```
95
+ */
96
+ import { logger } from '@libp2p/logger';
2
97
  import each from 'it-foreach';
3
- import { PrometheusMetric } from './metric.js';
4
- import { PrometheusMetricGroup } from './metric-group.js';
5
- import { PrometheusCounter } from './counter.js';
98
+ import { collectDefaultMetrics, register } from 'prom-client';
6
99
  import { PrometheusCounterGroup } from './counter-group.js';
7
- import { logger } from '@libp2p/logger';
100
+ import { PrometheusCounter } from './counter.js';
101
+ import { PrometheusMetricGroup } from './metric-group.js';
102
+ import { PrometheusMetric } from './metric.js';
8
103
  const log = logger('libp2p:prometheus-metrics');
9
104
  // prom-client metrics are global
10
105
  const metrics = new Map();
11
106
  class PrometheusMetrics {
107
+ transferStats;
108
+ registry;
12
109
  constructor(init) {
13
110
  this.registry = init?.registry;
14
111
  if (init?.preserveExistingMetrics !== true) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8FG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,IAAI,MAAM,YAAY,CAAA;AAC7B,OAAO,EAAE,qBAAqB,EAA6C,QAAQ,EAAiB,MAAM,aAAa,CAAA;AACvH,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAK9C,MAAM,GAAG,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAA;AAE/C,iCAAiC;AACjC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAe,CAAA;AAgCtC,MAAM,iBAAiB;IACb,aAAa,CAAqB;IACzB,QAAQ,CAAW;IAEpC,YAAa,IAAqC;QAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,EAAE,QAAQ,CAAA;QAE9B,IAAI,IAAI,EAAE,uBAAuB,KAAK,IAAI,EAAE;YAC1C,GAAG,CAAC,2BAA2B,CAAC,CAAA;YAChC,OAAO,CAAC,KAAK,EAAE,CACd;YAAA,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAA;SACrC;QAED,IAAI,IAAI,EAAE,qBAAqB,KAAK,KAAK,EAAE;YACzC,GAAG,CAAC,4BAA4B,CAAC,CAAA;YACjC,qBAAqB,CAAC,EAAE,GAAG,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAA;SAC9G;QAED,oDAAoD;QACpD,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAA;QAE9B,GAAG,CAAC,kCAAkC,CAAC,CAAA;QACvC,IAAI,CAAC,oBAAoB,CAAC,kCAAkC,EAAE;YAC5D,KAAK,EAAE,UAAU;YACjB,SAAS,EAAE,GAAG,EAAE;gBACd,MAAM,MAAM,GAA2B,EAAE,CAAA;gBAEzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE;oBACvD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;iBACpB;gBAED,6BAA6B;gBAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAA;gBAE9B,OAAO,MAAM,CAAA;YACf,CAAC;SACF,CAAC,CAAA;QAEF,GAAG,CAAC,2BAA2B,CAAC,CAAA;QAChC,IAAI,CAAC,mBAAmB,CAAC,2BAA2B,EAAE;YACpD,KAAK,EAAE,QAAQ;YACf,SAAS,EAAE,GAAG,EAAE;gBACd,OAAO;oBACL,GAAG,OAAO,CAAC,WAAW,EAAE;iBACzB,CAAA;YACH,CAAC;SACF,CAAC,CAAA;IACJ,CAAC;IAED;;;OAGG;IACH,eAAe,CAAE,GAAW,EAAE,KAAa;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEjD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,GAAG,KAAK,CAAC,CAAA;IAC/C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAE,MAA2B,EAAE,IAAY;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAA;QAEjB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;QACxB,MAAM,CAAC,IAAI,GAAG,KAAK,UAAU,WAAW,CAAE,MAAM;YAC9C,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;gBAC5B,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;YACtD,CAAC,CAAC,CAAC,CAAA;QACL,CAAC,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;QAC5B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;YACjC,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,WAAW,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QAC1D,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,wBAAwB,CAAE,MAA2B;QACnD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC/B,CAAC;IAED,mBAAmB,CAAE,MAAc,EAAE,UAAsB;QACzD,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;YAChC,iEAAiE;YACjE,gDAAgD;YAChD,OAAM;SACP;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC3C,CAAC;IAID,cAAc,CAAE,IAAY,EAAE,OAAY,EAAE;QAC1C,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACtC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;SAC3C;QAED,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAE9B,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACrB,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAA;YAElC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;gBAC1B,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;aACrC;YAED,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;SACzB;QAED,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAA;QAC5B,MAAM,GAAG,IAAI,gBAAgB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;QAEzE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAEzB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;YAC1B,OAAO,MAAM,CAAA;SACd;IACH,CAAC;IAID,mBAAmB,CAAE,IAAY,EAAE,OAAY,EAAE;QAC/C,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACtC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;SACjD;QAED,IAAI,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEnC,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,GAAG,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAA;YAExC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;gBAC1B,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;aAC1C;YAED,OAAO,WAAW,CAAA;SACnB;QAED,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAA;QAClC,WAAW,GAAG,IAAI,qBAAqB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;QAEnF,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QAE9B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;YAC1B,OAAO,WAAW,CAAA;SACnB;IACH,CAAC;IAID,eAAe,CAAE,IAAY,EAAE,OAAY,EAAE;QAC3C,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACtC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;SAC5C;QAED,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAE/B,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAA;YAEnC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;gBAC1B,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;aACtC;YAED,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;SACzB;QAED,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAA;QAC7B,OAAO,GAAG,IAAI,iBAAiB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;QAE3E,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAE1B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;YAC1B,OAAO,OAAO,CAAA;SACf;IACH,CAAC;IAID,oBAAoB,CAAE,IAAY,EAAE,OAAY,EAAE;QAChD,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACtC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;SAClD;QAED,IAAI,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEpC,IAAI,YAAY,IAAI,IAAI,EAAE;YACxB,GAAG,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAA;YAEzC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;gBAC1B,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;aAC3C;YAED,OAAO,YAAY,CAAA;SACpB;QAED,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAA;QACnC,YAAY,GAAG,IAAI,sBAAsB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;QAErF,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;QAE/B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;YAC1B,OAAO,YAAY,CAAA;SACpB;IACH,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAAE,IAAqC;IACtE,OAAO,GAAG,EAAE;QACV,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC,CAAA;AACH,CAAC"}
@@ -1,6 +1,6 @@
1
- import type { CalculateMetric, MetricGroup, StopTimer } from '@libp2p/interface-metrics';
1
+ import { type CalculatedMetric } from './utils.js';
2
2
  import type { PrometheusCalculatedMetricOptions } from './index.js';
3
- import { CalculatedMetric } from './utils.js';
3
+ import type { CalculateMetric, MetricGroup, StopTimer } from '@libp2p/interface-metrics';
4
4
  export declare class PrometheusMetricGroup implements MetricGroup, CalculatedMetric<Record<string, number>> {
5
5
  private readonly gauge;
6
6
  private readonly label;
@@ -1 +1 @@
1
- {"version":3,"file":"metric-group.d.ts","sourceRoot":"","sources":["../../src/metric-group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAExF,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,EAAmB,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE9D,qBAAa,qBAAsB,YAAW,WAAW,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgD;gBAE/D,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAgC1F,aAAa,CAAE,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAIlE,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"}
1
+ {"version":3,"file":"metric-group.d.ts","sourceRoot":"","sources":["../../src/metric-group.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAExF,qBAAa,qBAAsB,YAAW,WAAW,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgD;gBAE/D,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAgC1F,aAAa,CAAE,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI;IAIzE,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"}
@@ -1,6 +1,9 @@
1
1
  import { Gauge } from 'prom-client';
2
2
  import { normaliseString } from './utils.js';
3
3
  export class PrometheusMetricGroup {
4
+ gauge;
5
+ label;
6
+ calculators;
4
7
  constructor(name, opts) {
5
8
  name = normaliseString(name);
6
9
  const help = normaliseString(opts.help ?? name);
@@ -1 +1 @@
1
- {"version":3,"file":"metric-group.js","sourceRoot":"","sources":["../../src/metric-group.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metric-group.js","sourceRoot":"","sources":["../../src/metric-group.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { Metric, StopTimer, CalculateMetric } from '@libp2p/interface-metrics';
2
1
  import type { PrometheusCalculatedMetricOptions } from './index.js';
2
+ import type { Metric, StopTimer, CalculateMetric } from '@libp2p/interface-metrics';
3
3
  export declare class PrometheusMetric implements Metric {
4
4
  private readonly gauge;
5
5
  private readonly calculators;
@@ -1 +1 @@
1
- {"version":3,"file":"metric.d.ts","sourceRoot":"","sources":["../../src/metric.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAEnF,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAA;AAGnE,qBAAa,gBAAiB,YAAW,MAAM;IAC7C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmB;gBAElC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC;IA6BlE,aAAa,CAAE,UAAU,EAAE,eAAe;IAI1C,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"}
1
+ {"version":3,"file":"metric.d.ts","sourceRoot":"","sources":["../../src/metric.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAEnF,qBAAa,gBAAiB,YAAW,MAAM;IAC7C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmB;gBAElC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC;IA6BlE,aAAa,CAAE,UAAU,EAAE,eAAe,GAAG,IAAI;IAIjD,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"}
@@ -1,6 +1,8 @@
1
1
  import { Gauge } from 'prom-client';
2
2
  import { normaliseString } from './utils.js';
3
3
  export class PrometheusMetric {
4
+ gauge;
5
+ calculators;
4
6
  constructor(name, opts) {
5
7
  name = normaliseString(name);
6
8
  const help = normaliseString(opts.help ?? name);
@@ -12,7 +14,7 @@ export class PrometheusMetric {
12
14
  this.calculators.push(opts.calculate);
13
15
  const self = this;
14
16
  collect = async function () {
15
- const values = await Promise.all(self.calculators.map(async (calculate) => await calculate()));
17
+ const values = await Promise.all(self.calculators.map(async (calculate) => calculate()));
16
18
  const sum = values.reduce((acc, curr) => acc + curr, 0);
17
19
  this.set(sum);
18
20
  };
@@ -1 +1 @@
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;IAI3B,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;QACpD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;QAErB,oBAAoB;QACpB,IAAI,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE;YAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACrC,MAAM,IAAI,GAAG,IAAI,CAAA;YAEjB,OAAO,GAAG,KAAK;gBACb,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAC,SAAS,EAAC,EAAE,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,CAAA;gBAC5F,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAA;gBAEvD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACf,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,aAAa,CAAE,UAA2B;QACxC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACnC,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"}
1
+ {"version":3,"file":"metric.js","sourceRoot":"","sources":["../../src/metric.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAI5C,MAAM,OAAO,gBAAgB;IACV,KAAK,CAAO;IACZ,WAAW,CAAmB;IAE/C,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;QACpD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;QAErB,oBAAoB;QACpB,IAAI,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE;YAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACrC,MAAM,IAAI,GAAG,IAAI,CAAA;YAEjB,OAAO,GAAG,KAAK;gBACb,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAC,SAAS,EAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;gBACtF,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAA;gBAEvD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACf,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,aAAa,CAAE,UAA2B;QACxC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACnC,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"}
@@ -0,0 +1,5 @@
1
+ {
2
+ "PrometheusCalculatedMetricOptions": "https://libp2p.github.io/js-libp2p-prometheus-metrics/interfaces/PrometheusCalculatedMetricOptions.html",
3
+ "PrometheusMetricsInit": "https://libp2p.github.io/js-libp2p-prometheus-metrics/interfaces/PrometheusMetricsInit.html",
4
+ "prometheusMetrics": "https://libp2p.github.io/js-libp2p-prometheus-metrics/functions/prometheusMetrics.html"
5
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/prometheus-metrics",
3
- "version": "1.1.2",
3
+ "version": "1.1.4",
4
4
  "description": "Collect libp2p metrics for scraping by Prometheus or Graphana",
5
5
  "author": "",
6
6
  "license": "Apache-2.0 OR MIT",
@@ -13,14 +13,14 @@
13
13
  "url": "https://github.com/libp2p/js-libp2p-prometheus-metrics/issues"
14
14
  },
15
15
  "engines": {
16
- "node": ">=16.0.0",
17
- "npm": ">=7.0.0"
16
+ "node": ">=18.0.0",
17
+ "npm": ">=8.6.0"
18
18
  },
19
19
  "type": "module",
20
20
  "types": "./dist/src/index.d.ts",
21
21
  "files": [
22
22
  "src",
23
- "dist/src",
23
+ "dist",
24
24
  "!dist/test",
25
25
  "!**/*.tsbuildinfo"
26
26
  ],
@@ -129,26 +129,25 @@
129
129
  "test": "aegir test -t node",
130
130
  "test:node": "aegir test -t node --cov",
131
131
  "test:electron-main": "aegir test -t electron-main --cov",
132
- "release": "aegir release"
132
+ "release": "aegir release",
133
+ "docs": "aegir docs"
133
134
  },
134
135
  "dependencies": {
135
- "@libp2p/interface-connection": "^3.0.2",
136
+ "@libp2p/interface-connection": "^5.0.2",
136
137
  "@libp2p/interface-metrics": "^4.0.2",
137
138
  "@libp2p/logger": "^2.0.2",
138
- "it-foreach": "^1.0.0",
139
- "it-stream-types": "^1.0.4"
139
+ "it-foreach": "^2.0.3",
140
+ "it-stream-types": "^2.0.1"
140
141
  },
141
142
  "devDependencies": {
142
- "@libp2p/interface-mocks": "^7.0.3",
143
- "@libp2p/peer-id-factory": "^1.0.19",
144
- "@multiformats/multiaddr": "^11.0.7",
145
- "aegir": "^37.5.6",
146
- "it-drain": "^2.0.0",
147
- "it-pair": "^2.0.3",
148
- "it-pipe": "^2.0.4",
143
+ "@libp2p/interface-mocks": "^12.0.1",
144
+ "@libp2p/peer-id-factory": "^2.0.3",
145
+ "@multiformats/multiaddr": "^12.1.3",
146
+ "aegir": "^39.0.6",
147
+ "it-drain": "^3.0.2",
148
+ "it-pipe": "^3.0.1",
149
149
  "p-defer": "^4.0.0",
150
- "prom-client": "^14.1.0",
151
- "uint8arraylist": "^2.3.3"
150
+ "prom-client": "^14.1.0"
152
151
  },
153
152
  "peerDependencies": {
154
153
  "prom-client": "^14.1.0"
@@ -1,7 +1,7 @@
1
- import type { CounterGroup, CalculateMetric } from '@libp2p/interface-metrics'
2
- import { Counter as PromCounter, CollectFunction } from 'prom-client'
3
- import { normaliseString, CalculatedMetric } from './utils.js'
1
+ import { Counter as PromCounter, type CollectFunction } from 'prom-client'
2
+ import { normaliseString, type CalculatedMetric } from './utils.js'
4
3
  import type { PrometheusCalculatedMetricOptions } from './index.js'
4
+ import type { CounterGroup, CalculateMetric } from '@libp2p/interface-metrics'
5
5
 
6
6
  export class PrometheusCounterGroup implements CounterGroup, CalculatedMetric<Record<string, number>> {
7
7
  private readonly counter: PromCounter
@@ -40,7 +40,7 @@ export class PrometheusCounterGroup implements CounterGroup, CalculatedMetric<Re
40
40
  })
41
41
  }
42
42
 
43
- addCalculator (calculator: CalculateMetric<Record<string, number>>) {
43
+ addCalculator (calculator: CalculateMetric<Record<string, number>>): void {
44
44
  this.calculators.push(calculator)
45
45
  }
46
46
 
package/src/counter.ts CHANGED
@@ -1,7 +1,7 @@
1
- import type { CalculateMetric, Counter } from '@libp2p/interface-metrics'
2
- import { CollectFunction, Counter as PromCounter } from 'prom-client'
1
+ import { type CollectFunction, Counter as PromCounter } from 'prom-client'
2
+ import { normaliseString, type CalculatedMetric } from './utils.js'
3
3
  import type { PrometheusCalculatedMetricOptions } from './index.js'
4
- import { normaliseString, CalculatedMetric } from './utils.js'
4
+ import type { CalculateMetric, Counter } from '@libp2p/interface-metrics'
5
5
 
6
6
  export class PrometheusCounter implements Counter, CalculatedMetric {
7
7
  private readonly counter: PromCounter
@@ -20,7 +20,7 @@ export class PrometheusCounter implements Counter, CalculatedMetric {
20
20
  const self = this
21
21
 
22
22
  collect = async function () {
23
- const values = await Promise.all(self.calculators.map(async calculate => await calculate()))
23
+ const values = await Promise.all(self.calculators.map(async calculate => calculate()))
24
24
  const sum = values.reduce((acc, curr) => acc + curr, 0)
25
25
 
26
26
  this.inc(sum)
@@ -36,7 +36,7 @@ export class PrometheusCounter implements Counter, CalculatedMetric {
36
36
  })
37
37
  }
38
38
 
39
- addCalculator (calculator: CalculateMetric) {
39
+ addCalculator (calculator: CalculateMetric): void {
40
40
  this.calculators.push(calculator)
41
41
  }
42
42
 
package/src/index.ts CHANGED
@@ -1,13 +1,109 @@
1
- import type { CalculatedMetricOptions, Counter, CounterGroup, Metric, MetricGroup, MetricOptions, Metrics } from '@libp2p/interface-metrics'
2
- import { collectDefaultMetrics, DefaultMetricsCollectorConfiguration, register, Registry } from 'prom-client'
3
- import type { MultiaddrConnection, Stream, Connection } from '@libp2p/interface-connection'
4
- import type { Duplex } from 'it-stream-types'
1
+ /**
2
+ * @packageDocumentation
3
+ *
4
+ * Collect libp2p metrics for scraping by Prometheus or Graphana.
5
+ * @module libp2p-prometheus-metrics
6
+ *
7
+ * A tracked metric can be created by calling either `registerMetric` on the metrics object
8
+ *
9
+ * @example
10
+ *
11
+ * ```typescript
12
+ * import { prometheusMetrics } from '@libp2p/prometheus-metrics'
13
+ *
14
+ * const metrics = prometheusMetrics()()
15
+ * const myMetric = metrics.registerMetric({
16
+ * name: 'my_metric',
17
+ * label: 'my_label',
18
+ * help: 'my help text'
19
+ * })
20
+ *
21
+ * myMetric.update(1)
22
+ * ```
23
+ * A metric that is expensive to calculate can be created by passing a `calculate` function that will only be invoked when metrics are being scraped:
24
+ *
25
+ * @example
26
+ *
27
+ * ```typescript
28
+ * import { prometheusMetrics } from '@libp2p/prometheus-metrics'
29
+ *
30
+ * const metrics = prometheusMetrics()()
31
+ * const myMetric = metrics.registerMetric({
32
+ * name: 'my_metric',
33
+ * label: 'my_label',
34
+ * help: 'my help text',
35
+ * calculate: async () => {
36
+ * // do something expensive
37
+ * return 1
38
+ * }
39
+ * })
40
+ * ```
41
+ *
42
+ * If several metrics should be grouped together (e.g. for graphing purposes) `registerMetricGroup` can be used instead:
43
+ *
44
+ * @example
45
+ *
46
+ * ```typescript
47
+ * import { prometheusMetrics } from '@libp2p/prometheus-metrics'
48
+ *
49
+ * const metrics = prometheusMetrics()()
50
+ * const myMetricGroup = metrics.registerMetricGroup({
51
+ * name: 'my_metric_group',
52
+ * label: 'my_label',
53
+ * help: 'my help text'
54
+ * })
55
+ *
56
+ * myMetricGroup.increment({ my_label: 'my_value' })
57
+ * ```
58
+ *
59
+ * There are specific metric groups for tracking libp2p connections and streams:
60
+ *
61
+ * Track a newly opened multiaddr connection:
62
+ * @example
63
+ *
64
+ * ```typescript
65
+ * import { prometheusMetrics } from '@libp2p/prometheus-metrics'
66
+ * import { createLibp2p } from 'libp2p'
67
+ *
68
+ *
69
+ * const metrics = prometheusMetrics()()
70
+ *
71
+ * const libp2p = await createLibp2p({
72
+ * metrics: metrics,
73
+ * })
74
+ * // set up a multiaddr connection
75
+ * const connection = await libp2p.dial('multiaddr')
76
+ * const connections = metrics.trackMultiaddrConnection(connection)
77
+ * ```
78
+ *
79
+ * Track a newly opened stream:
80
+ * @example
81
+ *
82
+ * ```typescript
83
+ * import { prometheusMetrics } from '@libp2p/prometheus-metrics'
84
+ * import { createLibp2p } from 'libp2p'
85
+ *
86
+ * const metrics = prometheusMetrics()()
87
+ *
88
+ * const libp2p = await createLibp2p({
89
+ * metrics: metrics,
90
+ * })
91
+ *
92
+ * const stream = await connection.newStream('/my/protocol')
93
+ * const streams = metrics.trackProtocolStream(stream)
94
+ * ```
95
+ */
96
+
97
+ import { logger } from '@libp2p/logger'
5
98
  import each from 'it-foreach'
6
- import { PrometheusMetric } from './metric.js'
7
- import { PrometheusMetricGroup } from './metric-group.js'
8
- import { PrometheusCounter } from './counter.js'
99
+ import { collectDefaultMetrics, type DefaultMetricsCollectorConfiguration, register, type Registry } from 'prom-client'
9
100
  import { PrometheusCounterGroup } from './counter-group.js'
10
- import { logger } from '@libp2p/logger'
101
+ import { PrometheusCounter } from './counter.js'
102
+ import { PrometheusMetricGroup } from './metric-group.js'
103
+ import { PrometheusMetric } from './metric.js'
104
+ import type { MultiaddrConnection, Stream, Connection } from '@libp2p/interface-connection'
105
+ import type { CalculatedMetricOptions, Counter, CounterGroup, Metric, MetricGroup, MetricOptions, Metrics } from '@libp2p/interface-metrics'
106
+ import type { Duplex, Source } from 'it-stream-types'
11
107
 
12
108
  const log = logger('libp2p:prometheus-metrics')
13
109
 
@@ -97,7 +193,7 @@ class PrometheusMetrics implements Metrics {
97
193
  * Increment the transfer stat for the passed key, making sure
98
194
  * it exists first
99
195
  */
100
- _incrementValue (key: string, value: number) {
196
+ _incrementValue (key: string, value: number): void {
101
197
  const existing = this.transferStats.get(key) ?? 0
102
198
 
103
199
  this.transferStats.set(key, existing + value)
@@ -107,7 +203,7 @@ class PrometheusMetrics implements Metrics {
107
203
  * Override the sink/source of the stream to count the bytes
108
204
  * in and out
109
205
  */
110
- _track (stream: Duplex<any>, name: string) {
206
+ _track (stream: Duplex<Source<any>>, name: string): void {
111
207
  const self = this
112
208
 
113
209
  const sink = stream.sink
@@ -1,7 +1,7 @@
1
- import type { CalculateMetric, MetricGroup, StopTimer } from '@libp2p/interface-metrics'
2
- import { CollectFunction, Gauge } from 'prom-client'
1
+ import { type CollectFunction, Gauge } from 'prom-client'
2
+ import { normaliseString, type CalculatedMetric } from './utils.js'
3
3
  import type { PrometheusCalculatedMetricOptions } from './index.js'
4
- import { normaliseString, CalculatedMetric } from './utils.js'
4
+ import type { CalculateMetric, MetricGroup, StopTimer } from '@libp2p/interface-metrics'
5
5
 
6
6
  export class PrometheusMetricGroup implements MetricGroup, CalculatedMetric<Record<string, number>> {
7
7
  private readonly gauge: Gauge
@@ -40,7 +40,7 @@ export class PrometheusMetricGroup implements MetricGroup, CalculatedMetric<Reco
40
40
  })
41
41
  }
42
42
 
43
- addCalculator (calculator: CalculateMetric<Record<string, number>>) {
43
+ addCalculator (calculator: CalculateMetric<Record<string, number>>): void {
44
44
  this.calculators.push(calculator)
45
45
  }
46
46
 
package/src/metric.ts CHANGED
@@ -1,7 +1,7 @@
1
- import type { Metric, StopTimer, CalculateMetric } from '@libp2p/interface-metrics'
2
- import { CollectFunction, Gauge } from 'prom-client'
3
- import type { PrometheusCalculatedMetricOptions } from './index.js'
1
+ import { type CollectFunction, Gauge } from 'prom-client'
4
2
  import { normaliseString } from './utils.js'
3
+ import type { PrometheusCalculatedMetricOptions } from './index.js'
4
+ import type { Metric, StopTimer, CalculateMetric } from '@libp2p/interface-metrics'
5
5
 
6
6
  export class PrometheusMetric implements Metric {
7
7
  private readonly gauge: Gauge
@@ -20,7 +20,7 @@ export class PrometheusMetric implements Metric {
20
20
  const self = this
21
21
 
22
22
  collect = async function () {
23
- const values = await Promise.all(self.calculators.map(async calculate => await calculate()))
23
+ const values = await Promise.all(self.calculators.map(async calculate => calculate()))
24
24
  const sum = values.reduce((acc, curr) => acc + curr, 0)
25
25
 
26
26
  this.set(sum)
@@ -36,7 +36,7 @@ export class PrometheusMetric implements Metric {
36
36
  })
37
37
  }
38
38
 
39
- addCalculator (calculator: CalculateMetric) {
39
+ addCalculator (calculator: CalculateMetric): void {
40
40
  this.calculators.push(calculator)
41
41
  }
42
42