()
| 22 | } |
| 23 | |
| 24 | func main() { |
| 25 | // Parse CLI flags. |
| 26 | cfg := Config{} |
| 27 | flag.IntVar(&cfg.ServerMetricsPort, "server.metrics-port", 9900, "The port where metrics are exposed.") |
| 28 | flag.StringVar(&cfg.PathPrefix, "server.path-prefix", "", "Prefix for API paths (query-tee will accept Prometheus API calls at <prefix>/api/v1/...)") |
| 29 | cfg.LogLevel.RegisterFlags(flag.CommandLine) |
| 30 | cfg.ProxyConfig.RegisterFlags(flag.CommandLine) |
| 31 | flag.Parse() |
| 32 | |
| 33 | util_log.InitLogger(&server.Config{ |
| 34 | LogLevel: cfg.LogLevel, |
| 35 | }) |
| 36 | |
| 37 | // Run the instrumentation server. |
| 38 | registry := prometheus.NewRegistry() |
| 39 | registry.MustRegister(collectors.NewGoCollector()) |
| 40 | |
| 41 | i := querytee.NewInstrumentationServer(cfg.ServerMetricsPort, registry) |
| 42 | if err := i.Start(); err != nil { |
| 43 | level.Error(util_log.Logger).Log("msg", "Unable to start instrumentation server", "err", err.Error()) |
| 44 | os.Exit(1) |
| 45 | } |
| 46 | |
| 47 | // Run the proxy. |
| 48 | proxy, err := querytee.NewProxy(cfg.ProxyConfig, util_log.Logger, cortexReadRoutes(cfg), registry) |
| 49 | if err != nil { |
| 50 | level.Error(util_log.Logger).Log("msg", "Unable to initialize the proxy", "err", err.Error()) |
| 51 | os.Exit(1) |
| 52 | } |
| 53 | |
| 54 | if err := proxy.Start(); err != nil { |
| 55 | level.Error(util_log.Logger).Log("msg", "Unable to start the proxy", "err", err.Error()) |
| 56 | os.Exit(1) |
| 57 | } |
| 58 | |
| 59 | proxy.Await() |
| 60 | } |
| 61 | |
| 62 | func cortexReadRoutes(cfg Config) []querytee.Route { |
| 63 | prefix := cfg.PathPrefix |
nothing calls this directly
no test coverage detected