diff --git a/pkg/loki/loki.go b/pkg/loki/loki.go index d19ab4c55751..5e9bec80f713 100644 --- a/pkg/loki/loki.go +++ b/pkg/loki/loki.go @@ -423,7 +423,10 @@ func (t *Loki) setupModuleManager() error { mm.RegisterModule(Compactor, t.initCompactor) mm.RegisterModule(IndexGateway, t.initIndexGateway) mm.RegisterModule(QueryScheduler, t.initQueryScheduler) + mm.RegisterModule(All, nil) + mm.RegisterModule(Read, nil) + mm.RegisterModule(Write, nil) // Add dependencies deps := map[string][]string{ @@ -443,6 +446,8 @@ func (t *Loki) setupModuleManager() error { IndexGateway: {Server}, IngesterQuerier: {Ring}, All: {QueryScheduler, QueryFrontend, Querier, Ingester, Distributor, Ruler}, + Read: {QueryScheduler, QueryFrontend, Querier, Ruler}, + Write: {Ingester, Distributor}, } // Add IngesterQuerier as a dependency for store when target is either ingester or querier. diff --git a/pkg/loki/modules.go b/pkg/loki/modules.go index 10fa75a2a2da..7b904f73f121 100644 --- a/pkg/loki/modules.go +++ b/pkg/loki/modules.go @@ -80,6 +80,8 @@ const ( IndexGateway string = "index-gateway" QueryScheduler string = "query-scheduler" All string = "all" + Read string = "read" + Write string = "write" ) func (t *Loki) initServer() (services.Service, error) { @@ -178,7 +180,7 @@ func (t *Loki) initDistributor() (services.Service, error) { // Register the distributor to receive Push requests over GRPC // EXCEPT when running with `-target=all` or `-target=` contains `ingester` - if !t.Cfg.isModuleEnabled(All) && !t.Cfg.isModuleEnabled(Ingester) { + if !t.Cfg.isModuleEnabled(All) && !t.Cfg.isModuleEnabled(Write) && !t.Cfg.isModuleEnabled(Ingester) { logproto.RegisterPusherServer(t.Server.GRPC, t.distributor) } @@ -205,6 +207,7 @@ func (t *Loki) initQuerier() (services.Service, error) { querierWorkerServiceConfig := querier.WorkerServiceConfig{ AllEnabled: t.Cfg.isModuleEnabled(All), + ReadEnabled: t.Cfg.isModuleEnabled(Read), GrpcListenPort: t.Cfg.Server.GRPCListenPort, QuerierMaxConcurrent: t.Cfg.Querier.MaxConcurrent, QuerierWorkerConfig: &t.Cfg.Worker, diff --git a/pkg/querier/worker_service.go b/pkg/querier/worker_service.go index 4fff395ee122..697abb0b66e3 100644 --- a/pkg/querier/worker_service.go +++ b/pkg/querier/worker_service.go @@ -21,6 +21,7 @@ import ( type WorkerServiceConfig struct { AllEnabled bool + ReadEnabled bool GrpcListenPort int QuerierMaxConcurrent int QuerierWorkerConfig *querier_worker.Config @@ -144,12 +145,13 @@ func registerRoutesExternally(routes []string, externalRouter *mux.Router, inter } func querierRunningStandalone(cfg WorkerServiceConfig) bool { - runningStandalone := !cfg.QueryFrontendEnabled && !cfg.QuerySchedulerEnabled && !cfg.AllEnabled + runningStandalone := !cfg.QueryFrontendEnabled && !cfg.QuerySchedulerEnabled && !cfg.ReadEnabled && !cfg.AllEnabled level.Debug(util_log.Logger).Log( "msg", "determining if querier is running as standalone target", "runningStandalone", runningStandalone, "queryFrontendEnabled", cfg.QueryFrontendEnabled, "queryScheduleEnabled", cfg.QuerySchedulerEnabled, + "readEnabled", cfg.ReadEnabled, "allEnabled", cfg.AllEnabled, )