github.com/devdivbcp/moby@v17.12.0-ce-rc1.0.20200726071732-2d4bfdc789ad+incompatible/cmd/dockerd/metrics.go (about) 1 package main 2 3 import ( 4 "net" 5 "net/http" 6 7 "github.com/docker/go-metrics" 8 "github.com/pkg/errors" 9 "github.com/sirupsen/logrus" 10 ) 11 12 func (cli *DaemonCli) startMetricsServer(addr string) error { 13 if addr == "" { 14 return nil 15 } 16 17 if !cli.d.HasExperimental() { 18 return errors.New("metrics-addr is only supported when experimental is enabled") 19 } 20 21 if err := allocateDaemonPort(addr); err != nil { 22 return err 23 } 24 l, err := net.Listen("tcp", addr) 25 if err != nil { 26 return err 27 } 28 mux := http.NewServeMux() 29 mux.Handle("/metrics", metrics.Handler()) 30 go func() { 31 if err := http.Serve(l, mux); err != nil { 32 logrus.Errorf("serve metrics api: %s", err) 33 } 34 }() 35 return nil 36 }