Skip to content

Commit fa83ee1

Browse files
authored
feat: add inbound rpc request metrics (#2721)
Adds a `libp2p_kad_dht_inbound_rpc_requests` counter group that has labels for success/error outcomes of each RPC call type.
1 parent 60f6aa9 commit fa83ee1

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

packages/kad-dht/src/rpc/index.ts

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import type { PeerInfoMapper, Validators } from '../index.js'
1111
import type { PeerRouting } from '../peer-routing'
1212
import type { Providers } from '../providers'
1313
import type { RoutingTable } from '../routing-table'
14-
import type { Logger, PeerId } from '@libp2p/interface'
14+
import type { CounterGroup, Logger, Metrics, PeerId } from '@libp2p/interface'
1515
import type { IncomingStreamData } from '@libp2p/interface-internal'
1616

1717
export interface DHTMessageHandler {
@@ -28,16 +28,18 @@ export interface RPCInit {
2828
}
2929

3030
export interface RPCComponents extends GetValueHandlerComponents, PutValueHandlerComponents, FindNodeHandlerComponents, GetProvidersHandlerComponents {
31-
31+
metrics?: Metrics
3232
}
3333

3434
export class RPC {
3535
private readonly handlers: Record<string, DHTMessageHandler>
3636
private readonly routingTable: RoutingTable
3737
private readonly log: Logger
38+
private readonly metrics?: CounterGroup
3839

3940
constructor (components: RPCComponents, init: RPCInit) {
4041
const { providers, peerRouting, validators, logPrefix, peerInfoMapper } = init
42+
this.metrics = components.metrics?.registerCounterGroup(`${logPrefix.replaceAll(':', '_')}_inbound_rpc_requests`)
4143

4244
this.log = components.logger.forComponent(`${logPrefix}:rpc`)
4345
this.routingTable = init.routingTable
@@ -69,7 +71,19 @@ export class RPC {
6971
return
7072
}
7173

72-
return handler.handle(peerId, msg)
74+
try {
75+
const value = await handler.handle(peerId, msg)
76+
77+
this.metrics?.increment({
78+
[`${msg.type}_SUCCESS`]: true
79+
})
80+
81+
return value
82+
} catch {
83+
this.metrics?.increment({
84+
[`${msg.type}_ERROR`]: true
85+
})
86+
}
7387
}
7488

7589
/**

0 commit comments

Comments
 (0)