Skip to content

Commit ba52cf6

Browse files
committed
metric: measure uTP packets and talkReq
1 parent 5a4f3a5 commit ba52cf6

File tree

4 files changed

+31
-12
lines changed

4 files changed

+31
-12
lines changed

packages/portalnetwork/src/client/client.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -400,23 +400,30 @@ export class PortalNetwork extends (EventEmitter as { new (): PortalNetworkEvent
400400

401401
private onTalkReq = async (src: INodeAddress, sourceId: ENR | null, message: ITalkReqMessage) => {
402402
this.metrics?.totalBytesReceived.inc(message.request.length)
403+
const network = this.networks.get(bytesToHex(message.protocol) as NetworkId)
404+
403405
if (bytesToHex(message.protocol) === NetworkId.UTPNetwork) {
404406
await this.handleUTP(src, src.nodeId, message, message.request)
405407
return
406408
}
407-
const network = this.networks.get(bytesToHex(message.protocol) as NetworkId)
408409
if (!network) {
409410
this.logger(`Received TALKREQ message on unsupported network ${bytesToHex(message.protocol)}`)
410411
await this.sendPortalNetworkResponse(src, message.id, new Uint8Array())
411-
412412
return
413413
}
414414

415+
if (this.metrics) {
416+
const metric = (NetworkNames[bytesToHex(message.protocol) as NetworkId] +
417+
'_talkReqReceived') as keyof PortalNetworkMetrics
418+
this.metrics[metric].inc()
419+
}
415420
await network.handle(message, src)
416421
}
417422

418423
private onTalkResp = (src: INodeAddress, sourceId: ENR | null, message: ITalkRespMessage) => {
419-
this.metrics?.totalBytesReceived.inc(message.response.length)
424+
if (this.metrics) {
425+
this.metrics?.totalBytesReceived.inc(message.response.length)
426+
}
420427
}
421428

422429
/**

packages/portalnetwork/src/networks/network.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -116,17 +116,13 @@ export abstract class BaseNetwork extends EventEmitter {
116116
utpMessage?: boolean,
117117
): Promise<Uint8Array> {
118118
if (this.portal.metrics) {
119-
const metric = (this.networkName + '_talkRequestsSent') as keyof PortalNetworkMetrics
119+
const metric = (this.networkName + '_talkReqSent') as keyof PortalNetworkMetrics
120120
this.portal.metrics[metric].inc()
121121
}
122122
return this.portal.sendPortalNetworkMessage(enr, payload, networkId, utpMessage)
123123
}
124124

125125
sendResponse(src: INodeAddress, requestId: bigint, payload: Uint8Array): Promise<void> {
126-
if (this.portal.metrics) {
127-
const metric = (this.networkName + '_talkResponsesSent') as keyof PortalNetworkMetrics
128-
this.portal.metrics[metric].inc()
129-
}
130126
return this.portal.sendPortalNetworkResponse(src, requestId, payload)
131127
}
132128
findEnr(nodeId: string): ENR | undefined {

packages/portalnetwork/src/util/metrics.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,21 +60,26 @@ const ultralightMetrics = [
6060
help: 'how many MBs are currently stored in the db',
6161
},
6262
{
63-
name: 'talkRequestsSent',
63+
name: 'talkReqSent',
6464
metric: MetricType.Counter,
6565
help: 'how many talk requests have been sent',
6666
},
6767
{
68-
name: 'talkResponsesReceived',
68+
name: 'talkReqReceived',
6969
metric: MetricType.Counter,
70-
help: 'how many talk responses have been sent',
70+
help: 'how many talk requests have been received',
71+
},
72+
{
73+
name: 'utpPacketsReceived',
74+
metric: MetricType.Counter,
75+
help: 'how many UTP packets have been received',
7176
},
7277
]
7378

7479
export const setupMetrics = (
7580
networks: NetworkId[] = [NetworkId.HistoryNetwork],
7681
): PortalNetworkMetrics => {
77-
const metrics = createMetrics(ultralightMetrics, networks)
82+
const metrics = createMetrics(ultralightMetrics, [...networks, NetworkId.UTPNetwork])
7883
return {
7984
...metrics,
8085
totalContentLookups: new Gauge<string>({

packages/portalnetwork/src/wire/utp/PortalNetworkUtp/index.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {
2+
NetworkNames,
23
RequestCode,
34
UtpSocketType,
45
createContentRequest,
@@ -12,6 +13,7 @@ import type {
1213
INewRequest,
1314
NetworkId,
1415
PortalNetwork,
16+
PortalNetworkMetrics,
1517
UtpSocketKey,
1618
} from '../../../index.js'
1719
import type { SocketType } from '../Socket/index.js'
@@ -131,6 +133,15 @@ export class PortalNetworkUTP {
131133
this.logger(`No open request for ${srcId} with connectionId ${packetBuffer.readUint16BE(2)}`)
132134
return
133135
}
136+
if (this.client.metrics) {
137+
const metric = (NetworkNames[request.network.networkId] +
138+
'_talkReqReceived') as keyof PortalNetworkMetrics
139+
this.client.metrics[metric].inc()
140+
141+
const utpMetric = (NetworkNames[request.network.networkId] +
142+
'_utpPacketsReceived') as keyof PortalNetworkMetrics
143+
this.client.metrics[utpMetric].inc()
144+
}
134145
await request.handleUtpPacket(packetBuffer)
135146
}
136147

0 commit comments

Comments
 (0)