52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
|
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)
|
|||
|
}
|