github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/common/monitor/order.go (about) 1 package monitor 2 3 import ( 4 "github.com/go-kit/kit/metrics" 5 "github.com/go-kit/kit/metrics/discard" 6 "github.com/go-kit/kit/metrics/prometheus" 7 stdprometheus "github.com/prometheus/client_golang/prometheus" 8 ) 9 10 // OrderMetric is the struct of metric in order module 11 type OrderMetric struct { 12 FullFilledNum metrics.Gauge 13 PendingNum metrics.Gauge 14 CanceledNum metrics.Gauge 15 ExpiredNum metrics.Gauge 16 PartialFilledNum metrics.Gauge 17 } 18 19 // DefaultOrderMetrics returns Metrics build using Prometheus client library if Prometheus is enabled 20 // Otherwise, it returns no-op Metrics 21 func DefaultOrderMetrics(config *prometheusConfig) *OrderMetric { 22 if config.Prometheus { 23 return NewOrderMetrics() 24 } 25 return NopOrderMetrics() 26 } 27 28 // NewOrderMetrics returns a pointer of a new OrderMetric object 29 func NewOrderMetrics(labelsAndValues ...string) *OrderMetric { 30 var labels []string 31 for i := 0; i < len(labelsAndValues); i += 2 { 32 labels = append(labels, labelsAndValues[i]) 33 } 34 return &OrderMetric{ 35 FullFilledNum: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{ 36 Namespace: xNameSpace, 37 Subsystem: orderSubSystem, 38 Name: "fulfilled", 39 Help: "the number of fulfilled order", 40 }, labels).With(labelsAndValues...), 41 PendingNum: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{ 42 Namespace: xNameSpace, 43 Subsystem: orderSubSystem, 44 Name: "pending", 45 Help: "the number of pending order", 46 }, labels).With(labelsAndValues...), 47 CanceledNum: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{ 48 Namespace: xNameSpace, 49 Subsystem: orderSubSystem, 50 Name: "canceled", 51 Help: "the number of canceled order", 52 }, labels).With(labelsAndValues...), 53 ExpiredNum: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{ 54 Namespace: xNameSpace, 55 Subsystem: orderSubSystem, 56 Name: "expired", 57 Help: "the number of expired order", 58 }, labels).With(labelsAndValues...), 59 PartialFilledNum: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{ 60 Namespace: xNameSpace, 61 Subsystem: orderSubSystem, 62 Name: "partial_filled", 63 Help: "the number of partial_filled order", 64 }, labels).With(labelsAndValues...), 65 } 66 } 67 68 // NopOrderMetrics returns a pointer of a no-op Metrics 69 func NopOrderMetrics() *OrderMetric { 70 return &OrderMetric{ 71 FullFilledNum: discard.NewGauge(), 72 PendingNum: discard.NewGauge(), 73 CanceledNum: discard.NewGauge(), 74 ExpiredNum: discard.NewGauge(), 75 PartialFilledNum: discard.NewGauge(), 76 } 77 }