github.com/apex/up@v1.7.1/internal/cli/metrics/metrics.go (about) 1 package metrics 2 3 import ( 4 "time" 5 6 "github.com/pkg/errors" 7 "github.com/tj/kingpin" 8 9 "github.com/apex/up/internal/cli/root" 10 "github.com/apex/up/internal/stats" 11 "github.com/apex/up/internal/util" 12 ) 13 14 func init() { 15 cmd := root.Command("metrics", "Show project metrics.") 16 cmd.Example(`up metrics`, "Show metrics for staging environment.") 17 cmd.Example(`up metrics -s production`, "Show metrics for production environment.") 18 19 stage := cmd.Flag("stage", "Target stage name.").Short('s').Default("staging").String() 20 since := cmd.Flag("since", "Show metrics since duration (30s, 5m, 2h, 1h30m, 3d, 1M).").Short('S').Default("1M").String() 21 22 cmd.Action(func(_ *kingpin.ParseContext) error { 23 c, p, err := root.Init() 24 if err != nil { 25 return errors.Wrap(err, "initializing") 26 } 27 28 s, err := util.ParseDuration(*since) 29 if err != nil { 30 return errors.Wrap(err, "parsing --since duration") 31 } 32 33 region := c.Regions[0] 34 35 stats.Track("Metrics", map[string]interface{}{ 36 "stage": *stage, 37 "since": s.Round(time.Second), 38 }) 39 40 start := time.Now().UTC().Add(-s) 41 return p.ShowMetrics(region, *stage, start) 42 }) 43 }