| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- 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()
-
- stats := []Interface{newStatsPrometheus(mux)}
- if config.C.StatsdAddr != nil {
- stats = append(stats, newStatsStatsd())
- }
-
- 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
- }
|