@libp2p/prometheus-metrics 1.1.3 → 1.1.5

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.
@@ -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":"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"}
@@ -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":"AAAA,OAAO,EAAwB,KAAK,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,eAAe,EAAyB,MAAM,YAAY,CAAA;AAInE,MAAM,OAAO,qBAAqB;IACf,KAAK,CAAO;IACZ,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,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,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,KAAK,GAAG,IAAI,KAAK,CAAC;YACrB,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,MAAM,CAAE,MAA8B;QACpC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;QAC9C,CAAC,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,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAA;QAC5C,CAAC,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,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAA;QAC5C,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IAED,KAAK,CAAE,GAAW;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YAC3B,GAAG,EAAE,CAAC;SACP,CAAC,CAAA;IACJ,CAAC;CACF"}
@@ -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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/prometheus-metrics",
3
- "version": "1.1.3",
3
+ "version": "1.1.5",
4
4
  "description": "Collect libp2p metrics for scraping by Prometheus or Graphana",
5
5
  "author": "",
6
6
  "license": "Apache-2.0 OR MIT",
@@ -13,8 +13,8 @@
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",
@@ -133,25 +133,20 @@
133
133
  "docs": "aegir docs"
134
134
  },
135
135
  "dependencies": {
136
- "@libp2p/interface-connection": "^3.0.2",
136
+ "@libp2p/interface-connection": "^5.0.2",
137
137
  "@libp2p/interface-metrics": "^4.0.2",
138
138
  "@libp2p/logger": "^2.0.2",
139
- "it-foreach": "^1.0.0",
140
- "it-stream-types": "^1.0.4"
139
+ "it-foreach": "^2.0.3",
140
+ "it-stream-types": "^2.0.1",
141
+ "prom-client": "^14.1.0"
141
142
  },
142
143
  "devDependencies": {
143
- "@libp2p/interface-mocks": "^8.0.4",
144
- "@libp2p/peer-id-factory": "^1.0.19",
145
- "@multiformats/multiaddr": "^11.0.7",
146
- "aegir": "^37.5.6",
147
- "it-drain": "^2.0.0",
148
- "it-pair": "^2.0.3",
149
- "it-pipe": "^2.0.4",
150
- "p-defer": "^4.0.0",
151
- "prom-client": "^14.1.0",
152
- "uint8arraylist": "^2.3.3"
153
- },
154
- "peerDependencies": {
155
- "prom-client": "^14.1.0"
144
+ "@libp2p/interface-mocks": "^12.0.1",
145
+ "@libp2p/peer-id-factory": "^2.0.3",
146
+ "@multiformats/multiaddr": "^12.1.3",
147
+ "aegir": "^39.0.6",
148
+ "it-drain": "^3.0.2",
149
+ "it-pipe": "^3.0.1",
150
+ "p-defer": "^4.0.0"
156
151
  }
157
152
  }
@@ -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