@@ -777,69 +777,6 @@ func (r *MetricStorageReconciler) createScrapeConfigs(
777777 return ctrl.Result {}, err
778778 }
779779
780- connectionInfo , err := getComputeNodesConnectionInfo (instance , helper , telemetry .ServiceName )
781- if err != nil {
782- Log .Info (fmt .Sprintf ("Cannot get compute node connection info. Scrape configs not created. Error: %s" , err ))
783- }
784-
785- // ScrapeConfigs for NodeExporters
786- neTargetsTLS , neTargetsNonTLS := getNodeExporterTargets (connectionInfo )
787- // ScrapeConfig for non-tls nodes
788- neServiceName := fmt .Sprintf ("%s-node-exporter" , telemetry .ServiceName )
789- desiredScrapeConfig = metricstorage .ScrapeConfig (
790- instance ,
791- serviceLabels ,
792- neTargetsNonTLS ,
793- false ,
794- )
795- err = r .createServiceScrapeConfig (ctx , instance , Log , "Node Exporter" ,
796- neServiceName , desiredScrapeConfig )
797- if err != nil {
798- return ctrl.Result {}, err
799- }
800-
801- // ScrapeConfig for tls nodes
802- neServiceName = fmt .Sprintf ("%s-node-exporter-tls" , telemetry .ServiceName )
803- desiredScrapeConfig = metricstorage .ScrapeConfig (
804- instance ,
805- serviceLabels ,
806- neTargetsTLS ,
807- true ,
808- )
809- err = r .createServiceScrapeConfig (ctx , instance , Log , "Node Exporter" ,
810- neServiceName , desiredScrapeConfig )
811- if err != nil {
812- return ctrl.Result {}, err
813- }
814-
815- connectionInfo , err = getComputeNodesConnectionInfo (instance , helper , telemetryv1 .TelemetryPowerMonitoring )
816- if err != nil {
817- Log .Info (fmt .Sprintf ("Cannot get compute node connection info. Scrape configs not created. Error: %s" , err ))
818- }
819-
820- // kepler scrape endpoints
821- keplerEndpoints , _ := getKeplerTargets (connectionInfo )
822- if err != nil {
823- Log .Info (fmt .Sprintf ("Cannot get Kepler targets. Scrape configs not created. Error: %s" , err ))
824- }
825-
826- // keplerEndpoint is reported as empty slice when telemetry-power-monitoring service is not enabled
827- if len (keplerEndpoints ) > 0 {
828- // Kepler ScrapeConfig for non-tls nodes
829- keplerServiceName := fmt .Sprintf ("%s-kepler" , telemetry .ServiceName )
830- desiredScrapeConfig = metricstorage .ScrapeConfig (
831- instance ,
832- serviceLabels ,
833- keplerEndpoints ,
834- false ,
835- )
836- err = r .createServiceScrapeConfig (ctx , instance , Log , "Kepler" ,
837- keplerServiceName , desiredScrapeConfig ) // Currently Kepler doesn't support TLS so tlsEnabled is set to false
838- if err != nil {
839- return ctrl.Result {}, err
840- }
841- }
842-
843780 // mysqld exporter
844781 ceilometerNamespacedName := types.NamespacedName {
845782 Name : ceilometer .ServiceName ,
@@ -888,16 +825,31 @@ func (r *MetricStorageReconciler) createScrapeConfigs(
888825 }
889826 }
890827
828+ // compute nodes' exporters
829+ err = r .createComputeScrapeConfig (ctx , instance , helper , telemetry .ServiceName , "node-exporter" , telemetryv1 .DefaultNodeExporterPort , false )
830+ if err != nil {
831+ return ctrl.Result {}, err
832+ }
833+ err = r .createComputeScrapeConfig (ctx , instance , helper , telemetry .ServiceName , "podman-exporter" , telemetryv1 .DefaultPodmanExporterPort , false )
834+ if err != nil {
835+ return ctrl.Result {}, err
836+ }
837+ // Currently Kepler doesn't support TLS
838+ err = r .createComputeScrapeConfig (ctx , instance , helper , telemetryv1 .TelemetryPowerMonitoring , "kepler" , telemetryv1 .DefaultKeplerPort , true )
839+ if err != nil {
840+ return ctrl.Result {}, err
841+ }
842+
891843 instance .Status .Conditions .MarkTrue (telemetryv1 .ScrapeConfigReadyCondition , condition .ReadyMessage )
892844 return ctrl.Result {}, nil
893845}
894846
895- func getNodeExporterTargets (nodes []ConnectionInfo ) ([]metricstorage.LabeledTarget , []metricstorage.LabeledTarget ) {
847+ func getExporterTargets (nodes []ConnectionInfo , port int ) ([]metricstorage.LabeledTarget , []metricstorage.LabeledTarget ) {
896848 tls := []metricstorage.LabeledTarget {}
897849 nonTLS := []metricstorage.LabeledTarget {}
898850 for _ , node := range nodes {
899851 target := metricstorage.LabeledTarget {
900- IP : net .JoinHostPort (node .IP , strconv .Itoa (telemetryv1 . DefaultNodeExporterPort )),
852+ IP : net .JoinHostPort (node .IP , strconv .Itoa (port )),
901853 FQDN : node .FQDN ,
902854 }
903855 if node .TLS {
@@ -909,21 +861,56 @@ func getNodeExporterTargets(nodes []ConnectionInfo) ([]metricstorage.LabeledTarg
909861 return tls , nonTLS
910862}
911863
912- func getKeplerTargets (nodes []ConnectionInfo ) ([]metricstorage.LabeledTarget , []metricstorage.LabeledTarget ) {
913- tls := []metricstorage.LabeledTarget {}
914- nonTLS := []metricstorage.LabeledTarget {}
915- for _ , node := range nodes {
916- target := metricstorage.LabeledTarget {
917- IP : net .JoinHostPort (node .IP , strconv .Itoa (telemetryv1 .DefaultKeplerPort )),
918- FQDN : node .FQDN ,
919- }
920- if node .TLS {
921- tls = append (tls , target )
922- } else {
923- nonTLS = append (nonTLS , target )
864+ func (r * MetricStorageReconciler ) createComputeScrapeConfig (
865+ ctx context.Context ,
866+ instance * telemetryv1.MetricStorage ,
867+ helper * helper.Helper ,
868+ serviceName string ,
869+ exporterName string ,
870+ exporterPort int ,
871+ suppressTLS bool ,
872+ ) error {
873+ Log := r .GetLogger (ctx )
874+
875+ connectionInfo , err := getComputeNodesConnectionInfo (instance , helper , serviceName )
876+ if err != nil {
877+ Log .Info (fmt .Sprintf ("Cannot get compute node connection info. Scrape configs not created. Error: %s" , err ))
878+ }
879+ targetsTLS , targetsNonTLS := getExporterTargets (connectionInfo , exporterPort )
880+
881+ // ScrapeConfig for non-tls nodes
882+ //NOTE(mmagr): remove TLS suppression functionality once Kepler supports TLS
883+ targets := targetsNonTLS
884+ if suppressTLS {
885+ targets = targetsTLS
886+ }
887+ fullServiceName := fmt .Sprintf ("%s-%s" , telemetry .ServiceName , exporterName )
888+ desiredScrapeConfig := metricstorage .ScrapeConfig (
889+ instance ,
890+ serviceLabels ,
891+ targets ,
892+ false ,
893+ )
894+ err = r .createServiceScrapeConfig (ctx , instance , Log , exporterName , fullServiceName , desiredScrapeConfig )
895+ if err != nil {
896+ return err
897+ }
898+
899+ // ScrapeConfig for tls nodes
900+ if ! suppressTLS {
901+ fullServiceName := fmt .Sprintf ("%s-%s-tls" , telemetry .ServiceName , exporterName )
902+ desiredScrapeConfig := metricstorage .ScrapeConfig (
903+ instance ,
904+ serviceLabels ,
905+ targetsTLS ,
906+ true ,
907+ )
908+ err = r .createServiceScrapeConfig (ctx , instance , Log , exporterName , fullServiceName , desiredScrapeConfig )
909+ if err != nil {
910+ return err
924911 }
925912 }
926- return tls , nonTLS
913+ return nil
927914}
928915
929916func (r * MetricStorageReconciler ) createDashboardObjects (ctx context.Context , instance * telemetryv1.MetricStorage , helper * helper.Helper , eventHandler handler.EventHandler ) (ctrl.Result , error ) {
0 commit comments