feat: Make configurable
This commit is contained in:
		
							parent
							
								
									5e162b4be5
								
							
						
					
					
						commit
						e2d05a2afe
					
				
							
								
								
									
										4
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.mod
									
									
									
									
									
								
							| @ -6,11 +6,13 @@ require ( | ||||
| 	github.com/go-co-op/gocron/v2 v2.2.4 | ||||
| 	github.com/prometheus/client_golang v1.18.0 | ||||
| 	github.com/sirupsen/logrus v1.9.3 | ||||
| 	github.com/urfave/cli/v2 v2.27.1 | ||||
| ) | ||||
| 
 | ||||
| require ( | ||||
| 	github.com/beorn7/perks v1.0.1 // indirect | ||||
| 	github.com/cespare/xxhash/v2 v2.2.0 // indirect | ||||
| 	github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect | ||||
| 	github.com/google/uuid v1.6.0 // indirect | ||||
| 	github.com/jonboulle/clockwork v0.4.0 // indirect | ||||
| 	github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect | ||||
| @ -18,6 +20,8 @@ require ( | ||||
| 	github.com/prometheus/common v0.45.0 // indirect | ||||
| 	github.com/prometheus/procfs v0.12.0 // indirect | ||||
| 	github.com/robfig/cron/v3 v3.0.1 // indirect | ||||
| 	github.com/russross/blackfriday/v2 v2.1.0 // indirect | ||||
| 	github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect | ||||
| 	golang.org/x/exp v0.0.0-20231219180239-dc181d75b848 // indirect | ||||
| 	golang.org/x/sys v0.15.0 // indirect | ||||
| 	google.golang.org/protobuf v1.31.0 // indirect | ||||
|  | ||||
							
								
								
									
										8
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								go.sum
									
									
									
									
									
								
							| @ -2,6 +2,8 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= | ||||
| github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= | ||||
| github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= | ||||
| github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= | ||||
| github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= | ||||
| github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= | ||||
| github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | ||||
| github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| @ -29,12 +31,18 @@ github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k | ||||
| github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= | ||||
| github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= | ||||
| github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= | ||||
| github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= | ||||
| github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= | ||||
| github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= | ||||
| github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= | ||||
| github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||
| github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | ||||
| github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= | ||||
| github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= | ||||
| github.com/urfave/cli/v2 v2.27.1 h1:8xSQ6szndafKVRmfyeUMxkNUJQMjL1F2zmsZ+qHpfho= | ||||
| github.com/urfave/cli/v2 v2.27.1/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= | ||||
| github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= | ||||
| github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= | ||||
| go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= | ||||
| go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= | ||||
| golang.org/x/exp v0.0.0-20231219180239-dc181d75b848 h1:+iq7lrkxmFNBM7xx+Rae2W6uyPfhPeDWD+n+JgppptE= | ||||
|  | ||||
							
								
								
									
										52
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										52
									
								
								main.go
									
									
									
									
									
								
							| @ -2,13 +2,16 @@ package main | ||||
| 
 | ||||
| import ( | ||||
| 	"encoding/json" | ||||
| 	"fmt" | ||||
| 	"io" | ||||
| 	"net/http" | ||||
| 	"os" | ||||
| 	"sync" | ||||
| 
 | ||||
| 	"github.com/go-co-op/gocron/v2" | ||||
| 	"github.com/prometheus/client_golang/prometheus" | ||||
| 	"github.com/prometheus/client_golang/prometheus/promhttp" | ||||
| 	"github.com/urfave/cli/v2" | ||||
| 
 | ||||
| 	log "github.com/sirupsen/logrus" | ||||
| ) | ||||
| @ -142,8 +145,12 @@ func ingestHandler(registry *prometheus.Registry, state *State) http.HandlerFunc | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func main() { | ||||
| 	log.SetLevel(log.DebugLevel) | ||||
| func run(ctx *cli.Context) error { | ||||
| 	host := ctx.String("host") | ||||
| 	port := ctx.String("port") | ||||
| 	if ctx.Bool("debug") { | ||||
| 		log.SetLevel(log.DebugLevel) | ||||
| 	} | ||||
| 
 | ||||
| 	// Setup metrics
 | ||||
| 	registry := prometheus.NewRegistry() | ||||
| @ -154,8 +161,8 @@ func main() { | ||||
| 	// Setup the scheduler
 | ||||
| 	scheduler, err := gocron.NewScheduler() | ||||
| 	if err != nil { | ||||
| 		log.Fatalf("Failed to create scheduler: %v", err) | ||||
| 		return | ||||
| 		log.Error("Failed to create scheduler") | ||||
| 		return err | ||||
| 	} | ||||
| 	_, err = scheduler.NewJob( | ||||
| 		gocron.DailyJob(1, gocron.NewAtTimes(gocron.NewAtTime(0, 0, 0))), | ||||
| @ -185,8 +192,8 @@ func main() { | ||||
| 		), | ||||
| 	) | ||||
| 	if err != nil { | ||||
| 		log.Fatalf("Failed to create task: %v", err) | ||||
| 		return | ||||
| 		log.Fatalf("Failed to create task") | ||||
| 		return err | ||||
| 	} | ||||
| 	scheduler.Start() | ||||
| 
 | ||||
| @ -202,7 +209,36 @@ func main() { | ||||
| 	http.Handle( | ||||
| 		"/track", ingestHandler(registry, &state), | ||||
| 	) | ||||
| 	addr := "127.0.0.1:9999" | ||||
| 	addr := fmt.Sprintf("%s:%s", host, port) | ||||
| 	log.Infof("Starting server at %s", addr) | ||||
| 	http.ListenAndServe(addr, nil) | ||||
| 	return http.ListenAndServe(addr, nil) | ||||
| } | ||||
| 
 | ||||
| func main() { | ||||
| 	app := &cli.App{ | ||||
| 		Action: run, | ||||
| 		Flags: []cli.Flag{ | ||||
| 			&cli.StringFlag{ | ||||
| 				Name:    "host", | ||||
| 				Usage:   "Host to expose metrics on", | ||||
| 				Value:   "127.0.0.1", | ||||
| 				EnvVars: []string{"HTTP_HOST"}, | ||||
| 			}, | ||||
| 			&cli.StringFlag{ | ||||
| 				Name:    "port", | ||||
| 				Usage:   "Port to expose metrics on", | ||||
| 				Value:   "9999", | ||||
| 				EnvVars: []string{"HTTP_PORT"}, | ||||
| 			}, | ||||
| 			&cli.BoolFlag{ | ||||
| 				Name:    "debug", | ||||
| 				Usage:   "Enable verbose logging", | ||||
| 				Value:   false, | ||||
| 				EnvVars: []string{"DEBUG"}, | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
| 	if err := app.Run(os.Args); err != nil { | ||||
| 		log.Fatal(err) | ||||
| 	} | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user