@@ -617,69 +617,6 @@ func (r *MetricStorageReconciler) createScrapeConfigs(
617617 return ctrl.Result {}, err
618618 }
619619
620- connectionInfo , err := getComputeNodesConnectionInfo (instance , helper , telemetry .ServiceName )
621- if err != nil {
622- Log .Info (fmt .Sprintf ("Cannot get compute node connection info. Scrape configs not created. Error: %s" , err ))
623- }
624-
625- // ScrapeConfigs for NodeExporters
626- neTargetsTLS , neTargetsNonTLS := getNodeExporterTargets (connectionInfo )
627- // ScrapeConfig for non-tls nodes
628- neServiceName := fmt .Sprintf ("%s-node-exporter" , telemetry .ServiceName )
629- desiredScrapeConfig = metricstorage .ScrapeConfig (
630- instance ,
631- serviceLabels ,
632- neTargetsNonTLS ,
633- false ,
634- )
635- err = r .createServiceScrapeConfig (ctx , instance , Log , "Node Exporter" ,
636- neServiceName , desiredScrapeConfig )
637- if err != nil {
638- return ctrl.Result {}, err
639- }
640-
641- // ScrapeConfig for tls nodes
642- neServiceName = fmt .Sprintf ("%s-node-exporter-tls" , telemetry .ServiceName )
643- desiredScrapeConfig = metricstorage .ScrapeConfig (
644- instance ,
645- serviceLabels ,
646- neTargetsTLS ,
647- true ,
648- )
649- err = r .createServiceScrapeConfig (ctx , instance , Log , "Node Exporter" ,
650- neServiceName , desiredScrapeConfig )
651- if err != nil {
652- return ctrl.Result {}, err
653- }
654-
655- connectionInfo , err = getComputeNodesConnectionInfo (instance , helper , telemetryv1 .TelemetryPowerMonitoring )
656- if err != nil {
657- Log .Info (fmt .Sprintf ("Cannot get compute node connection info. Scrape configs not created. Error: %s" , err ))
658- }
659-
660- // kepler scrape endpoints
661- keplerEndpoints , _ := getKeplerTargets (connectionInfo )
662- if err != nil {
663- Log .Info (fmt .Sprintf ("Cannot get Kepler targets. Scrape configs not created. Error: %s" , err ))
664- }
665-
666- // keplerEndpoint is reported as empty slice when telemetry-power-monitoring service is not enabled
667- if len (keplerEndpoints ) > 0 {
668- // Kepler ScrapeConfig for non-tls nodes
669- keplerServiceName := fmt .Sprintf ("%s-kepler" , telemetry .ServiceName )
670- desiredScrapeConfig = metricstorage .ScrapeConfig (
671- instance ,
672- serviceLabels ,
673- keplerEndpoints ,
674- false ,
675- )
676- err = r .createServiceScrapeConfig (ctx , instance , Log , "Kepler" ,
677- keplerServiceName , desiredScrapeConfig ) // Currently Kepler doesn't support TLS so tlsEnabled is set to false
678- if err != nil {
679- return ctrl.Result {}, err
680- }
681- }
682-
683620 // mysqld exporter
684621 ceilometerNamespacedName := types.NamespacedName {
685622 Name : ceilometer .ServiceName ,
@@ -728,16 +665,30 @@ func (r *MetricStorageReconciler) createScrapeConfigs(
728665 }
729666 }
730667
668+ // compute nodes' exporters
669+ err = r .createComputeScrapeConfig (ctx , instance , helper , telemetry .ServiceName , "node-exporter" , telemetryv1 .DefaultNodeExporterPort , true )
670+ if err != nil {
671+ return ctrl.Result {}, err
672+ }
673+ err = r .createComputeScrapeConfig (ctx , instance , helper , telemetry .ServiceName , "podman-exporter" , telemetryv1 .DefaultPodmanExporterPort , true )
674+ if err != nil {
675+ return ctrl.Result {}, err
676+ }
677+ err = r .createComputeScrapeConfig (ctx , instance , helper , telemetryv1 .TelemetryPowerMonitoring , "kepler" , telemetryv1 .DefaultKeplerPort , false ) // Currently Kepler doesn't support TLS
678+ if err != nil {
679+ return ctrl.Result {}, err
680+ }
681+
731682 instance .Status .Conditions .MarkTrue (telemetryv1 .ScrapeConfigReadyCondition , condition .ReadyMessage )
732683 return ctrl.Result {}, nil
733684}
734685
735- func getNodeExporterTargets (nodes []ConnectionInfo ) ([]metricstorage.LabeledTarget , []metricstorage.LabeledTarget ) {
686+ func getExporterTargets (nodes []ConnectionInfo , port int ) ([]metricstorage.LabeledTarget , []metricstorage.LabeledTarget ) {
736687 tls := []metricstorage.LabeledTarget {}
737688 nonTLS := []metricstorage.LabeledTarget {}
738689 for _ , node := range nodes {
739690 target := metricstorage.LabeledTarget {
740- IP : net .JoinHostPort (node .IP , strconv .Itoa (telemetryv1 . DefaultNodeExporterPort )),
691+ IP : net .JoinHostPort (node .IP , strconv .Itoa (port )),
741692 FQDN : node .FQDN ,
742693 }
743694 if node .TLS {
@@ -749,21 +700,53 @@ func getNodeExporterTargets(nodes []ConnectionInfo) ([]metricstorage.LabeledTarg
749700 return tls , nonTLS
750701}
751702
752- func getKeplerTargets (nodes []ConnectionInfo ) ([]metricstorage.LabeledTarget , []metricstorage.LabeledTarget ) {
753- tls := []metricstorage.LabeledTarget {}
754- nonTLS := []metricstorage.LabeledTarget {}
755- for _ , node := range nodes {
756- target := metricstorage.LabeledTarget {
757- IP : net .JoinHostPort (node .IP , strconv .Itoa (telemetryv1 .DefaultKeplerPort )),
758- FQDN : node .FQDN ,
703+ func (r * MetricStorageReconciler ) createComputeScrapeConfig (
704+ ctx context.Context ,
705+ instance * telemetryv1.MetricStorage ,
706+ helper * helper.Helper ,
707+ serviceName string ,
708+ exporterName string ,
709+ exporterPort int ,
710+ tls bool ,
711+ ) error {
712+ Log := r .GetLogger (ctx )
713+
714+ connectionInfo , err := getComputeNodesConnectionInfo (instance , helper , serviceName )
715+ if err != nil {
716+ Log .Info (fmt .Sprintf ("Cannot get compute node connection info. Scrape configs not created. Error: %s" , err ))
717+ }
718+ targetsTLS , targetsNonTLS := getExporterTargets (connectionInfo , exporterPort )
719+
720+ // ScrapeConfig for non-tls nodes
721+ if len (targetsNonTLS ) > 0 {
722+ fullServiceName := fmt .Sprintf ("%s-%s" , telemetry .ServiceName , exporterName )
723+ desiredScrapeConfig := metricstorage .ScrapeConfig (
724+ instance ,
725+ serviceLabels ,
726+ targetsNonTLS ,
727+ false ,
728+ )
729+ err = r .createServiceScrapeConfig (ctx , instance , Log , exporterName , fullServiceName , desiredScrapeConfig )
730+ if err != nil {
731+ return err
759732 }
760- if node .TLS {
761- tls = append (tls , target )
762- } else {
763- nonTLS = append (nonTLS , target )
733+ }
734+
735+ // ScrapeConfig for tls nodes
736+ if tls && len (targetsTLS ) > 0 {
737+ fullServiceName := fmt .Sprintf ("%s-%s-tls" , telemetry .ServiceName , exporterName )
738+ desiredScrapeConfig := metricstorage .ScrapeConfig (
739+ instance ,
740+ serviceLabels ,
741+ targetsTLS ,
742+ true ,
743+ )
744+ err = r .createServiceScrapeConfig (ctx , instance , Log , exporterName , fullServiceName , desiredScrapeConfig )
745+ if err != nil {
746+ return err
764747 }
765748 }
766- return tls , nonTLS
749+ return nil
767750}
768751
769752func (r * MetricStorageReconciler ) createDashboardObjects (ctx context.Context , instance * telemetryv1.MetricStorage , helper * helper.Helper , eventHandler handler.EventHandler ) (ctrl.Result , error ) {
0 commit comments