diff --git a/CHANGELOG.md b/CHANGELOG.md index b748b3d5db..1664234f29 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## master / unreleased +* [CHANGE] Enable Compactor and Alertmanager in target all. #6204 * [FEATURE] Ruler: Experimental: Add `ruler.frontend-address` to allow query to query frontends instead of ingesters. #6151 * [FEATURE] Ruler: Minimize chances of missed rule group evaluations that can occur due to OOM kills, bad underlying nodes, or due to an unhealthy ruler that appears in the ring as healthy. This feature is enabled via `-ruler.enable-ha-evaluation` flag. #6129 * [ENHANCEMENT] Query Frontend: Add peakSample in query stats response. #6188 diff --git a/pkg/cortex/cortex_test.go b/pkg/cortex/cortex_test.go index 891f860898..5031f1aaf0 100644 --- a/pkg/cortex/cortex_test.go +++ b/pkg/cortex/cortex_test.go @@ -12,10 +12,6 @@ import ( "testing" "time" - "github.com/cortexproject/cortex/pkg/cortex/storage" - "github.com/cortexproject/cortex/pkg/ruler/rulestore" - "github.com/cortexproject/cortex/pkg/ruler/rulestore/local" - "github.com/prometheus/client_golang/prometheus" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -24,14 +20,20 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" + "github.com/cortexproject/cortex/pkg/alertmanager" + "github.com/cortexproject/cortex/pkg/alertmanager/alertstore" + "github.com/cortexproject/cortex/pkg/cortex/storage" "github.com/cortexproject/cortex/pkg/frontend/v1/frontendv1pb" "github.com/cortexproject/cortex/pkg/ingester" "github.com/cortexproject/cortex/pkg/ring" "github.com/cortexproject/cortex/pkg/ring/kv" + "github.com/cortexproject/cortex/pkg/ruler/rulestore" + "github.com/cortexproject/cortex/pkg/ruler/rulestore/local" "github.com/cortexproject/cortex/pkg/scheduler/schedulerpb" "github.com/cortexproject/cortex/pkg/storage/bucket" "github.com/cortexproject/cortex/pkg/storage/bucket/s3" "github.com/cortexproject/cortex/pkg/storage/tsdb" + "github.com/cortexproject/cortex/pkg/util/flagext" "github.com/cortexproject/cortex/pkg/util/services" ) @@ -92,10 +94,23 @@ func TestCortex(t *testing.T) { Directory: os.TempDir(), }, }, - - Target: []string{All, Compactor}, + AlertmanagerStorage: alertstore.Config{ + Config: bucket.Config{ + Backend: "local", + }, + }, + Target: []string{All}, } + externalURL := flagext.URLValue{} + err := externalURL.Set("http://localhost/api/prom") + require.NoError(t, err) + + multiAlertmanagerCfg := &alertmanager.MultitenantAlertmanagerConfig{} + flagext.DefaultValues(multiAlertmanagerCfg) + multiAlertmanagerCfg.ExternalURL = externalURL + cfg.Alertmanager = *multiAlertmanagerCfg + c, err := New(cfg) require.NoError(t, err) @@ -114,8 +129,9 @@ func TestCortex(t *testing.T) { require.NotNil(t, serviceMap[Ring]) require.NotNil(t, serviceMap[DistributorService]) - // check that compactor is configured which is not part of Target=All + // check compactor and alertmanager are configured. require.NotNil(t, serviceMap[Compactor]) + require.NotNil(t, serviceMap[AlertManager]) } func TestConfigValidation(t *testing.T) { diff --git a/pkg/cortex/modules.go b/pkg/cortex/modules.go index 9e72894f9e..c46e3fdd9d 100644 --- a/pkg/cortex/modules.go +++ b/pkg/cortex/modules.go @@ -646,7 +646,8 @@ func (t *Cortex) initAlertManager() (serv services.Service, err error) { return } - t.API.RegisterAlertmanager(t.Alertmanager, t.Cfg.isModuleEnabled(AlertManager), t.Cfg.Alertmanager.EnableAPI) + apiEnabled := t.Cfg.isModuleEnabled(AlertManager) || t.Cfg.isModuleEnabled(All) + t.API.RegisterAlertmanager(t.Alertmanager, apiEnabled, t.Cfg.Alertmanager.EnableAPI) return t.Alertmanager, nil } @@ -788,7 +789,7 @@ func (t *Cortex) setupModuleManager() error { TenantDeletion: {API, Overrides}, Purger: {TenantDeletion}, TenantFederation: {Queryable}, - All: {QueryFrontend, Querier, Ingester, Distributor, Purger, StoreGateway, Ruler}, + All: {QueryFrontend, Querier, Ingester, Distributor, Purger, StoreGateway, Ruler, Compactor, AlertManager}, } if t.Cfg.ExternalPusher != nil && t.Cfg.ExternalQueryable != nil { deps[Ruler] = []string{Overrides, RulerStorage}