Skip to content

Commit 0e15c20

Browse files
committed
historical_uptime: modularize metrics tallying logic
Signed-off-by: bingyuyap <bingyu.yap.21@gmail.com>
1 parent a2c6ab2 commit 0e15c20

File tree

2 files changed

+59
-32
lines changed

2 files changed

+59
-32
lines changed

fly/cmd/historical_uptime/main.go

+4-32
Original file line numberDiff line numberDiff line change
@@ -160,44 +160,16 @@ func initObservationScraper(db *db.Database, logger *zap.Logger) {
160160
}
161161

162162
// Tally the number of messages for each chain
163-
messagesPerChain := make(map[string]int)
164-
for _, message := range messages {
165-
chainID := message.MessageID.ChainID()
166-
messagesPerChain[chainID]++
167-
}
163+
messagesPerChain := historical_uptime.TallyMessagesPerChain(messages)
168164

169165
// Initialize the missing observations count for each guardian for each chain
170-
guardianMissingObservations := make(map[string]map[string]int)
171-
for _, message := range messages {
172-
chainID := message.MessageID.ChainID()
173-
for _, guardianName := range common.GetGuardianIndexToNameMap() {
174-
if guardianMissingObservations[guardianName] == nil {
175-
guardianMissingObservations[guardianName] = make(map[string]int)
176-
}
177-
// Initialize the count for this chain for each guardian with the number of messages for that chain
178-
guardianMissingObservations[guardianName][chainID] = messagesPerChain[chainID]
179-
}
180-
}
166+
guardianMissingObservations := historical_uptime.InitializeMissingObservationsCount(messages, messagesPerChain)
181167

182168
// Decrement the missing observations count for each observed message
183-
for _, message := range messages {
184-
chainID := message.MessageID.ChainID()
185-
for _, observation := range message.Observations {
186-
guardianName, ok := common.GetGuardianName(observation.GuardianID)
187-
if !ok {
188-
logger.Error("Unknown guardian address", zap.String("guardianAddr", observation.GuardianID))
189-
continue
190-
}
191-
guardianMissingObservations[guardianName][chainID]--
192-
}
193-
}
169+
historical_uptime.DecrementMissingObservationsCount(logger, guardianMissingObservations, messages)
194170

195171
// Update the metrics with the final count of missing observations
196-
for guardianName, chains := range guardianMissingObservations {
197-
for chainID, missingCount := range chains {
198-
guardianMissedObservations.WithLabelValues(guardianName, chainID).Add(float64(missingCount))
199-
}
200-
}
172+
historical_uptime.UpdateMetrics(guardianMissedObservations, guardianMissingObservations)
201173
}
202174
}
203175
})

fly/pkg/historical_uptime/metrics.go

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package historical_uptime
2+
3+
import (
4+
"github.com/prometheus/client_golang/prometheus"
5+
"github.com/wormhole-foundation/wormhole-monitor/fly/common"
6+
"github.com/wormhole-foundation/wormhole-monitor/fly/pkg/db"
7+
"go.uber.org/zap"
8+
)
9+
10+
func TallyMessagesPerChain(messages []*db.Message) map[string]int {
11+
messagesPerChain := make(map[string]int)
12+
for _, message := range messages {
13+
chainID := message.MessageID.ChainID()
14+
messagesPerChain[chainID]++
15+
}
16+
return messagesPerChain
17+
}
18+
19+
func InitializeMissingObservationsCount(messages []*db.Message, messagesPerChain map[string]int) map[string]map[string]int {
20+
guardianMissingObservations := make(map[string]map[string]int)
21+
for _, message := range messages {
22+
chainID := message.MessageID.ChainID()
23+
for _, guardianName := range common.GetGuardianIndexToNameMap() {
24+
if guardianMissingObservations[guardianName] == nil {
25+
guardianMissingObservations[guardianName] = make(map[string]int)
26+
}
27+
// Initialize the count for this chain for each guardian with the number of messages for that chain
28+
guardianMissingObservations[guardianName][chainID] = messagesPerChain[chainID]
29+
}
30+
}
31+
32+
return guardianMissingObservations
33+
}
34+
35+
func DecrementMissingObservationsCount(logger *zap.Logger, guardianMissingObservations map[string]map[string]int, messages []*db.Message) {
36+
for _, message := range messages {
37+
chainID := message.MessageID.ChainID()
38+
for _, observation := range message.Observations {
39+
guardianName, ok := common.GetGuardianName(observation.GuardianID)
40+
if !ok {
41+
logger.Error("Unknown guardian address", zap.String("guardianAddr", observation.GuardianID))
42+
continue
43+
}
44+
guardianMissingObservations[guardianName][chainID]--
45+
}
46+
}
47+
}
48+
49+
func UpdateMetrics(guardianMissedObservations *prometheus.CounterVec, guardianMissingObservations map[string]map[string]int) {
50+
for guardianName, chains := range guardianMissingObservations {
51+
for chainID, missingCount := range chains {
52+
guardianMissedObservations.WithLabelValues(guardianName, chainID).Add(float64(missingCount))
53+
}
54+
}
55+
}

0 commit comments

Comments
 (0)