diff --git a/pkg/opni/cliutil/render_metrics.go b/pkg/opni/cliutil/render_metrics.go index cd2865da60..b6f37bdac8 100644 --- a/pkg/opni/cliutil/render_metrics.go +++ b/pkg/opni/cliutil/render_metrics.go @@ -122,13 +122,13 @@ func renderCortexServiceStatus(status *cortexadmin.CortexStatus) string { services := map[string]map[string]string{} - services["Distributor"] = servicesByName(status.Distributor) - services["Ingester"] = servicesByName(status.Ingester) - services["Ruler"] = servicesByName(status.Ruler) - services["Purger"] = servicesByName(status.Purger) - services["Compactor"] = servicesByName(status.Compactor) - services["Store Gateway"] = servicesByName(status.StoreGateway) - services["Querier"] = servicesByName(status.Querier) + services["Distributor"] = servicesByName(status.GetDistributor()) + services["Ingester"] = servicesByName(status.GetIngester()) + services["Ruler"] = servicesByName(status.GetRuler()) + services["Purger"] = servicesByName(status.GetPurger()) + services["Compactor"] = servicesByName(status.GetCompactor()) + services["Store Gateway"] = servicesByName(status.GetStoreGateway()) + services["Querier"] = servicesByName(status.GetQuerier()) moduleNames := []string{} for _, v := range services { diff --git a/pkg/resources/monitoring/cortex/helpers.go b/pkg/resources/monitoring/cortex/helpers.go index b4bc2f84c8..c783a9d778 100644 --- a/pkg/resources/monitoring/cortex/helpers.go +++ b/pkg/resources/monitoring/cortex/helpers.go @@ -524,6 +524,7 @@ type CortexServiceOptions struct { addHeadlessService bool publishNotReadyAddresses bool addServiceMonitor bool + targetLabelOverride string } type CortexServiceOption func(*CortexServiceOptions) @@ -547,6 +548,19 @@ func AddServiceMonitor() CortexServiceOption { } } +func WithTargetLabelOverride(override string) CortexServiceOption { + return func(o *CortexServiceOptions) { + o.targetLabelOverride = override + } +} + +func serviceOverride(componentOverride string, fallback string) string { + if componentOverride != "" { + return componentOverride + } + return fallback +} + func (r *Reconciler) buildCortexWorkloadServices( target string, opts ...CortexServiceOption, @@ -554,7 +568,9 @@ func (r *Reconciler) buildCortexWorkloadServices( options := CortexServiceOptions{} options.apply(opts...) - targetLabels := cortexWorkloadLabels(target) + targetLabels := cortexWorkloadLabels( + serviceOverride(options.targetLabelOverride, target), + ) httpPort := corev1.ServicePort{ Name: "http-metrics", diff --git a/pkg/resources/monitoring/cortex/services.go b/pkg/resources/monitoring/cortex/services.go index 50563dcaaf..c5dc7265e6 100644 --- a/pkg/resources/monitoring/cortex/services.go +++ b/pkg/resources/monitoring/cortex/services.go @@ -10,39 +10,52 @@ import ( ) func (r *Reconciler) services() []resources.Resource { + svcOpts := []CortexServiceOption{ + AddServiceMonitor(), + } + if targets := r.mc.Spec.Cortex.CortexWorkloads.GetTargets(); len(targets) == 1 && + lo.ValueOr(targets, all, nil) != nil { + svcOpts = append(svcOpts, WithTargetLabelOverride(all)) + } + resources := []resources.Resource{ r.memberlistService(), } - resources = append(resources, r.buildCortexWorkloadServices(alertmanager, - AddServiceMonitor(), + resources = append(resources, r.buildCortexWorkloadServices( + alertmanager, + svcOpts..., )...) - resources = append(resources, r.buildCortexWorkloadServices(compactor, - AddServiceMonitor(), + resources = append(resources, r.buildCortexWorkloadServices( + compactor, + svcOpts..., )...) - resources = append(resources, r.buildCortexWorkloadServices(purger, - AddServiceMonitor(), + resources = append(resources, r.buildCortexWorkloadServices( + purger, + svcOpts..., )...) - resources = append(resources, r.buildCortexWorkloadServices(distributor, - AddHeadlessService(true), - AddServiceMonitor(), + resources = append(resources, r.buildCortexWorkloadServices( + distributor, + append(svcOpts, AddHeadlessService(true))..., )...) - resources = append(resources, r.buildCortexWorkloadServices(ingester, - AddHeadlessService(false), - AddServiceMonitor(), + resources = append(resources, r.buildCortexWorkloadServices( + ingester, + append(svcOpts, AddHeadlessService(false))..., )...) - resources = append(resources, r.buildCortexWorkloadServices(querier, - AddServiceMonitor(), + resources = append(resources, r.buildCortexWorkloadServices( + querier, + svcOpts..., )...) - resources = append(resources, r.buildCortexWorkloadServices(queryFrontend, - AddHeadlessService(true), - AddServiceMonitor(), + resources = append(resources, r.buildCortexWorkloadServices( + queryFrontend, + append(svcOpts, AddHeadlessService(true))..., )...) - resources = append(resources, r.buildCortexWorkloadServices(ruler, - AddServiceMonitor(), + resources = append(resources, r.buildCortexWorkloadServices( + ruler, + svcOpts..., )...) - resources = append(resources, r.buildCortexWorkloadServices(storeGateway, - AddHeadlessService(false), - AddServiceMonitor(), + resources = append(resources, r.buildCortexWorkloadServices( + storeGateway, + append(svcOpts, AddHeadlessService(false))..., )...) return resources }