package metrics

import (
	"github.com/prometheus/client_golang/prometheus"
	_ "github.com/zsais/go-gin-prometheus"
)

var (
	Namespace = "tcidm_regional"

	//HTTPReqDuration metric:http_request_duration_seconds
	HTTPReqDuration           *prometheus.HistogramVec
	DownstreamRequestDuration *prometheus.HistogramVec
)

func init() {
	// latency
	HTTPReqDuration = prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Namespace: Namespace,
		Subsystem: "http",
		Name:      "request_duration_ms",
		Help:      "The HTTP Serveer request latencies in seconds.",
		Buckets:   prometheus.ExponentialBucketsRange(1, 600000, 20), // 1ms~10min
	}, []string{"method", "path", "status"})

	DownstreamRequestDuration = prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Namespace: Namespace,
		Subsystem: "downstream",
		Name:      "request_duration_ms",
		Help:      "Downstream request latencies in seconds.",
		Buckets:   prometheus.ExponentialBucketsRange(1, 600000, 20), // 1ms~10min
	}, []string{"downstream", "action", "ok"})
}

func RegisterMetrics() {
	prometheus.MustRegister(
		HTTPReqDuration,
		DownstreamRequestDuration,
	)
}
