@@ -897,6 +897,12 @@ func (r *MetricStorageReconciler) createScrapeConfigs(
897897 return ctrl.Result {}, err
898898 }
899899
900+ // ScrapeConfig for InstanceHA metrics
901+ err = r .createInstanceHAScrapeConfig (ctx , instance , helper , serviceLabels )
902+ if err != nil {
903+ return ctrl.Result {}, err
904+ }
905+
900906 instance .Status .Conditions .MarkTrue (telemetryv1 .ScrapeConfigReadyCondition , condition .ReadyMessage )
901907 return ctrl.Result {}, nil
902908}
@@ -1112,6 +1118,25 @@ func (r *MetricStorageReconciler) createOVSDBServerSBScrapeConfig(
11121118 )
11131119}
11141120
1121+ // createInstanceHAScrapeConfig creates a scrape configuration for InstanceHA metrics
1122+ // This function discovers InstanceHA metrics services using label selectors
1123+ func (r * MetricStorageReconciler ) createInstanceHAScrapeConfig (
1124+ ctx context.Context ,
1125+ instance * telemetryv1.MetricStorage ,
1126+ helper * helper.Helper ,
1127+ serviceLabels map [string ]string ,
1128+ ) error {
1129+ labelSelector := map [string ]string {
1130+ "metrics" : "enabled" ,
1131+ "service" : "instanceha" ,
1132+ }
1133+ instancehaCfgName := fmt .Sprintf ("%s-instanceha" , telemetry .ServiceName )
1134+ return r .createServiceScrapeConfigFromLabelSelector (
1135+ ctx , instance , helper , serviceLabels ,
1136+ labelSelector , "metrics" , instancehaCfgName , "InstanceHA" ,
1137+ )
1138+ }
1139+
11151140func (r * MetricStorageReconciler ) createDashboardObjects (ctx context.Context , instance * telemetryv1.MetricStorage , helper * helper.Helper , eventHandler handler.EventHandler , serviceLabels map [string ]string ) (ctrl.Result , error ) {
11161141 Log := r .GetLogger (ctx )
11171142 uiPluginObj := & obsui.UIPlugin {
@@ -1492,13 +1517,11 @@ func (r *MetricStorageReconciler) SetupWithManager(ctx context.Context, mgr ctrl
14921517 return nil
14931518 }
14941519
1495- ovnMetricsServiceWatchFn := func (_ context.Context , o client.Object ) []reconcile.Request {
1520+ metricsServiceWatchFn := func (_ context.Context , o client.Object ) []reconcile.Request {
14961521 result := []reconcile.Request {}
14971522
1498- // Watch OVN metrics services
14991523 if labels := o .GetLabels (); labels != nil {
1500- if labels ["metrics" ] == "enabled" && (labels ["service" ] == "ovn-northd" || labels ["service" ] == "ovn-controller-metrics" || labels ["service" ] == "ovsdbserver-nb" || labels ["service" ] == "ovsdbserver-sb" ) {
1501- // get all metricstorage CRs in the same namespace
1524+ if labels ["metrics" ] == "enabled" && (labels ["service" ] == "ovn-northd" || labels ["service" ] == "ovn-controller-metrics" || labels ["service" ] == "ovsdbserver-nb" || labels ["service" ] == "ovsdbserver-sb" || labels ["service" ] == "instanceha" ) {
15021525 metricStorages := & telemetryv1.MetricStorageList {}
15031526 listOpts := []client.ListOption {
15041527 client .InNamespace (o .GetNamespace ()),
@@ -1513,7 +1536,7 @@ func (r *MetricStorageReconciler) SetupWithManager(ctx context.Context, mgr ctrl
15131536 Namespace : o .GetNamespace (),
15141537 Name : cr .Name ,
15151538 }
1516- Log .Info (fmt .Sprintf ("OVN metrics service %s changed, reconciling MetricStorage CR %s" , o .GetName (), cr .Name ))
1539+ Log .Info (fmt .Sprintf ("Metrics service %s changed, reconciling MetricStorage CR %s" , o .GetName (), cr .Name ))
15171540 result = append (result , reconcile.Request {NamespacedName : name })
15181541 }
15191542 }
@@ -1587,7 +1610,7 @@ func (r *MetricStorageReconciler) SetupWithManager(ctx context.Context, mgr ctrl
15871610 Watches (& corev1.Service {},
15881611 handler .EnqueueRequestsFromMapFunc (prometheusServiceWatchFn )).
15891612 Watches (& corev1.Service {},
1590- handler .EnqueueRequestsFromMapFunc (ovnMetricsServiceWatchFn )).
1613+ handler .EnqueueRequestsFromMapFunc (metricsServiceWatchFn )).
15911614 Watches (
15921615 & corev1.Secret {},
15931616 handler .EnqueueRequestsFromMapFunc (r .findObjectsForSrc ),
0 commit comments