package metrics import ( "net/http" "github.com/nspcc-dev/neo-go/pkg/config" "github.com/prometheus/client_golang/prometheus/promhttp" "go.uber.org/zap" ) // PrometheusService https://prometheus.io/docs/guides/go-application. type PrometheusService Service // NewPrometheusService creates a new service for gathering prometheus metrics. func NewPrometheusService(cfg config.BasicService, log *zap.Logger) *Service { if log == nil { return nil } addrs := cfg.Addresses srvs := make([]*http.Server, len(addrs)) for i, addr := range addrs { srvs[i] = &http.Server{ Addr: addr, Handler: promhttp.Handler(), // share metrics between multiple prometheus handlers } } return NewService("Prometheus", srvs, cfg, log) }