first commit
This commit is contained in:
51
pkg/metrics/metrics.go
Normal file
51
pkg/metrics/metrics.go
Normal file
@ -0,0 +1,51 @@
|
||||
package metrics
|
||||
|
||||
import (
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
"github.com/spf13/cast"
|
||||
)
|
||||
|
||||
const (
|
||||
namespace = "bvbej"
|
||||
subsystem = "api"
|
||||
)
|
||||
|
||||
// metricsRequestsTotal metrics for request total 计数器(Counter)
|
||||
var metricsRequestsTotal = prometheus.NewCounterVec(
|
||||
prometheus.CounterOpts{
|
||||
Namespace: namespace,
|
||||
Subsystem: subsystem,
|
||||
Name: "requests_total",
|
||||
Help: "request(ms) total",
|
||||
},
|
||||
[]string{"method", "path"},
|
||||
)
|
||||
|
||||
// metricsRequestsCost metrics for requests cost 累积直方图(Histogram)
|
||||
var metricsRequestsCost = prometheus.NewHistogramVec(
|
||||
prometheus.HistogramOpts{
|
||||
Namespace: namespace,
|
||||
Subsystem: subsystem,
|
||||
Name: "requests_cost",
|
||||
Help: "request(ms) cost milliseconds",
|
||||
},
|
||||
[]string{"method", "path", "success"},
|
||||
)
|
||||
|
||||
func init() {
|
||||
prometheus.MustRegister(metricsRequestsTotal, metricsRequestsCost)
|
||||
}
|
||||
|
||||
// RecordMetrics 记录指标
|
||||
func RecordMetrics(method, uri string, success bool, costSeconds float64) {
|
||||
metricsRequestsTotal.With(prometheus.Labels{
|
||||
"method": method,
|
||||
"path": uri,
|
||||
}).Inc()
|
||||
|
||||
metricsRequestsCost.With(prometheus.Labels{
|
||||
"method": method,
|
||||
"path": uri,
|
||||
"success": cast.ToString(success),
|
||||
}).Observe(costSeconds)
|
||||
}
|
Reference in New Issue
Block a user