Skip to content

Commit 96052a8

Browse files
Merge pull request #607 from shutter-network/feat/keyper-dkg-metrics
feat: update isKeyper metric when handling messages and add successfull_dkg metric
2 parents b69cb43 + 30dfae7 commit 96052a8

File tree

4 files changed

+50
-2
lines changed

4 files changed

+50
-2
lines changed

rolling-shutter/keyper/keyper.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ func (kpr *KeyperCore) Start(ctx context.Context, runner service.Runner) error {
147147
messageSender := fx.NewRPCMessageSender(shuttermintClient, config.Ethereum.PrivateKey.Key)
148148

149149
if kpr.config.Metrics.Enabled {
150-
keypermetrics.InitMetrics(*kpr.config)
150+
keypermetrics.InitMetrics(kpr.dbpool, *kpr.config)
151151
epochkghandler.InitMetrics()
152152
deployment.InitMetrics()
153153
kpr.metricsServer = metricsserver.New(kpr.config.Metrics)

rolling-shutter/keyper/keypermetrics/metrics.go

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@ package keypermetrics
22

33
import (
44
"context"
5+
"strconv"
56

7+
"github.com/jackc/pgx/v4/pgxpool"
68
"github.com/prometheus/client_golang/prometheus"
79
"github.com/rs/zerolog/log"
810

11+
"github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/database"
912
"github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/kprconfig"
1013
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/chainsync"
1114
)
@@ -85,7 +88,17 @@ var MetricsKeyperBatchConfigInfo = prometheus.NewGaugeVec(
8588
},
8689
[]string{"batch_config_index", "keyper_addresses"})
8790

88-
func InitMetrics(config kprconfig.Config) {
91+
var MetricsKeyperDKGstatus = prometheus.NewGaugeVec(
92+
prometheus.GaugeOpts{
93+
Namespace: "shutter",
94+
Subsystem: "keyper",
95+
Name: "dkg_status",
96+
Help: "Is DKG successful",
97+
},
98+
[]string{"eon"},
99+
)
100+
101+
func InitMetrics(dbpool *pgxpool.Pool, config kprconfig.Config) {
89102
prometheus.MustRegister(MetricsKeyperCurrentBlockL1)
90103
prometheus.MustRegister(MetricsKeyperCurrentBlockShuttermint)
91104
prometheus.MustRegister(MetricsKeyperCurrentEon)
@@ -94,6 +107,36 @@ func InitMetrics(config kprconfig.Config) {
94107
prometheus.MustRegister(MetricsKeyperCurrentPhase)
95108
prometheus.MustRegister(MetricsKeyperCurrentBatchConfigIndex)
96109
prometheus.MustRegister(MetricsKeyperBatchConfigInfo)
110+
prometheus.MustRegister(MetricsKeyperDKGstatus)
111+
112+
queries := database.New(dbpool)
113+
eons, err := queries.GetAllEons(context.Background())
114+
if err != nil {
115+
log.Error().Err(err).Msg("keypermetrics | Failed to get all eons")
116+
return
117+
}
118+
keyperIndex, isKeyper, err := queries.GetKeyperIndex(context.Background(), eons[len(eons)-1].KeyperConfigIndex, config.GetAddress())
119+
if err != nil {
120+
log.Error().Err(err).Msg("keypermetrics | Failed to get keyper index")
121+
return
122+
}
123+
if isKeyper {
124+
MetricsKeyperIsKeyper.WithLabelValues(strconv.FormatInt(keyperIndex, 10)).Set(1)
125+
} else {
126+
MetricsKeyperIsKeyper.WithLabelValues(strconv.FormatInt(keyperIndex, 10)).Set(0)
127+
}
128+
129+
dkgResult, err := queries.GetDKGResultForKeyperConfigIndex(context.Background(), eons[len(eons)-1].KeyperConfigIndex)
130+
if err != nil {
131+
MetricsKeyperDKGstatus.WithLabelValues(strconv.FormatInt(eons[len(eons)-1].Eon, 10)).Set(0)
132+
log.Error().Err(err).Msg("keypermetrics | Failed to get dkg result")
133+
return
134+
}
135+
if dkgResult.Success {
136+
MetricsKeyperDKGstatus.WithLabelValues(strconv.FormatInt(eons[len(eons)-1].Eon, 10)).Set(1)
137+
} else {
138+
MetricsKeyperDKGstatus.WithLabelValues(strconv.FormatInt(eons[len(eons)-1].Eon, 10)).Set(0)
139+
}
97140

98141
version, err := chainsync.GetClientVersion(context.Background(), config.Ethereum.EthereumURL)
99142
if err != nil {
@@ -112,6 +155,8 @@ func InitMetrics(config kprconfig.Config) {
112155
},
113156
},
114157
)
158+
executionClientVersion.Set(1)
159+
115160
prometheus.MustRegister(executionClientVersion)
116161
metricsKeyperEthAddress := prometheus.NewGauge(
117162
prometheus.GaugeOpts{

rolling-shutter/keyper/smobserver/smstate.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -489,6 +489,7 @@ func (st *ShuttermintState) finalizeDKG(
489489
dkgresultmsg := shmsg.NewDKGResult(eon, err == nil)
490490

491491
if err != nil {
492+
keypermetrics.MetricsKeyperDKGstatus.WithLabelValues(strconv.FormatUint(eon, 10)).Set(0)
492493
log.Error().Err(err).Uint64("eon", eon).Bool("success", false).
493494
Msg("DKG process failed")
494495
dkgerror = sql.NullString{String: err.Error(), Valid: true}
@@ -497,6 +498,7 @@ func (st *ShuttermintState) finalizeDKG(
497498
return err
498499
}
499500
} else {
501+
keypermetrics.MetricsKeyperDKGstatus.WithLabelValues(strconv.FormatUint(eon, 10)).Set(1)
500502
log.Info().Uint64("eon", eon).Bool("success", true).Msg("DKG process succeeded")
501503
pureResult, err = shdb.EncodePureDKGResult(&dkgresult)
502504
if err != nil {

rolling-shutter/keyperimpl/gnosis/metrics.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,5 +118,6 @@ func InitMetrics(beaconClient *beaconapiclient.Client) {
118118
},
119119
},
120120
)
121+
beaconClientVersion.Set(1)
121122
prometheus.MustRegister(beaconClientVersion)
122123
}

0 commit comments

Comments
 (0)