/
mana.go
126 lines (108 loc) · 3.47 KB
/
mana.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package prometheus
import (
"github.com/prometheus/client_golang/prometheus"
"github.com/iotaledger/goshimmer/plugins/metrics"
)
var (
accessManaMap *prometheus.GaugeVec
accessPercentile prometheus.Gauge
consensusManaMap *prometheus.GaugeVec
consensusPercentile prometheus.Gauge
averageNeighborsAccess prometheus.Gauge
averageNeighborsConsensus prometheus.Gauge
averageAccessPledge *prometheus.GaugeVec
averageConsensusPledge *prometheus.GaugeVec
delegatedMana prometheus.Gauge
)
func registerManaMetrics() {
accessManaMap = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Name: "mana_access",
Help: "Access mana map of the network",
},
[]string{
"nodeID",
})
accessPercentile = prometheus.NewGauge(
prometheus.GaugeOpts{
Name: "mana_access_percentile",
Help: "Top percentile node belongs to in terms of access mana.",
})
consensusManaMap = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Name: "mana_consensus",
Help: "Consensus mana map of the network",
},
[]string{
"nodeID",
})
consensusPercentile = prometheus.NewGauge(
prometheus.GaugeOpts{
Name: "mana_consensus_percentile",
Help: "Top percentile node belongs to in terms of consensus mana.",
})
averageAccessPledge = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Name: "mana_average_access_pledge",
Help: "Average of pledged access mana.",
},
[]string{
"nodeID",
"type",
})
averageConsensusPledge = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Name: "mana_average_consensus_pledge",
Help: "Average of pledged consensus mana.",
},
[]string{
"nodeID",
"type",
})
averageNeighborsAccess = prometheus.NewGauge(
prometheus.GaugeOpts{
Name: "mana_average_neighbors_access",
Help: "Average access mana of all neighbors.",
})
averageNeighborsConsensus = prometheus.NewGauge(
prometheus.GaugeOpts{
Name: "mana_average_neighbors_consensus",
Help: "Average consensus mana of all neighbors.",
})
delegatedMana = prometheus.NewGauge(
prometheus.GaugeOpts{
Name: "mana_delegated_amount",
Help: "The amount of mana delegated to the node at the moment",
})
registry.MustRegister(accessManaMap)
registry.MustRegister(accessPercentile)
registry.MustRegister(consensusManaMap)
registry.MustRegister(consensusPercentile)
registry.MustRegister(averageAccessPledge)
registry.MustRegister(averageConsensusPledge)
registry.MustRegister(averageNeighborsAccess)
registry.MustRegister(averageNeighborsConsensus)
registry.MustRegister(delegatedMana)
addCollect(collectManaMetrics)
}
func collectManaMetrics() {
for nodeID, value := range metrics.AccessManaMap() {
accessManaMap.WithLabelValues(nodeID.String()).Set(value)
}
accessPercentile.Set(metrics.AccessPercentile())
for nodeID, value := range metrics.ConsensusManaMap() {
consensusManaMap.WithLabelValues(nodeID.String()).Set(value)
}
consensusPercentile.Set(metrics.ConsensusPercentile())
averageNeighborsAccess.Set(metrics.AverageNeighborsAccess())
averageNeighborsConsensus.Set(metrics.AverageNeighborsConsensus())
accessPledges := metrics.AveragePledgeAccess()
for nodeID, value := range accessPledges {
averageAccessPledge.WithLabelValues(nodeID.String(), "bm2").Set(value)
}
consensusPledges := metrics.AveragePledgeConsensus()
for nodeID, value := range consensusPledges {
averageConsensusPledge.WithLabelValues(nodeID.String(), "bm1").Set(value)
}
delegatedMana.Set(float64(metrics.DelegatedMana()))
}