-
Notifications
You must be signed in to change notification settings - Fork 676
/
metrics.go
135 lines (113 loc) · 4.59 KB
/
metrics.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
127
128
129
130
131
132
133
134
135
package ccq
import (
"fmt"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
dto "github.com/prometheus/client_model/go"
)
var (
allQueryRequestsReceived = promauto.NewCounter(
prometheus.CounterOpts{
Name: "ccq_server_total_query_requests_received",
Help: "Total number of query requests received, valid and invalid",
})
validQueryRequestsReceived = promauto.NewCounter(
prometheus.CounterOpts{
Name: "ccq_server_total_valid_query_requests_received",
Help: "Total number of valid query requests received",
})
invalidQueryRequestReceived = promauto.NewCounterVec(
prometheus.CounterOpts{
Name: "ccq_server_invalid_query_requests_received_by_reason",
Help: "Total number of invalid query requests received by reason",
}, []string{"reason"})
totalRequestedCallsByChain = promauto.NewCounterVec(
prometheus.CounterOpts{
Name: "ccq_server_total_requested_calls_by_chain",
Help: "Total number of requested calls by chain",
}, []string{"chain_name"})
totalRequestsByUser = promauto.NewCounterVec(
prometheus.CounterOpts{
Name: "ccq_server_total_requests_by_user",
Help: "Total number of requests by user name",
}, []string{"user_name"})
successfulQueriesByUser = promauto.NewCounterVec(
prometheus.CounterOpts{
Name: "ccq_server_successful_queries_by_user",
Help: "Total number of successful queries by user name",
}, []string{"user_name"})
failedQueriesByUser = promauto.NewCounterVec(
prometheus.CounterOpts{
Name: "ccq_server_failed_queries_by_user",
Help: "Total number of failed queries by user name",
}, []string{"user_name"})
queryTimeoutsByUser = promauto.NewCounterVec(
prometheus.CounterOpts{
Name: "ccq_server_query_timeouts_by_user",
Help: "Total number of query timeouts by user name",
}, []string{"user_name"})
quorumNotMetByUser = promauto.NewCounterVec(
prometheus.CounterOpts{
Name: "ccq_server_quorum_not_met_by_user",
Help: "Total number of query failures due to quorum not met by user name",
}, []string{"user_name"})
invalidRequestsByUser = promauto.NewCounterVec(
prometheus.CounterOpts{
Name: "ccq_server_invalid_requests_by_user",
Help: "Total number of invalid requests by user name",
}, []string{"user_name"})
queryResponsesReceived = promauto.NewCounterVec(
prometheus.CounterOpts{
Name: "ccq_server_total_query_responses_received_by_peer_id",
Help: "Total number of query responses received by peer ID",
}, []string{"peer_id"})
queryResponsesReceivedByChainAndPeerID = promauto.NewCounterVec(
prometheus.CounterOpts{
Name: "ccq_server_total_query_responses_received_by_chain_and_peer_id",
Help: "Total number of query responses received by chain and peer ID",
}, []string{"chain_name", "peer_id"})
inboundP2pError = promauto.NewCounterVec(
prometheus.CounterOpts{
Name: "ccq_server_inbound_p2p_errors",
Help: "Total number of inbound p2p errors",
}, []string{"reason"})
totalQueryTime = promauto.NewHistogram(
prometheus.HistogramOpts{
Name: "ccq_server_total_query_time_in_ms",
Help: "Time from request to response published in ms",
Buckets: []float64{10.0, 100.0, 250.0, 500.0, 1000.0, 5000.0, 10000.0, 30000.0},
})
permissionFileReloadsSuccess = promauto.NewCounter(
prometheus.CounterOpts{
Name: "ccq_server_perm_file_reload_success",
Help: "Total number of times the permissions file was successfully reloaded",
})
permissionFileReloadsFailure = promauto.NewCounter(
prometheus.CounterOpts{
Name: "ccq_server_perm_file_reload_failure",
Help: "Total number of times the permissions file failed to reload",
})
successfulReconnects = promauto.NewCounter(
prometheus.CounterOpts{
Name: "ccq_server_total_number_of_successful_reconnects",
Help: "Total number of successful reconnects to bootstrap peers",
})
currentNumConcurrentQueriesByChain = promauto.NewGaugeVec(
prometheus.GaugeOpts{
Name: "ccq_server_current_num_concurrent_queries_by_chain",
Help: "Gauge showing the current number of concurrent query requests by chain",
}, []string{"chain_name"})
maxConcurrentQueriesByChain = promauto.NewGaugeVec(
prometheus.GaugeOpts{
Name: "ccq_server_max_concurrent_queries_by_chain",
Help: "Gauge showing the maximum concurrent query requests by chain",
}, []string{"chain_name"})
)
// getGaugeValue returns the current value of a metric.
func getGaugeValue(gauge prometheus.Gauge) (float64, error) {
metric := &dto.Metric{}
if err := gauge.Write(metric); err != nil {
return 0, fmt.Errorf("failed to read metric value: %w", err)
}
return metric.GetGauge().GetValue(), nil
}