@@ -114,6 +114,7 @@ func (r *MetricStorageReconciler) GetLogger(ctx context.Context) logr.Logger {
114114//+kubebuilder:rbac:groups=ovn.openstack.org,resources=ovnnorthds,verbs=get;list;watch
115115//+kubebuilder:rbac:groups=observability.openshift.io,resources=uiplugins,verbs=get;list;watch;create;patch
116116//+kubebuilder:rbac:groups=core,resources=configmaps,verbs=get;list;watch;create;update;patch;delete
117+ //+kubebuilder:rbac:groups=discovery.k8s.io,resources=endpointslices,verbs=get;list;watch
117118//+kubebuilder:rbac:groups=k8s.cni.cncf.io,resources=network-attachment-definitions,verbs=get;list;watch
118119
119120// Reconcile reconciles MetricStorage
@@ -763,9 +764,6 @@ func (r *MetricStorageReconciler) createScrapeConfigs(
763764 }
764765
765766 // ScrapeConfigs for RabbitMQ monitoring
766- // NOTE: We're watching Rabbits and reconciling with each of their change
767- // that should keep the targets inside the ScrapeConfig always
768- // up to date.
769767 rabbitList := & rabbitmqv1.RabbitmqClusterList {}
770768 listOpts := []client.ListOption {
771769 client .InNamespace (instance .GetNamespace ()),
@@ -774,22 +772,25 @@ func (r *MetricStorageReconciler) createScrapeConfigs(
774772 if err != nil && ! k8s_errors .IsNotFound (err ) {
775773 return ctrl.Result {}, err
776774 }
777- rabbitTargets := []string {}
778775 for _ , rabbit := range rabbitList .Items {
779- rabbitServerName := fmt .Sprintf ("%s.%s.svc" , rabbit .Name , rabbit .Namespace )
780- rabbitTargets = append (rabbitTargets , net .JoinHostPort (rabbitServerName , strconv .Itoa (metricstorage .RabbitMQPrometheusPort )))
781- }
782- rabbitCfgName := fmt .Sprintf ("%s-rabbitmq" , telemetry .ServiceName )
783- desiredScrapeConfig = metricstorage .ScrapeConfig (
784- instance ,
785- serviceLabels ,
786- rabbitTargets ,
787- instance .Spec .PrometheusTLS .Enabled (),
788- )
789- err = r .createServiceScrapeConfig (ctx , instance , Log , "RabbitMQ" ,
790- rabbitCfgName , desiredScrapeConfig )
791- if err != nil {
792- return ctrl.Result {}, err
776+ desiredScrapeConfig , err = metricstorage .ScrapeConfigRabbitMQ (
777+ ctx ,
778+ instance ,
779+ serviceLabels ,
780+ helper ,
781+ rabbit ,
782+ instance .Spec .PrometheusTLS .Enabled (),
783+ )
784+ if err != nil {
785+ Log .Info (fmt .Sprintf ("Cannot build rabbitMQ scrape config. Scrape configs not created. Error: %s" , err ))
786+ return ctrl.Result {}, err
787+ }
788+ rabbitCfgName := fmt .Sprintf ("%s-%s" , telemetry .ServiceName , rabbit .Name )
789+ err = r .createServiceScrapeConfig (ctx , instance , Log , "RabbitMQ" ,
790+ rabbitCfgName , desiredScrapeConfig )
791+ if err != nil {
792+ return ctrl.Result {}, err
793+ }
793794 }
794795
795796 // mysqld exporter
@@ -1594,10 +1595,6 @@ func (r *MetricStorageReconciler) SetupWithManager(ctx context.Context, mgr ctrl
15941595 handler .EnqueueRequestsFromMapFunc (r .nodeSetWatchFn ),
15951596 builder .WithPredicates (inventoryPredicator ),
15961597 ).
1597- Watches (
1598- & rabbitmqv1.RabbitmqCluster {},
1599- handler .EnqueueRequestsFromMapFunc (reconcileAllMetricStoragesWatchFn ),
1600- ).
16011598 Watches (
16021599 & ovnv1.OVNNorthd {},
16031600 handler .EnqueueRequestsFromMapFunc (reconcileAllMetricStoragesWatchFn ),
@@ -1608,6 +1605,18 @@ func (r *MetricStorageReconciler) SetupWithManager(ctx context.Context, mgr ctrl
16081605 handler .EnqueueRequestsFromMapFunc (reconcileAllMetricStoragesWatchFn ),
16091606 builder .WithPredicates (predicate.ResourceVersionChangedPredicate {}),
16101607 ).
1608+ Watches (
1609+ & discoveryv1.EndpointSlice {},
1610+ handler .EnqueueRequestsFromMapFunc (reconcileAllMetricStoragesWatchFn ),
1611+ builder .WithPredicates (
1612+ predicate.ResourceVersionChangedPredicate {},
1613+ // Don't call the WatchFn on unrelated Endpointslices changes
1614+ predicate .NewPredicateFuncs (func (o client.Object ) bool {
1615+ labels := o .GetLabels ()
1616+ return labels ["app.kubernetes.io/component" ] == "rabbitmq"
1617+ }),
1618+ ),
1619+ ).
16111620 Build (r )
16121621 r .Controller = control
16131622 return err
0 commit comments