mirror of https://github.com/0xERR0R/blocky.git
37 lines
885 B
Go
37 lines
885 B
Go
package metrics
|
|
|
|
import (
|
|
"github.com/0xERR0R/blocky/config"
|
|
"github.com/0xERR0R/blocky/service"
|
|
"github.com/0xERR0R/blocky/util"
|
|
"github.com/prometheus/client_golang/prometheus/promhttp"
|
|
)
|
|
|
|
// Service implements service.HTTPService.
|
|
type Service struct {
|
|
service.SimpleHTTP
|
|
}
|
|
|
|
func NewService(cfg config.MetricsService, metricsCfg config.Metrics) *Service {
|
|
endpoints := util.ConcatSlices(
|
|
service.EndpointsFromAddrs(service.HTTPProtocol, cfg.Addrs.HTTP),
|
|
service.EndpointsFromAddrs(service.HTTPSProtocol, cfg.Addrs.HTTPS),
|
|
)
|
|
|
|
if !metricsCfg.Enable || len(endpoints) == 0 {
|
|
// Avoid setting up collectors and listeners
|
|
return new(Service)
|
|
}
|
|
|
|
s := &Service{
|
|
SimpleHTTP: service.NewSimpleHTTP("Metrics", endpoints),
|
|
}
|
|
|
|
s.Router().Handle(
|
|
metricsCfg.Path,
|
|
promhttp.InstrumentMetricHandler(reg, promhttp.HandlerFor(reg, promhttp.HandlerOpts{})),
|
|
)
|
|
|
|
return s
|
|
}
|