/
tangle.go
111 lines (94 loc) · 3.82 KB
/
tangle.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
package prometheus
import (
"github.com/prometheus/client_golang/prometheus"
"github.com/iotaledger/goshimmer/plugins/metrics"
)
var (
messageTips prometheus.Gauge
messagePerTypeCount *prometheus.GaugeVec
messagePerComponentCount *prometheus.GaugeVec
messageTotalCount prometheus.Gauge
messageTotalCountDB prometheus.Gauge
messageSolidCountDB prometheus.Gauge
avgSolidificationTime prometheus.Gauge
messageMissingCountDB prometheus.Gauge
messageRequestCount prometheus.Gauge
transactionCounter prometheus.Gauge
)
func registerTangleMetrics() {
messageTips = prometheus.NewGauge(prometheus.GaugeOpts{
Name: "tangle_message_tips_count",
Help: "Current number of tips in message tangle",
})
messagePerTypeCount = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Name: "tangle_messages_per_type_count",
Help: "number of messages per payload type seen since the start of the node",
}, []string{
"message_type",
})
messagePerComponentCount = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Name: "tangle_messages_per_component_count",
Help: "number of messages per component seen since the start of the node",
}, []string{
"component",
})
messageTotalCount = prometheus.NewGauge(prometheus.GaugeOpts{
Name: "tangle_message_total_count",
Help: "total number of messages seen since the start of the node",
})
messageTotalCountDB = prometheus.NewGauge(prometheus.GaugeOpts{
Name: "tangle_message_total_count_db",
Help: "total number of messages in the node's database",
})
messageSolidCountDB = prometheus.NewGauge(prometheus.GaugeOpts{
Name: "tangle_message_solid_count_db",
Help: "number of solid messages on the node's database",
})
avgSolidificationTime = prometheus.NewGauge(prometheus.GaugeOpts{
Name: "tangle_message_avg_solidification_time",
Help: "average time it takes for a message to become solid",
})
messageMissingCountDB = prometheus.NewGauge(prometheus.GaugeOpts{
Name: "tangle_message_missing_count_db",
Help: "number of missing messages in the node's database",
})
transactionCounter = prometheus.NewGauge(prometheus.GaugeOpts{
Name: "tangle_value_transaction_counter",
Help: "number of value transactions (value payloads) seen",
})
messageRequestCount = prometheus.NewGauge(prometheus.GaugeOpts{
Name: "tangle_message_request_queue_size",
Help: "current number requested messages by the message tangle",
})
registry.MustRegister(messageTips)
registry.MustRegister(messagePerTypeCount)
registry.MustRegister(messagePerComponentCount)
registry.MustRegister(messageTotalCount)
registry.MustRegister(messageTotalCountDB)
registry.MustRegister(messageSolidCountDB)
registry.MustRegister(avgSolidificationTime)
registry.MustRegister(messageMissingCountDB)
registry.MustRegister(messageRequestCount)
registry.MustRegister(transactionCounter)
addCollect(collectTangleMetrics)
}
func collectTangleMetrics() {
messageTips.Set(float64(metrics.MessageTips()))
msgCountPerPayload := metrics.MessageCountSinceStartPerPayload()
for payloadType, count := range msgCountPerPayload {
messagePerTypeCount.WithLabelValues(payloadType.String()).Set(float64(count))
}
msgCountPerComponent := metrics.MessageCountSinceStartPerComponentGrafana()
for component, count := range msgCountPerComponent {
messagePerComponentCount.WithLabelValues(component.String()).Set(float64(count))
}
messageTotalCount.Set(float64(metrics.MessageTotalCountSinceStart()))
messageTotalCountDB.Set(float64(metrics.MessageTotalCountDB()))
messageSolidCountDB.Set(float64(metrics.MessageSolidCountDB()))
avgSolidificationTime.Set(metrics.AvgSolidificationTime())
messageMissingCountDB.Set(float64(metrics.MessageMissingCountDB()))
messageRequestCount.Set(float64(metrics.MessageRequestQueueSize()))
// transactionCounter.Set(float64(metrics.ValueTransactionCounter()))
}