-
Notifications
You must be signed in to change notification settings - Fork 182
/
order.go
77 lines (72 loc) · 2.45 KB
/
order.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
package monitor
import (
"github.com/go-kit/kit/metrics"
"github.com/go-kit/kit/metrics/discard"
"github.com/go-kit/kit/metrics/prometheus"
stdprometheus "github.com/prometheus/client_golang/prometheus"
)
// OrderMetric is the struct of metric in order module
type OrderMetric struct {
FullFilledNum metrics.Gauge
PendingNum metrics.Gauge
CanceledNum metrics.Gauge
ExpiredNum metrics.Gauge
PartialFilledNum metrics.Gauge
}
// DefaultOrderMetrics returns Metrics build using Prometheus client library if Prometheus is enabled
// Otherwise, it returns no-op Metrics
func DefaultOrderMetrics(config *prometheusConfig) *OrderMetric {
if config.Prometheus {
return NewOrderMetrics()
}
return NopOrderMetrics()
}
// NewOrderMetrics returns a pointer of a new OrderMetric object
func NewOrderMetrics(labelsAndValues ...string) *OrderMetric {
var labels []string
for i := 0; i < len(labelsAndValues); i += 2 {
labels = append(labels, labelsAndValues[i])
}
return &OrderMetric{
FullFilledNum: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{
Namespace: xNameSpace,
Subsystem: orderSubSystem,
Name: "fulfilled",
Help: "the number of fulfilled order",
}, labels).With(labelsAndValues...),
PendingNum: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{
Namespace: xNameSpace,
Subsystem: orderSubSystem,
Name: "pending",
Help: "the number of pending order",
}, labels).With(labelsAndValues...),
CanceledNum: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{
Namespace: xNameSpace,
Subsystem: orderSubSystem,
Name: "canceled",
Help: "the number of canceled order",
}, labels).With(labelsAndValues...),
ExpiredNum: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{
Namespace: xNameSpace,
Subsystem: orderSubSystem,
Name: "expired",
Help: "the number of expired order",
}, labels).With(labelsAndValues...),
PartialFilledNum: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{
Namespace: xNameSpace,
Subsystem: orderSubSystem,
Name: "partial_filled",
Help: "the number of partial_filled order",
}, labels).With(labelsAndValues...),
}
}
// NopOrderMetrics returns a pointer of a no-op Metrics
func NopOrderMetrics() *OrderMetric {
return &OrderMetric{
FullFilledNum: discard.NewGauge(),
PendingNum: discard.NewGauge(),
CanceledNum: discard.NewGauge(),
ExpiredNum: discard.NewGauge(),
PartialFilledNum: discard.NewGauge(),
}
}