@libp2p/prometheus-metrics 3.0.13 → 3.0.14
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 +2 -91
- package/dist/src/index.d.ts +2 -91
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -91
- package/dist/src/index.js.map +1 -1
- package/package.json +10 -10
- package/src/index.ts +2 -91
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
Configure your libp2p node with Prometheus metrics:
|
|
11
11
|
|
|
12
|
-
```
|
|
12
|
+
```typescript
|
|
13
13
|
import { createLibp2p } from 'libp2p'
|
|
14
14
|
import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
15
15
|
|
|
@@ -20,7 +20,7 @@ const node = await createLibp2p({
|
|
|
20
20
|
|
|
21
21
|
Then use the `prom-client` module to supply metrics to the Prometheus/Graphana client using your http framework:
|
|
22
22
|
|
|
23
|
-
```
|
|
23
|
+
```typescript
|
|
24
24
|
import client from 'prom-client'
|
|
25
25
|
|
|
26
26
|
async handler (request, h) {
|
|
@@ -71,95 +71,6 @@ libp2p_kad_dht_lan_query_time_seconds
|
|
|
71
71
|
rate(libp2p_tcp_dialer_errors_total[30s])
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
-
## Example
|
|
75
|
-
|
|
76
|
-
```typescript
|
|
77
|
-
import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
78
|
-
|
|
79
|
-
const metrics = prometheusMetrics()()
|
|
80
|
-
const myMetric = metrics.registerMetric({
|
|
81
|
-
name: 'my_metric',
|
|
82
|
-
label: 'my_label',
|
|
83
|
-
help: 'my help text'
|
|
84
|
-
})
|
|
85
|
-
|
|
86
|
-
myMetric.update(1)
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## Example
|
|
90
|
-
|
|
91
|
-
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:
|
|
92
|
-
|
|
93
|
-
```typescript
|
|
94
|
-
import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
95
|
-
|
|
96
|
-
const metrics = prometheusMetrics()()
|
|
97
|
-
const myMetric = metrics.registerMetric({
|
|
98
|
-
name: 'my_metric',
|
|
99
|
-
label: 'my_label',
|
|
100
|
-
help: 'my help text',
|
|
101
|
-
calculate: async () => {
|
|
102
|
-
// do something expensive
|
|
103
|
-
return 1
|
|
104
|
-
}
|
|
105
|
-
})
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
## Example
|
|
109
|
-
|
|
110
|
-
If several metrics should be grouped together (e.g. for graphing purposes) `registerMetricGroup` can be used instead:
|
|
111
|
-
|
|
112
|
-
```typescript
|
|
113
|
-
import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
114
|
-
|
|
115
|
-
const metrics = prometheusMetrics()()
|
|
116
|
-
const myMetricGroup = metrics.registerMetricGroup({
|
|
117
|
-
name: 'my_metric_group',
|
|
118
|
-
label: 'my_label',
|
|
119
|
-
help: 'my help text'
|
|
120
|
-
})
|
|
121
|
-
|
|
122
|
-
myMetricGroup.increment({ my_label: 'my_value' })
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
There are specific metric groups for tracking libp2p connections and streams:
|
|
126
|
-
|
|
127
|
-
## Example
|
|
128
|
-
|
|
129
|
-
Track a newly opened multiaddr connection:
|
|
130
|
-
|
|
131
|
-
```typescript
|
|
132
|
-
import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
133
|
-
import { createLibp2p } from 'libp2p'
|
|
134
|
-
|
|
135
|
-
const metrics = prometheusMetrics()()
|
|
136
|
-
|
|
137
|
-
const libp2p = await createLibp2p({
|
|
138
|
-
metrics: metrics,
|
|
139
|
-
})
|
|
140
|
-
// set up a multiaddr connection
|
|
141
|
-
const connection = await libp2p.dial('multiaddr')
|
|
142
|
-
const connections = metrics.trackMultiaddrConnection(connection)
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
## Example
|
|
146
|
-
|
|
147
|
-
Track a newly opened stream:
|
|
148
|
-
|
|
149
|
-
```typescript
|
|
150
|
-
import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
151
|
-
import { createLibp2p } from 'libp2p'
|
|
152
|
-
|
|
153
|
-
const metrics = prometheusMetrics()()
|
|
154
|
-
|
|
155
|
-
const libp2p = await createLibp2p({
|
|
156
|
-
metrics: metrics,
|
|
157
|
-
})
|
|
158
|
-
|
|
159
|
-
const stream = await connection.newStream('/my/protocol')
|
|
160
|
-
const streams = metrics.trackProtocolStream(stream)
|
|
161
|
-
```
|
|
162
|
-
|
|
163
74
|
# Install
|
|
164
75
|
|
|
165
76
|
```console
|
package/dist/src/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Configure your libp2p node with Prometheus metrics:
|
|
5
5
|
*
|
|
6
|
-
* ```
|
|
6
|
+
* ```typescript
|
|
7
7
|
* import { createLibp2p } from 'libp2p'
|
|
8
8
|
* import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
9
9
|
*
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
*
|
|
15
15
|
* Then use the `prom-client` module to supply metrics to the Prometheus/Graphana client using your http framework:
|
|
16
16
|
*
|
|
17
|
-
* ```
|
|
17
|
+
* ```typescript
|
|
18
18
|
* import client from 'prom-client'
|
|
19
19
|
*
|
|
20
20
|
* async handler (request, h) {
|
|
@@ -64,95 +64,6 @@
|
|
|
64
64
|
* ```
|
|
65
65
|
* rate(libp2p_tcp_dialer_errors_total[30s])
|
|
66
66
|
* ```
|
|
67
|
-
*
|
|
68
|
-
* @example
|
|
69
|
-
*
|
|
70
|
-
* ```typescript
|
|
71
|
-
* import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
72
|
-
*
|
|
73
|
-
* const metrics = prometheusMetrics()()
|
|
74
|
-
* const myMetric = metrics.registerMetric({
|
|
75
|
-
* name: 'my_metric',
|
|
76
|
-
* label: 'my_label',
|
|
77
|
-
* help: 'my help text'
|
|
78
|
-
* })
|
|
79
|
-
*
|
|
80
|
-
* myMetric.update(1)
|
|
81
|
-
* ```
|
|
82
|
-
*
|
|
83
|
-
* @example
|
|
84
|
-
*
|
|
85
|
-
* 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:
|
|
86
|
-
*
|
|
87
|
-
* ```typescript
|
|
88
|
-
* import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
89
|
-
*
|
|
90
|
-
* const metrics = prometheusMetrics()()
|
|
91
|
-
* const myMetric = metrics.registerMetric({
|
|
92
|
-
* name: 'my_metric',
|
|
93
|
-
* label: 'my_label',
|
|
94
|
-
* help: 'my help text',
|
|
95
|
-
* calculate: async () => {
|
|
96
|
-
* // do something expensive
|
|
97
|
-
* return 1
|
|
98
|
-
* }
|
|
99
|
-
* })
|
|
100
|
-
* ```
|
|
101
|
-
*
|
|
102
|
-
* @example
|
|
103
|
-
*
|
|
104
|
-
* If several metrics should be grouped together (e.g. for graphing purposes) `registerMetricGroup` can be used instead:
|
|
105
|
-
*
|
|
106
|
-
* ```typescript
|
|
107
|
-
* import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
108
|
-
*
|
|
109
|
-
* const metrics = prometheusMetrics()()
|
|
110
|
-
* const myMetricGroup = metrics.registerMetricGroup({
|
|
111
|
-
* name: 'my_metric_group',
|
|
112
|
-
* label: 'my_label',
|
|
113
|
-
* help: 'my help text'
|
|
114
|
-
* })
|
|
115
|
-
*
|
|
116
|
-
* myMetricGroup.increment({ my_label: 'my_value' })
|
|
117
|
-
* ```
|
|
118
|
-
*
|
|
119
|
-
* There are specific metric groups for tracking libp2p connections and streams:
|
|
120
|
-
*
|
|
121
|
-
* @example
|
|
122
|
-
*
|
|
123
|
-
* Track a newly opened multiaddr connection:
|
|
124
|
-
*
|
|
125
|
-
* ```typescript
|
|
126
|
-
* import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
127
|
-
* import { createLibp2p } from 'libp2p'
|
|
128
|
-
*
|
|
129
|
-
* const metrics = prometheusMetrics()()
|
|
130
|
-
*
|
|
131
|
-
* const libp2p = await createLibp2p({
|
|
132
|
-
* metrics: metrics,
|
|
133
|
-
* })
|
|
134
|
-
* // set up a multiaddr connection
|
|
135
|
-
* const connection = await libp2p.dial('multiaddr')
|
|
136
|
-
* const connections = metrics.trackMultiaddrConnection(connection)
|
|
137
|
-
* ```
|
|
138
|
-
*
|
|
139
|
-
* @example
|
|
140
|
-
*
|
|
141
|
-
* Track a newly opened stream:
|
|
142
|
-
*
|
|
143
|
-
* ```typescript
|
|
144
|
-
* import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
145
|
-
* import { createLibp2p } from 'libp2p'
|
|
146
|
-
*
|
|
147
|
-
* const metrics = prometheusMetrics()()
|
|
148
|
-
*
|
|
149
|
-
* const libp2p = await createLibp2p({
|
|
150
|
-
* metrics: metrics,
|
|
151
|
-
* })
|
|
152
|
-
*
|
|
153
|
-
* const stream = await connection.newStream('/my/protocol')
|
|
154
|
-
* const streams = metrics.trackProtocolStream(stream)
|
|
155
|
-
* ```
|
|
156
67
|
*/
|
|
157
68
|
import { type DefaultMetricsCollectorConfiguration, type Registry, type RegistryContentType } from 'prom-client';
|
|
158
69
|
import type { ComponentLogger, CalculatedMetricOptions, Metrics } from '@libp2p/interface';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AAGH,OAAO,EAAyB,KAAK,oCAAoC,EAAY,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAKjJ,OAAO,KAAK,EAAE,eAAe,EAAmD,uBAAuB,EAA6D,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAOtM,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,CAAC,mBAAmB,CAAC,CAAA;IAE1E;;;;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;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,eAAe,CAAA;CACxB;AAsND,wBAAgB,iBAAiB,CAAE,IAAI,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,CAAC,UAAU,EAAE,2BAA2B,KAAK,OAAO,CAI9H"}
|
package/dist/src/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Configure your libp2p node with Prometheus metrics:
|
|
5
5
|
*
|
|
6
|
-
* ```
|
|
6
|
+
* ```typescript
|
|
7
7
|
* import { createLibp2p } from 'libp2p'
|
|
8
8
|
* import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
9
9
|
*
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
*
|
|
15
15
|
* Then use the `prom-client` module to supply metrics to the Prometheus/Graphana client using your http framework:
|
|
16
16
|
*
|
|
17
|
-
* ```
|
|
17
|
+
* ```typescript
|
|
18
18
|
* import client from 'prom-client'
|
|
19
19
|
*
|
|
20
20
|
* async handler (request, h) {
|
|
@@ -64,95 +64,6 @@
|
|
|
64
64
|
* ```
|
|
65
65
|
* rate(libp2p_tcp_dialer_errors_total[30s])
|
|
66
66
|
* ```
|
|
67
|
-
*
|
|
68
|
-
* @example
|
|
69
|
-
*
|
|
70
|
-
* ```typescript
|
|
71
|
-
* import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
72
|
-
*
|
|
73
|
-
* const metrics = prometheusMetrics()()
|
|
74
|
-
* const myMetric = metrics.registerMetric({
|
|
75
|
-
* name: 'my_metric',
|
|
76
|
-
* label: 'my_label',
|
|
77
|
-
* help: 'my help text'
|
|
78
|
-
* })
|
|
79
|
-
*
|
|
80
|
-
* myMetric.update(1)
|
|
81
|
-
* ```
|
|
82
|
-
*
|
|
83
|
-
* @example
|
|
84
|
-
*
|
|
85
|
-
* 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:
|
|
86
|
-
*
|
|
87
|
-
* ```typescript
|
|
88
|
-
* import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
89
|
-
*
|
|
90
|
-
* const metrics = prometheusMetrics()()
|
|
91
|
-
* const myMetric = metrics.registerMetric({
|
|
92
|
-
* name: 'my_metric',
|
|
93
|
-
* label: 'my_label',
|
|
94
|
-
* help: 'my help text',
|
|
95
|
-
* calculate: async () => {
|
|
96
|
-
* // do something expensive
|
|
97
|
-
* return 1
|
|
98
|
-
* }
|
|
99
|
-
* })
|
|
100
|
-
* ```
|
|
101
|
-
*
|
|
102
|
-
* @example
|
|
103
|
-
*
|
|
104
|
-
* If several metrics should be grouped together (e.g. for graphing purposes) `registerMetricGroup` can be used instead:
|
|
105
|
-
*
|
|
106
|
-
* ```typescript
|
|
107
|
-
* import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
108
|
-
*
|
|
109
|
-
* const metrics = prometheusMetrics()()
|
|
110
|
-
* const myMetricGroup = metrics.registerMetricGroup({
|
|
111
|
-
* name: 'my_metric_group',
|
|
112
|
-
* label: 'my_label',
|
|
113
|
-
* help: 'my help text'
|
|
114
|
-
* })
|
|
115
|
-
*
|
|
116
|
-
* myMetricGroup.increment({ my_label: 'my_value' })
|
|
117
|
-
* ```
|
|
118
|
-
*
|
|
119
|
-
* There are specific metric groups for tracking libp2p connections and streams:
|
|
120
|
-
*
|
|
121
|
-
* @example
|
|
122
|
-
*
|
|
123
|
-
* Track a newly opened multiaddr connection:
|
|
124
|
-
*
|
|
125
|
-
* ```typescript
|
|
126
|
-
* import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
127
|
-
* import { createLibp2p } from 'libp2p'
|
|
128
|
-
*
|
|
129
|
-
* const metrics = prometheusMetrics()()
|
|
130
|
-
*
|
|
131
|
-
* const libp2p = await createLibp2p({
|
|
132
|
-
* metrics: metrics,
|
|
133
|
-
* })
|
|
134
|
-
* // set up a multiaddr connection
|
|
135
|
-
* const connection = await libp2p.dial('multiaddr')
|
|
136
|
-
* const connections = metrics.trackMultiaddrConnection(connection)
|
|
137
|
-
* ```
|
|
138
|
-
*
|
|
139
|
-
* @example
|
|
140
|
-
*
|
|
141
|
-
* Track a newly opened stream:
|
|
142
|
-
*
|
|
143
|
-
* ```typescript
|
|
144
|
-
* import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
145
|
-
* import { createLibp2p } from 'libp2p'
|
|
146
|
-
*
|
|
147
|
-
* const metrics = prometheusMetrics()()
|
|
148
|
-
*
|
|
149
|
-
* const libp2p = await createLibp2p({
|
|
150
|
-
* metrics: metrics,
|
|
151
|
-
* })
|
|
152
|
-
*
|
|
153
|
-
* const stream = await connection.newStream('/my/protocol')
|
|
154
|
-
* const streams = metrics.trackProtocolStream(stream)
|
|
155
|
-
* ```
|
|
156
67
|
*/
|
|
157
68
|
import each from 'it-foreach';
|
|
158
69
|
import { collectDefaultMetrics, register } from 'prom-client';
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AAEH,OAAO,IAAI,MAAM,YAAY,CAAA;AAC7B,OAAO,EAAE,qBAAqB,EAA6C,QAAQ,EAA2C,MAAM,aAAa,CAAA;AACjJ,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,iCAAiC;AACjC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAe,CAAA;AAoCtC,MAAM,iBAAiB;IACJ,GAAG,CAAQ;IACpB,aAAa,CAAqB;IACzB,QAAQ,CAAW;IAEpC,YAAa,UAAuC,EAAE,IAAqC;QACzF,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,2BAA2B,CAAC,CAAA;QACtE,IAAI,CAAC,QAAQ,GAAG,IAAI,EAAE,QAAQ,CAAA;QAE9B,IAAI,IAAI,EAAE,uBAAuB,KAAK,IAAI,EAAE,CAAC;YAC3C,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;YACrC,OAAO,CAAC,KAAK,EAAE,CACd;YAAA,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAA;QACtC,CAAC;QAED,IAAI,IAAI,EAAE,qBAAqB,KAAK,KAAK,EAAE,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;YACtC,qBAAqB,CAAC,EAAE,GAAG,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC/G,CAAC;QAED,oDAAoD;QACpD,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAA;QAE9B,IAAI,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAA;QAC5C,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,CAAC;oBACxD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;gBACrB,CAAC;gBAED,6BAA6B;gBAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAA;gBAE9B,OAAO,MAAM,CAAA;YACf,CAAC;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;QACrC,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,MAA2D,EAAE,IAAY;QAC/E,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,QAAQ,IAAI,IAAI,EAAE,CAAC;YAC5B,iEAAiE;YACjE,gDAAgD;YAChD,OAAM;QACR,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IAID,cAAc,CAAE,IAAY,EAAE,OAAY,EAAE;QAC1C,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;QAC5C,CAAC;QAED,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAE9B,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAA;YAEvC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;gBAC3B,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACtC,CAAC;YAED,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC1B,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAA;QACjC,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,CAAC;YAC3B,OAAO,MAAM,CAAA;QACf,CAAC;IACH,CAAC;IAID,mBAAmB,CAAE,IAAY,EAAE,OAAY,EAAE;QAC/C,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;QAClD,CAAC;QAED,IAAI,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEnC,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAA;YAE7C,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;gBAC3B,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC3C,CAAC;YAED,OAAO,WAAW,CAAA;QACpB,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAA;QACvC,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,CAAC;YAC3B,OAAO,WAAW,CAAA;QACpB,CAAC;IACH,CAAC;IAID,eAAe,CAAE,IAAY,EAAE,OAAY,EAAE;QAC3C,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC7C,CAAC;QAED,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAE/B,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAA;YAExC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;gBAC3B,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACvC,CAAC;YAED,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC1B,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAA;QAClC,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,CAAC;YAC3B,OAAO,OAAO,CAAA;QAChB,CAAC;IACH,CAAC;IAID,oBAAoB,CAAE,IAAY,EAAE,OAAY,EAAE;QAChD,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QACnD,CAAC;QAED,IAAI,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEpC,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAA;YAE9C,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;gBAC3B,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC5C,CAAC;YAED,OAAO,YAAY,CAAA;QACrB,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAA;QACxC,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,CAAC;YAC3B,OAAO,YAAY,CAAA;QACrB,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAAE,IAAqC;IACtE,OAAO,CAAC,UAAU,EAAE,EAAE;QACpB,OAAO,IAAI,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAChD,CAAC,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/prometheus-metrics",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.14",
|
|
4
4
|
"description": "Collect libp2p metrics for scraping by Prometheus or Graphana",
|
|
5
5
|
"author": "",
|
|
6
6
|
"license": "Apache-2.0 OR MIT",
|
|
@@ -47,18 +47,18 @@
|
|
|
47
47
|
"test:electron-main": "aegir test -t electron-main --cov"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@libp2p/interface": "^1.1.
|
|
51
|
-
"it-foreach": "^2.0.
|
|
50
|
+
"@libp2p/interface": "^1.1.3",
|
|
51
|
+
"it-foreach": "^2.0.6",
|
|
52
52
|
"it-stream-types": "^2.0.1",
|
|
53
|
-
"prom-client": "^15.
|
|
54
|
-
"uint8arraylist": "^2.4.
|
|
53
|
+
"prom-client": "^15.1.0",
|
|
54
|
+
"uint8arraylist": "^2.4.8"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
|
-
"@libp2p/interface-compliance-tests": "^5.
|
|
58
|
-
"@libp2p/logger": "^4.0.
|
|
59
|
-
"@libp2p/peer-id-factory": "^4.0.
|
|
60
|
-
"@multiformats/multiaddr": "^12.1.
|
|
61
|
-
"aegir": "^42.
|
|
57
|
+
"@libp2p/interface-compliance-tests": "^5.3.0",
|
|
58
|
+
"@libp2p/logger": "^4.0.6",
|
|
59
|
+
"@libp2p/peer-id-factory": "^4.0.6",
|
|
60
|
+
"@multiformats/multiaddr": "^12.1.14",
|
|
61
|
+
"aegir": "^42.2.3",
|
|
62
62
|
"it-drain": "^3.0.5",
|
|
63
63
|
"it-pipe": "^3.0.1",
|
|
64
64
|
"p-defer": "^4.0.0"
|
package/src/index.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Configure your libp2p node with Prometheus metrics:
|
|
5
5
|
*
|
|
6
|
-
* ```
|
|
6
|
+
* ```typescript
|
|
7
7
|
* import { createLibp2p } from 'libp2p'
|
|
8
8
|
* import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
9
9
|
*
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
*
|
|
15
15
|
* Then use the `prom-client` module to supply metrics to the Prometheus/Graphana client using your http framework:
|
|
16
16
|
*
|
|
17
|
-
* ```
|
|
17
|
+
* ```typescript
|
|
18
18
|
* import client from 'prom-client'
|
|
19
19
|
*
|
|
20
20
|
* async handler (request, h) {
|
|
@@ -64,95 +64,6 @@
|
|
|
64
64
|
* ```
|
|
65
65
|
* rate(libp2p_tcp_dialer_errors_total[30s])
|
|
66
66
|
* ```
|
|
67
|
-
*
|
|
68
|
-
* @example
|
|
69
|
-
*
|
|
70
|
-
* ```typescript
|
|
71
|
-
* import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
72
|
-
*
|
|
73
|
-
* const metrics = prometheusMetrics()()
|
|
74
|
-
* const myMetric = metrics.registerMetric({
|
|
75
|
-
* name: 'my_metric',
|
|
76
|
-
* label: 'my_label',
|
|
77
|
-
* help: 'my help text'
|
|
78
|
-
* })
|
|
79
|
-
*
|
|
80
|
-
* myMetric.update(1)
|
|
81
|
-
* ```
|
|
82
|
-
*
|
|
83
|
-
* @example
|
|
84
|
-
*
|
|
85
|
-
* 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:
|
|
86
|
-
*
|
|
87
|
-
* ```typescript
|
|
88
|
-
* import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
89
|
-
*
|
|
90
|
-
* const metrics = prometheusMetrics()()
|
|
91
|
-
* const myMetric = metrics.registerMetric({
|
|
92
|
-
* name: 'my_metric',
|
|
93
|
-
* label: 'my_label',
|
|
94
|
-
* help: 'my help text',
|
|
95
|
-
* calculate: async () => {
|
|
96
|
-
* // do something expensive
|
|
97
|
-
* return 1
|
|
98
|
-
* }
|
|
99
|
-
* })
|
|
100
|
-
* ```
|
|
101
|
-
*
|
|
102
|
-
* @example
|
|
103
|
-
*
|
|
104
|
-
* If several metrics should be grouped together (e.g. for graphing purposes) `registerMetricGroup` can be used instead:
|
|
105
|
-
*
|
|
106
|
-
* ```typescript
|
|
107
|
-
* import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
108
|
-
*
|
|
109
|
-
* const metrics = prometheusMetrics()()
|
|
110
|
-
* const myMetricGroup = metrics.registerMetricGroup({
|
|
111
|
-
* name: 'my_metric_group',
|
|
112
|
-
* label: 'my_label',
|
|
113
|
-
* help: 'my help text'
|
|
114
|
-
* })
|
|
115
|
-
*
|
|
116
|
-
* myMetricGroup.increment({ my_label: 'my_value' })
|
|
117
|
-
* ```
|
|
118
|
-
*
|
|
119
|
-
* There are specific metric groups for tracking libp2p connections and streams:
|
|
120
|
-
*
|
|
121
|
-
* @example
|
|
122
|
-
*
|
|
123
|
-
* Track a newly opened multiaddr connection:
|
|
124
|
-
*
|
|
125
|
-
* ```typescript
|
|
126
|
-
* import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
127
|
-
* import { createLibp2p } from 'libp2p'
|
|
128
|
-
*
|
|
129
|
-
* const metrics = prometheusMetrics()()
|
|
130
|
-
*
|
|
131
|
-
* const libp2p = await createLibp2p({
|
|
132
|
-
* metrics: metrics,
|
|
133
|
-
* })
|
|
134
|
-
* // set up a multiaddr connection
|
|
135
|
-
* const connection = await libp2p.dial('multiaddr')
|
|
136
|
-
* const connections = metrics.trackMultiaddrConnection(connection)
|
|
137
|
-
* ```
|
|
138
|
-
*
|
|
139
|
-
* @example
|
|
140
|
-
*
|
|
141
|
-
* Track a newly opened stream:
|
|
142
|
-
*
|
|
143
|
-
* ```typescript
|
|
144
|
-
* import { prometheusMetrics } from '@libp2p/prometheus-metrics'
|
|
145
|
-
* import { createLibp2p } from 'libp2p'
|
|
146
|
-
*
|
|
147
|
-
* const metrics = prometheusMetrics()()
|
|
148
|
-
*
|
|
149
|
-
* const libp2p = await createLibp2p({
|
|
150
|
-
* metrics: metrics,
|
|
151
|
-
* })
|
|
152
|
-
*
|
|
153
|
-
* const stream = await connection.newStream('/my/protocol')
|
|
154
|
-
* const streams = metrics.trackProtocolStream(stream)
|
|
155
|
-
* ```
|
|
156
67
|
*/
|
|
157
68
|
|
|
158
69
|
import each from 'it-foreach'
|