FILE / ScuroNeko/mtg

stats/stats.go

Исходный файл и его история в репозитории.
FILE 22905b2a25c3cad48f1a97a67b33986b1dc61697
Files
mtg/stats/stats.go
T
2019-10-11 09:41:18 +03:00

53 lines
930 B
Go

package stats
import (
"context"
"fmt"
"net"
"net/http"
"github.com/9seconds/mtg/config"
)
var Stats Interface
func Init(ctx context.Context) error {
mux := http.NewServeMux()
instancePrometheus, err := newStatsPrometheus(mux)
if err != nil {
return fmt.Errorf("cannot initialize prometheus: %w", err)
}
stats := []Interface{instancePrometheus}
if config.C.StatsdAddr != nil {
instanceStatsd, err := newStatsStatsd()
if err != nil {
return fmt.Errorf("cannot inialize statsd: %w", err)
}
stats = append(stats, instanceStatsd)
}
listener, err := net.Listen("tcp", config.C.StatsBind.String())
if err != nil {
return fmt.Errorf("cannot initialize stats server: %w", err)
}
srv := http.Server{
Handler: mux,
}
go srv.Serve(listener) // nolint: errcheck
go func() {
<-ctx.Done()
srv.Shutdown(context.Background()) // nolint: errcheck
}()
Stats = multiStats(stats)
return nil
}