Skip to content

Commit 446648d

Browse files
authored
fix(p2p): fix metrics in p2p package (#144)
1 parent 7277a18 commit 446648d

File tree

2 files changed

+25
-37
lines changed

2 files changed

+25
-37
lines changed

p2p/exchange_metrics.go

Lines changed: 17 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package p2p
22

33
import (
44
"context"
5-
"errors"
65
"sync/atomic"
76
"time"
87

@@ -33,15 +32,14 @@ type exchangeMetrics struct {
3332

3433
trackerPeersNum atomic.Int64
3534
trackedPeersNumInst metric.Int64ObservableGauge
36-
trackedPeersNumReg metric.Registration
3735

3836
disconnectedPeersNum atomic.Int64
3937
disconnectedPeersNumInst metric.Int64ObservableGauge
40-
disconnectedPeersNumReg metric.Registration
4138

4239
blockedPeersNum atomic.Int64
4340
blockedPeersNumInst metric.Int64ObservableGauge
44-
blockedPeersNumReg metric.Registration
41+
42+
clientReg metric.Registration
4543
}
4644

4745
func newExchangeMetrics() (m *exchangeMetrics, err error) {
@@ -74,35 +72,40 @@ func newExchangeMetrics() (m *exchangeMetrics, err error) {
7472
if err != nil {
7573
return nil, err
7674
}
77-
m.trackedPeersNumReg, err = meter.RegisterCallback(m.observeTrackedPeers, m.trackedPeersNumInst)
78-
if err != nil {
79-
return nil, err
80-
}
8175
m.disconnectedPeersNumInst, err = meter.Int64ObservableGauge(
8276
"hdr_p2p_exch_clnt_disconn_peer_num_gauge",
8377
metric.WithDescription("exchange client tracked disconnected peers number"),
8478
)
8579
if err != nil {
8680
return nil, err
8781
}
88-
m.disconnectedPeersNumReg, err = meter.RegisterCallback(m.observeDisconnectedPeers, m.disconnectedPeersNumInst)
89-
if err != nil {
90-
return nil, err
91-
}
9282
m.blockedPeersNumInst, err = meter.Int64ObservableGauge(
9383
"hdr_p2p_exch_clnt_block_peer_num_gauge",
9484
metric.WithDescription("exchange client blocked peers number"),
9585
)
9686
if err != nil {
9787
return nil, err
9888
}
99-
m.blockedPeersNumReg, err = meter.RegisterCallback(m.observeBlockedPeers, m.blockedPeersNumInst)
89+
90+
m.clientReg, err = meter.RegisterCallback(
91+
m.observeMetrics,
92+
m.trackedPeersNumInst,
93+
m.disconnectedPeersNumInst,
94+
m.blockedPeersNumInst,
95+
)
10096
if err != nil {
10197
return nil, err
10298
}
10399
return m, nil
104100
}
105101

102+
func (m *exchangeMetrics) observeMetrics(_ context.Context, obs metric.Observer) error {
103+
obs.ObserveInt64(m.trackedPeersNumInst, m.trackerPeersNum.Load())
104+
obs.ObserveInt64(m.disconnectedPeersNumInst, m.disconnectedPeersNum.Load())
105+
obs.ObserveInt64(m.blockedPeersNumInst, m.blockedPeersNum.Load())
106+
return nil
107+
}
108+
106109
func (m *exchangeMetrics) head(ctx context.Context, duration time.Duration, headersReceived int, tp, status string) {
107110
m.observe(ctx, func(ctx context.Context) {
108111
m.headRequestTimeInst.Record(ctx,
@@ -147,21 +150,6 @@ func (m *exchangeMetrics) peerBlocked() {
147150
})
148151
}
149152

150-
func (m *exchangeMetrics) observeTrackedPeers(_ context.Context, obs metric.Observer) error {
151-
obs.ObserveInt64(m.trackedPeersNumInst, m.trackerPeersNum.Load())
152-
return nil
153-
}
154-
155-
func (m *exchangeMetrics) observeDisconnectedPeers(_ context.Context, obs metric.Observer) error {
156-
obs.ObserveInt64(m.disconnectedPeersNumInst, m.disconnectedPeersNum.Load())
157-
return nil
158-
}
159-
160-
func (m *exchangeMetrics) observeBlockedPeers(_ context.Context, obs metric.Observer) error {
161-
obs.ObserveInt64(m.blockedPeersNumInst, m.blockedPeersNum.Load())
162-
return nil
163-
}
164-
165153
func (m *exchangeMetrics) observe(ctx context.Context, observeFn func(context.Context)) {
166154
if m == nil {
167155
return
@@ -177,8 +165,5 @@ func (m *exchangeMetrics) Close() (err error) {
177165
if m == nil {
178166
return nil
179167
}
180-
181-
err = errors.Join(err, m.trackedPeersNumReg.Unregister())
182-
err = errors.Join(err, m.disconnectedPeersNumReg.Unregister())
183-
return err
168+
return m.clientReg.Unregister()
184169
}

p2p/subscriber_metrics.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,13 @@ import (
55
"sync/atomic"
66
"time"
77

8+
"go.opentelemetry.io/otel"
89
"go.opentelemetry.io/otel/attribute"
910
"go.opentelemetry.io/otel/metric"
1011
)
1112

13+
var subsMeter = otel.Meter("header/p2p-subs/")
14+
1215
const (
1316
statusKey = "status"
1417
statusAccept = "accept"
@@ -30,35 +33,35 @@ type subscriberMetrics struct {
3033

3134
func newSubscriberMetrics() (m *subscriberMetrics, err error) {
3235
m = new(subscriberMetrics)
33-
m.messageNumInst, err = meter.Int64Counter(
36+
m.messageNumInst, err = subsMeter.Int64Counter(
3437
"hdr_p2p_sub_msg_num_counter",
3538
metric.WithDescription("header message count"),
3639
)
3740
if err != nil {
3841
return nil, err
3942
}
40-
m.messageSizeInst, err = meter.Int64Histogram(
43+
m.messageSizeInst, err = subsMeter.Int64Histogram(
4144
"hdr_p2p_sub_msg_size_hist",
4245
metric.WithDescription("valid header message size"),
4346
)
4447
if err != nil {
4548
return nil, err
4649
}
47-
m.messageTimeInst, err = meter.Float64Histogram(
50+
m.messageTimeInst, err = subsMeter.Float64Histogram(
4851
"hdr_p2p_sub_msg_time_hist",
4952
metric.WithDescription("valid header message propagation time"),
5053
)
5154
if err != nil {
5255
return nil, err
5356
}
54-
m.subscriptionNumInst, err = meter.Int64ObservableGauge(
57+
m.subscriptionNumInst, err = subsMeter.Int64ObservableGauge(
5558
"hdr_p2p_sub_num_gauge",
5659
metric.WithDescription("number of active header message subscriptions"),
5760
)
5861
if err != nil {
5962
return nil, err
6063
}
61-
m.subscriptionNumReg, err = meter.RegisterCallback(m.subscriptionCallback, m.subscriptionNumInst)
64+
m.subscriptionNumReg, err = subsMeter.RegisterCallback(m.subscriptionCallback, m.subscriptionNumInst)
6265
if err != nil {
6366
return nil, err
6467
}

0 commit comments

Comments
 (0)