59
59
[]string {"guardian" , "chain" },
60
60
)
61
61
62
+ guardianChainHeightDifferences = promauto .NewGaugeVec (
63
+ prometheus.GaugeOpts {
64
+ Name : "guardian_chain_height_differences" ,
65
+ Help : "Current height difference of each guardian from max height on each chain over time" ,
66
+ },
67
+ []string {"guardian" , "chain" },
68
+ )
69
+
62
70
guardianHeartbeats = promauto .NewGaugeVec (
63
71
prometheus.GaugeOpts {
64
72
Name : "guardian_heartbeats" ,
78
86
79
87
const PYTHNET_CHAIN_ID = int (vaa .ChainIDPythNet )
80
88
89
+ var (
90
+ // guardianChainHeights indexes current chain height by chain id and guardian name
91
+ guardianChainHeights = make (common.GuardianChainHeights )
92
+ )
93
+
81
94
func loadEnvVars () {
82
95
err := godotenv .Load () // By default loads .env
83
96
if err != nil {
@@ -105,6 +118,18 @@ func verifyEnvVar(key string) string {
105
118
return value
106
119
}
107
120
121
+ func recordGuardianHeightDifferences () {
122
+ guardianHeightDifferencesByChain := historical_uptime .GetGuardianHeightDifferencesByChain (guardianChainHeights )
123
+
124
+ for chainId , guardianHeightDifferences := range guardianHeightDifferencesByChain {
125
+ chainName := vaa .ChainID (chainId ).String ()
126
+
127
+ for guardian , heightDifference := range guardianHeightDifferences {
128
+ guardianChainHeightDifferences .WithLabelValues (guardian , chainName ).Set (float64 (heightDifference ))
129
+ }
130
+ }
131
+ }
132
+
108
133
func initPromScraper (promRemoteURL string , logger * zap.Logger , errC chan error ) {
109
134
usingPromRemoteWrite := promRemoteURL != ""
110
135
if usingPromRemoteWrite {
@@ -125,6 +150,7 @@ func initPromScraper(promRemoteURL string, logger *zap.Logger, errC chan error)
125
150
case <- ctx .Done ():
126
151
return nil
127
152
case <- t .C :
153
+ recordGuardianHeightDifferences ()
128
154
for i := 1 ; i < 36 ; i ++ {
129
155
if i == PYTHNET_CHAIN_ID {
130
156
continue
@@ -324,6 +350,11 @@ func main() {
324
350
}
325
351
326
352
for _ , network := range hb .Networks {
353
+ if guardianChainHeights [network .Id ] == nil {
354
+ guardianChainHeights [network .Id ] = make (common.GuardianHeight )
355
+ }
356
+
357
+ guardianChainHeights [network.Id ][guardianName ] = uint64 (network .Height )
327
358
guardianChainHeight .With (
328
359
prometheus.Labels {
329
360
"guardian" : guardianName ,
@@ -338,7 +369,6 @@ func main() {
338
369
},
339
370
).Set (float64 (hb .Counter ))
340
371
341
-
342
372
}
343
373
}
344
374
}()
0 commit comments