in main.go [31:59]
func main() {
port := flag.Int("port", defaultPort, fmt.Sprintf("Port to listen for requests. Default is %d", defaultPort))
totalMetricsLimit := flag.Int("limit", defaultLimit, fmt.Sprintf("Limit the total metrics in the hub at one time. Will reject a push if hub is full. Default is %d which is no limit.", defaultLimit))
scrapeTimeout := flag.Int("scrapeTimeout", defaultScrapeTimeout, fmt.Sprintf("Timeout for scrape calls. Default is %d", defaultScrapeTimeout))
grpcPort := flag.Int("grpc-port", defaultGRPCPort, fmt.Sprintf("Port to listen for GRPC requests"))
grpcMaxGRPCMsgSizeBytes := flag.Int("grpc-max-msg-size", defaultMaxGRPCMsgSizeBytes, fmt.Sprintf("Max message size (bytes) for GRPC receives"))
flag.Parse()
metricHub := hub.NewMetricHub(*totalMetricsLimit, *scrapeTimeout)
e := echo.New()
e.POST("/metrics", metricHub.Receive)
e.GET("/metrics", metricHub.Scrape)
e.GET("/debug", metricHub.Debug)
// For liveness probe
e.GET("/", func(ctx echo.Context) error { return ctx.NoContent(http.StatusOK) })
e.GET("/internal", serveInternalMetrics)
if *grpcPort != 0 {
go func() {
log.Fatal(serveGRPC(*grpcPort, *grpcMaxGRPCMsgSizeBytes, metricHub))
}()
}
go e.Logger.Fatal(e.Start(fmt.Sprintf(":%d", *port)))
}