MCPcopy Index your code
hub / github.com/cortexproject/cortex / Run

Method Run

pkg/cortex/cortex.go:430–523  ·  view source on GitHub ↗

Run starts Cortex running, and blocks until a Cortex stops.

()

Source from the content-addressed store, hash-verified

428
429// Run starts Cortex running, and blocks until a Cortex stops.
430func (t *Cortex) Run() error {
431 // Register custom process metrics.
432 if c, err := process.NewProcessCollector(); err == nil {
433 prometheus.MustRegister(c)
434 } else {
435 level.Warn(util_log.Logger).Log("msg", "skipped registration of custom process metrics collector", "err", err)
436 }
437
438 for _, module := range t.Cfg.Target {
439 if !t.ModuleManager.IsUserVisibleModule(module) {
440 level.Warn(util_log.Logger).Log("msg", "selected target is an internal module, is this intended?", "target", module)
441 }
442 }
443
444 var err error
445 t.ServiceMap, err = t.ModuleManager.InitModuleServices(t.Cfg.Target...)
446 if err != nil {
447 return err
448 }
449
450 t.API.RegisterServiceMapHandler(http.HandlerFunc(t.servicesHandler))
451
452 // get all services, create service manager and tell it to start
453 servs := []services.Service(nil)
454 for _, s := range t.ServiceMap {
455 servs = append(servs, s)
456 }
457
458 sm, err := services.NewManager(servs...)
459 if err != nil {
460 return err
461 }
462
463 // before starting servers, register /ready handler and gRPC health check service.
464 // It should reflect entire Cortex.
465 t.Server.HTTP.Path("/ready").Handler(t.readyHandler(sm))
466 grpc_health_v1.RegisterHealthServer(t.Server.GRPC, grpcutil.NewHealthCheck(sm))
467
468 // Let's listen for events from this manager, and log them.
469 healthy := func() { level.Info(util_log.Logger).Log("msg", "Cortex started") }
470 stopped := func() { level.Info(util_log.Logger).Log("msg", "Cortex stopped") }
471 serviceFailed := func(service services.Service) {
472 // if any service fails, stop entire Cortex
473 sm.StopAsync()
474
475 // let's find out which module failed
476 for m, s := range t.ServiceMap {
477 if s == service {
478 if service.FailureCase() == modules.ErrStopProcess {
479 level.Info(util_log.Logger).Log("msg", "received stop signal via return error", "module", m, "err", service.FailureCase())
480 } else {
481 level.Error(util_log.Logger).Log("msg", "module failed", "module", m, "err", service.FailureCase())
482 }
483 return
484 }
485 }
486
487 level.Error(util_log.Logger).Log("msg", "module failed", "module", "unknown", "err", service.FailureCase())

Callers

nothing calls this directly

Calls 15

readyHandlerMethod · 0.95
StopAsyncMethod · 0.95
AddListenerMethod · 0.95
StartAsyncMethod · 0.95
AwaitStoppedMethod · 0.95
ServicesByStateMethod · 0.95
NewProcessCollectorFunction · 0.92
NewManagerFunction · 0.92
NewHealthCheckFunction · 0.92
NewManagerListenerFunction · 0.92
IsUserVisibleModuleMethod · 0.80
InitModuleServicesMethod · 0.80

Tested by

no test coverage detected