bbgo_origin/pkg/strategy/grid2/metrics.go

119 lines
2.4 KiB
Go
Raw Normal View History

2023-01-10 12:15:51 +00:00
package grid2
import (
"github.com/prometheus/client_golang/prometheus"
)
2023-01-10 12:15:51 +00:00
var (
2023-02-23 14:49:03 +00:00
metricsGridNum *prometheus.GaugeVec
2023-02-23 16:44:50 +00:00
metricsGridNumOfOrders *prometheus.GaugeVec
2023-02-23 14:49:03 +00:00
metricsGridNumOfMissingOrders *prometheus.GaugeVec
metricsGridOrderPrices *prometheus.GaugeVec
metricsGridProfit *prometheus.GaugeVec
2023-01-10 12:15:51 +00:00
)
func labelKeys(labels prometheus.Labels) []string {
var keys []string
for k := range labels {
keys = append(keys, k)
}
return keys
}
func mergeLabels(a, b prometheus.Labels) prometheus.Labels {
labels := prometheus.Labels{}
for k, v := range a {
labels[k] = v
}
for k, v := range b {
labels[k] = v
}
return labels
}
func initMetrics(extendedLabels []string) {
if metricsGridNum != nil {
return
}
2023-02-23 14:49:03 +00:00
metricsGridNum = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Name: "bbgo_grid2_num",
Help: "number of grids",
},
append([]string{
"exchange", // exchange name
"symbol", // symbol of the market
}, extendedLabels...),
)
2023-01-10 12:15:51 +00:00
metricsGridNumOfOrders = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Name: "bbgo_grid2_num_of_orders",
Help: "number of orders",
},
append([]string{
"exchange", // exchange name
"symbol", // symbol of the market
}, extendedLabels...),
)
2023-02-23 14:49:03 +00:00
metricsGridNumOfMissingOrders = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Name: "bbgo_grid2_num_of_missing_orders",
Help: "number of missing orders",
},
append([]string{
"exchange", // exchange name
"symbol", // symbol of the market
}, extendedLabels...),
)
2023-01-10 12:15:51 +00:00
metricsGridOrderPrices = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Name: "bbgo_grid2_order_prices",
Help: "order prices",
},
append([]string{
"exchange", // exchange name
"symbol", // symbol of the market
"ith",
"side",
2023-01-10 12:15:51 +00:00
}, extendedLabels...),
)
metricsGridProfit = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Name: "bbgo_grid2_grid_profit",
Help: "realized grid profit",
},
append([]string{
"exchange", // exchange name
"symbol", // symbol of the market
}, extendedLabels...),
)
}
2023-01-31 13:30:58 +00:00
var metricsRegistered = false
2023-01-10 12:15:51 +00:00
func registerMetrics() {
2023-01-31 13:30:58 +00:00
if metricsRegistered {
return
}
2023-02-23 16:44:50 +00:00
if metricsGridNum == nil {
// default setup
initMetrics(nil)
}
2023-01-10 12:15:51 +00:00
prometheus.MustRegister(
2023-02-23 14:49:03 +00:00
metricsGridNum,
2023-01-10 12:15:51 +00:00
metricsGridNumOfOrders,
2023-02-23 14:49:03 +00:00
metricsGridNumOfMissingOrders,
2023-01-10 12:15:51 +00:00
metricsGridProfit,
metricsGridOrderPrices,
)
2023-01-31 13:30:58 +00:00
metricsRegistered = true
}