github.com/orteth01/up@v0.2.0/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  )
    12  
    13  func init() {
    14  	cmd := root.Command("metrics", "Show project metrics.")
    15  	cmd.Example(`up metrics`, "Show metrics for development stage.")
    16  	cmd.Example(`up metrics production`, "Show metrics for production stage.")
    17  
    18  	stage := cmd.Arg("stage", "Name of the stage.").Default("development").String()
    19  	since := cmd.Flag("since", "Show logs since duration (30s, 5m, 2h, 1h30m).").Short('s').Default("24h").Duration()
    20  
    21  	cmd.Action(func(_ *kingpin.ParseContext) error {
    22  		c, p, err := root.Init()
    23  		if err != nil {
    24  			return errors.Wrap(err, "initializing")
    25  		}
    26  
    27  		region := c.Regions[0]
    28  
    29  		stats.Track("Metrics", map[string]interface{}{
    30  			"stage": *stage,
    31  			"since": since.Round(time.Second),
    32  		})
    33  
    34  		start := time.Now().UTC().Add(-*since)
    35  		return p.ShowMetrics(region, *stage, start)
    36  	})
    37  }