Skip to content

Commit 775a3a2

Browse files
committed
feat: add DKG message received/sent metrics
1 parent f47d12a commit 775a3a2

File tree

2 files changed

+75
-1
lines changed

2 files changed

+75
-1
lines changed

rolling-shutter/keyper/keypermetrics/metrics.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,13 @@ import (
1414
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/chainsync"
1515
)
1616

17+
const (
18+
DKGMessageTypePolyEval = "poly_eval"
19+
DKGMessageTypePolyCommitment = "poly_commitment"
20+
DKGMessageTypeAccusation = "accusation"
21+
DKGMessageTypeApology = "apology"
22+
)
23+
1724
var MetricsKeyperCurrentBlockL1 = prometheus.NewGauge(
1825
prometheus.GaugeOpts{
1926
Namespace: "shutter",
@@ -71,6 +78,26 @@ var MetricsKeyperCurrentPhase = prometheus.NewGaugeVec(
7178
[]string{"eon", "phase"},
7279
)
7380

81+
var MetricsKeyperDKGMessagesSent = prometheus.NewCounterVec(
82+
prometheus.CounterOpts{
83+
Namespace: "shutter",
84+
Subsystem: "keyper",
85+
Name: "dkg_messages_sent",
86+
Help: "Number of DKG messages scheduled for sending for the given eon, partitioned by message type",
87+
},
88+
[]string{"eon", "message_type"},
89+
)
90+
91+
var MetricsKeyperDKGMessagesReceived = prometheus.NewCounterVec(
92+
prometheus.CounterOpts{
93+
Namespace: "shutter",
94+
Subsystem: "keyper",
95+
Name: "dkg_messages_received",
96+
Help: "Number of DKG messages received for the given eon, partitioned by message type",
97+
},
98+
[]string{"eon", "message_type"},
99+
)
100+
74101
var MetricsKeyperCurrentBatchConfigIndex = prometheus.NewGauge(
75102
prometheus.GaugeOpts{
76103
Namespace: "shutter",
@@ -128,6 +155,8 @@ func InitMetrics(dbpool *pgxpool.Pool, config kprconfig.Config) {
128155
prometheus.MustRegister(MetricsKeyperDKGStatus)
129156
prometheus.MustRegister(MetricsKeyperEthAddress)
130157
prometheus.MustRegister(MetricsExecutionClientVersion)
158+
prometheus.MustRegister(MetricsKeyperDKGMessagesSent)
159+
prometheus.MustRegister(MetricsKeyperDKGMessagesReceived)
131160

132161
ctx := context.Background()
133162
queries := database.New(dbpool)

rolling-shutter/keyper/smobserver/smstate.go

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,11 +202,20 @@ func (st *ShuttermintState) sendPolyEvals(ctx context.Context, queries *database
202202
receivers = nil
203203
encryptedEvals = nil
204204
}()
205-
return queries.ScheduleShutterMessage(
205+
eonLabel := strconv.FormatInt(currentEon, 10)
206+
err := queries.ScheduleShutterMessage(
206207
ctx,
207208
fmt.Sprintf("poly eval (eon=%d)", currentEon),
208209
shmsg.NewPolyEval(uint64(currentEon), receivers, encryptedEvals),
209210
)
211+
if err != nil {
212+
return err
213+
}
214+
keypermetrics.MetricsKeyperDKGMessagesSent.WithLabelValues(
215+
eonLabel,
216+
keypermetrics.DKGMessageTypePolyEval,
217+
).Inc()
218+
return nil
210219
}
211220

212221
for _, eval := range evals {
@@ -389,6 +398,7 @@ func (st *ShuttermintState) startPhase1Dealing(
389398
log.Fatal().Err(err).Msg("aborting due to unexpected error")
390399
}
391400
dkg.markDirty()
401+
eonLabel := strconv.FormatUint(eon, 10)
392402
err = queries.ScheduleShutterMessage(
393403
ctx,
394404
fmt.Sprintf("poly commitment (eon=%d)", eon),
@@ -397,6 +407,10 @@ func (st *ShuttermintState) startPhase1Dealing(
397407
if err != nil {
398408
return err
399409
}
410+
keypermetrics.MetricsKeyperDKGMessagesSent.WithLabelValues(
411+
eonLabel,
412+
keypermetrics.DKGMessageTypePolyCommitment,
413+
).Inc()
400414

401415
for _, eval := range polyEvals {
402416
err = queries.InsertPolyEval(ctx, database.InsertPolyEvalParams{
@@ -416,9 +430,14 @@ func (st *ShuttermintState) startPhase2Accusing(
416430
) error {
417431
accusations := dkg.pure.StartPhase2Accusing()
418432
dkg.markDirty()
433+
eonLabel := strconv.FormatUint(eon, 10)
419434
if len(accusations) > 0 {
420435
var accused []common.Address
421436
for _, a := range accusations {
437+
keypermetrics.MetricsKeyperDKGMessagesSent.WithLabelValues(
438+
eonLabel,
439+
keypermetrics.DKGMessageTypeAccusation,
440+
).Inc()
422441
accused = append(accused, dkg.keypers[a.Accused])
423442
}
424443
err := queries.ScheduleShutterMessage(
@@ -441,11 +460,16 @@ func (st *ShuttermintState) startPhase3Apologizing(
441460
) error {
442461
apologies := dkg.pure.StartPhase3Apologizing()
443462
dkg.markDirty()
463+
eonLabel := strconv.FormatUint(eon, 10)
444464
if len(apologies) > 0 {
445465
var accusers []common.Address
446466
var polyEvals []*big.Int
447467

448468
for _, a := range apologies {
469+
keypermetrics.MetricsKeyperDKGMessagesSent.WithLabelValues(
470+
eonLabel,
471+
keypermetrics.DKGMessageTypeApology,
472+
).Inc()
449473
accusers = append(accusers, dkg.keypers[a.Accuser])
450474
polyEvals = append(polyEvals, a.Eval)
451475
}
@@ -624,6 +648,10 @@ func (st *ShuttermintState) handlePolyCommitment(
624648
return nil
625649
}
626650
dkg.markDirty()
651+
keypermetrics.MetricsKeyperDKGMessagesReceived.WithLabelValues(
652+
strconv.FormatUint(e.Eon, 10),
653+
keypermetrics.DKGMessageTypePolyCommitment,
654+
).Inc()
627655
return nil
628656
}
629657

@@ -645,6 +673,7 @@ func (st *ShuttermintState) handlePolyEval(
645673
Msg("event for non existent eon received")
646674
return nil
647675
}
676+
eonLabel := strconv.FormatUint(e.Eon, 10)
648677
sender, err := medley.FindAddressIndex(dkg.keypers, e.Sender)
649678
if err != nil {
650679
return nil
@@ -681,6 +710,10 @@ func (st *ShuttermintState) handlePolyEval(
681710
}
682711
log.Info().Str("event", e.String()).Int("keyper", sender).
683712
Msg("got poly eval message")
713+
keypermetrics.MetricsKeyperDKGMessagesReceived.WithLabelValues(
714+
eonLabel,
715+
keypermetrics.DKGMessageTypePolyEval,
716+
).Inc()
684717
dkg.markDirty()
685718
return nil
686719
}
@@ -700,6 +733,7 @@ func (st *ShuttermintState) handleAccusation(
700733
Msg("received accusation in wrong phase")
701734
return nil
702735
}
736+
eonLabel := strconv.FormatUint(e.Eon, 10)
703737
sender, err := medley.FindAddressIndex(dkg.keypers, e.Sender)
704738
if err != nil {
705739
log.Info().Str("event", e.String()).
@@ -724,7 +758,12 @@ func (st *ShuttermintState) handleAccusation(
724758
if err != nil {
725759
log.Info().Str("event", e.String()).Err(err).
726760
Msg("cannot handle accusation")
761+
continue
727762
}
763+
keypermetrics.MetricsKeyperDKGMessagesReceived.WithLabelValues(
764+
eonLabel,
765+
keypermetrics.DKGMessageTypeAccusation,
766+
).Inc()
728767
}
729768
dkg.markDirty()
730769
return nil
@@ -744,6 +783,7 @@ func (st *ShuttermintState) handleApology(
744783
Msg("Warning: received apology in wrong phase")
745784
return nil
746785
}
786+
eonLabel := strconv.FormatUint(e.Eon, 10)
747787
sender, err := medley.FindAddressIndex(dkg.keypers, e.Sender)
748788
if err != nil {
749789
log.Info().Str("event", e.String()).Msg("failed to handle apology. bad sender")
@@ -766,7 +806,12 @@ func (st *ShuttermintState) handleApology(
766806
})
767807
if err != nil {
768808
log.Info().Str("event", e.String()).Err(err).Msg("failed to handle apology")
809+
continue
769810
}
811+
keypermetrics.MetricsKeyperDKGMessagesReceived.WithLabelValues(
812+
eonLabel,
813+
keypermetrics.DKGMessageTypeApology,
814+
).Inc()
770815
}
771816
dkg.markDirty()
772817
return nil

0 commit comments

Comments
 (0)