@@ -111,6 +111,7 @@ func (r *MetricStorageReconciler) GetLogger(ctx context.Context) logr.Logger {
111111//+kubebuilder:rbac:groups=ovn.openstack.org,resources=ovnnorthds,verbs=get;list;watch
112112//+kubebuilder:rbac:groups=observability.openshift.io,resources=uiplugins,verbs=get;list;watch;create;patch
113113//+kubebuilder:rbac:groups=core,resources=configmaps,verbs=get;list;watch;create;update;patch;delete
114+ //+kubebuilder:rbac:groups=discovery.k8s.io,resources=endpointslices,verbs=get;list;watch
114115//+kubebuilder:rbac:groups=k8s.cni.cncf.io,resources=network-attachment-definitions,verbs=get;list;watch
115116
116117// Reconcile reconciles MetricStorage
@@ -765,9 +766,6 @@ func (r *MetricStorageReconciler) createScrapeConfigs(
765766 }
766767
767768 // ScrapeConfigs for RabbitMQ monitoring
768- // NOTE: We're watching Rabbits and reconciling with each of their change
769- // that should keep the targets inside the ScrapeConfig always
770- // up to date.
771769 rabbitList := & rabbitmqv1.RabbitmqClusterList {}
772770 listOpts := []client.ListOption {
773771 client .InNamespace (instance .GetNamespace ()),
@@ -776,22 +774,25 @@ func (r *MetricStorageReconciler) createScrapeConfigs(
776774 if err != nil && ! k8s_errors .IsNotFound (err ) {
777775 return ctrl.Result {}, err
778776 }
779- rabbitTargets := []string {}
780777 for _ , rabbit := range rabbitList .Items {
781- rabbitServerName := fmt .Sprintf ("%s.%s.svc" , rabbit .Name , rabbit .Namespace )
782- rabbitTargets = append (rabbitTargets , net .JoinHostPort (rabbitServerName , strconv .Itoa (metricstorage .RabbitMQPrometheusPort )))
783- }
784- rabbitCfgName := fmt .Sprintf ("%s-rabbitmq" , telemetry .ServiceName )
785- desiredScrapeConfig = metricstorage .ScrapeConfig (
786- instance ,
787- serviceLabels ,
788- rabbitTargets ,
789- instance .Spec .PrometheusTLS .Enabled (),
790- )
791- err = r .createServiceScrapeConfig (ctx , instance , Log , "RabbitMQ" ,
792- rabbitCfgName , desiredScrapeConfig )
793- if err != nil {
794- return ctrl.Result {}, err
778+ desiredScrapeConfig , err = metricstorage .ScrapeConfigRabbitMQ (
779+ ctx ,
780+ instance ,
781+ serviceLabels ,
782+ helper ,
783+ rabbit ,
784+ instance .Spec .PrometheusTLS .Enabled (),
785+ )
786+ if err != nil {
787+ Log .Info (fmt .Sprintf ("Cannot build rabbitMQ scrape config. Scrape configs not created. Error: %s" , err ))
788+ return ctrl.Result {}, err
789+ }
790+ rabbitCfgName := fmt .Sprintf ("%s-%s" , telemetry .ServiceName , rabbit .Name )
791+ err = r .createServiceScrapeConfig (ctx , instance , Log , "RabbitMQ" ,
792+ rabbitCfgName , desiredScrapeConfig )
793+ if err != nil {
794+ return ctrl.Result {}, err
795+ }
795796 }
796797
797798 // mysqld exporter
@@ -1597,10 +1598,6 @@ func (r *MetricStorageReconciler) SetupWithManager(ctx context.Context, mgr ctrl
15971598 handler .EnqueueRequestsFromMapFunc (r .nodeSetWatchFn ),
15981599 builder .WithPredicates (inventoryPredicator ),
15991600 ).
1600- Watches (
1601- & rabbitmqv1.RabbitmqCluster {},
1602- handler .EnqueueRequestsFromMapFunc (reconcileAllMetricStoragesWatchFn ),
1603- ).
16041601 Watches (
16051602 & ovnv1.OVNNorthd {},
16061603 handler .EnqueueRequestsFromMapFunc (reconcileAllMetricStoragesWatchFn ),
@@ -1611,6 +1608,18 @@ func (r *MetricStorageReconciler) SetupWithManager(ctx context.Context, mgr ctrl
16111608 handler .EnqueueRequestsFromMapFunc (reconcileAllMetricStoragesWatchFn ),
16121609 builder .WithPredicates (predicate.ResourceVersionChangedPredicate {}),
16131610 ).
1611+ Watches (
1612+ & discoveryv1.EndpointSlice {},
1613+ handler .EnqueueRequestsFromMapFunc (reconcileAllMetricStoragesWatchFn ),
1614+ builder .WithPredicates (
1615+ predicate.ResourceVersionChangedPredicate {},
1616+ // Don't call the WatchFn on unrelated Endpointslices changes
1617+ predicate .NewPredicateFuncs (func (o client.Object ) bool {
1618+ labels := o .GetLabels ()
1619+ return labels ["app.kubernetes.io/component" ] == "rabbitmq"
1620+ }),
1621+ ),
1622+ ).
16141623 Build (r )
16151624 r .Controller = control
16161625 return err
0 commit comments