68
68
[]string {"guardian" , "chain" },
69
69
)
70
70
71
+ guardianChainSafeHeight = promauto .NewGaugeVec (
72
+ prometheus.GaugeOpts {
73
+ Name : "guardian_chain_safe_height" ,
74
+ Help : "Safe height of each guardian on each chain over time" ,
75
+ },
76
+ []string {"guardian" , "chain" },
77
+ )
78
+
79
+ guardianChainFinalizedHeight = promauto .NewGaugeVec (
80
+ prometheus.GaugeOpts {
81
+ Name : "guardian_chain_finalized_height" ,
82
+ Help : "Finalized height of each guardian on each chain over time" ,
83
+ },
84
+ []string {"guardian" , "chain" },
85
+ )
86
+
71
87
guardianChainHeightDifferences = promauto .NewGaugeVec (
72
88
prometheus.GaugeOpts {
73
89
Name : "guardian_chain_height_differences" ,
@@ -143,7 +159,7 @@ func recordGuardianHeightDifferences() {
143
159
chainName := vaa .ChainID (chainId ).String ()
144
160
145
161
for guardian , heightDifference := range guardianHeightDifferences {
146
- guardianChainHeightDifferences .WithLabelValues (guardian , chainName ).Set (float64 (heightDifference ))
162
+ guardianChainHeightDifferences .WithLabelValues (guardian , chainName ).Set (float64 (heightDifference . Latest ))
147
163
}
148
164
}
149
165
}
@@ -166,9 +182,11 @@ func initPromScraper(promRemoteURL string, logger *zap.Logger, errC chan error)
166
182
for {
167
183
select {
168
184
case <- ctx .Done ():
185
+ logger .Info ("Prometheus scraper context done" )
169
186
return nil
170
187
case <- t .C :
171
188
recordGuardianHeightDifferences ()
189
+
172
190
for i := 1 ; i < 36 ; i ++ {
173
191
if i == PYTHNET_CHAIN_ID {
174
192
continue
@@ -186,6 +204,7 @@ func initPromScraper(promRemoteURL string, logger *zap.Logger, errC chan error)
186
204
guardianMissedObservations .WithLabelValues (guardianName , chainName ).Add (0 )
187
205
}
188
206
}
207
+
189
208
err := promremotew .ScrapeAndSendLocalMetrics (ctx , info , promLogger )
190
209
if err != nil {
191
210
promLogger .Error ("ScrapeAndSendLocalMetrics error" , zap .Error (err ))
@@ -194,6 +213,8 @@ func initPromScraper(promRemoteURL string, logger *zap.Logger, errC chan error)
194
213
}
195
214
}
196
215
})
216
+ } else {
217
+ logger .Warn ("Prometheus remote write URL not provided, metrics will not be sent" )
197
218
}
198
219
}
199
220
@@ -387,13 +408,34 @@ func main() {
387
408
guardianChainHeights [network .Id ] = make (common.GuardianHeight )
388
409
}
389
410
390
- guardianChainHeights [network.Id ][guardianName ] = uint64 (network .Height )
411
+ guardianChainHeights [network.Id ][guardianName ] = common.HeightInfo {
412
+ Latest : uint64 (network .Height ),
413
+ Safe : uint64 (network .SafeHeight ),
414
+ Finalized : uint64 (network .FinalizedHeight ),
415
+ }
416
+
417
+ chain := vaa .ChainID (network .Id ).String ()
418
+
391
419
guardianChainHeight .With (
392
420
prometheus.Labels {
393
421
"guardian" : guardianName ,
394
- "chain" : vaa . ChainID ( network . Id ). String () ,
422
+ "chain" : chain ,
395
423
},
396
424
).Set (float64 (network .Height ))
425
+
426
+ guardianChainSafeHeight .With (
427
+ prometheus.Labels {
428
+ "guardian" : guardianName ,
429
+ "chain" : chain ,
430
+ },
431
+ ).Set (float64 (network .SafeHeight ))
432
+
433
+ guardianChainFinalizedHeight .With (
434
+ prometheus.Labels {
435
+ "guardian" : guardianName ,
436
+ "chain" : chain ,
437
+ },
438
+ ).Set (float64 (network .FinalizedHeight ))
397
439
}
398
440
399
441
guardianHeartbeats .With (
0 commit comments