2020-07-24 13:54:03 +00:00
|
|
|
package profiler
|
2020-07-10 14:17:51 +00:00
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
|
|
|
|
"github.com/prometheus/client_golang/prometheus/promhttp"
|
|
|
|
"github.com/spf13/viper"
|
|
|
|
"go.uber.org/zap"
|
|
|
|
)
|
|
|
|
|
|
|
|
// Metrics is an interface of metric tool.
|
|
|
|
type Metrics interface {
|
|
|
|
Start(ctx context.Context)
|
|
|
|
Stop()
|
|
|
|
}
|
|
|
|
|
|
|
|
const metricsKey = "metrics"
|
|
|
|
|
|
|
|
// NewMetrics is a metric tool's constructor.
|
|
|
|
func NewMetrics(l *zap.Logger, v *viper.Viper) Metrics {
|
|
|
|
if !v.GetBool(metricsKey + ".enabled") {
|
|
|
|
l.Debug("metrics server disabled")
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return newHTTPServer(httpParams{
|
|
|
|
Key: metricsKey,
|
|
|
|
Viper: v,
|
|
|
|
Logger: l,
|
|
|
|
Handler: promhttp.Handler(),
|
|
|
|
})
|
|
|
|
}
|