88 "time"
99
1010 "github.com/prometheus/client_golang/prometheus"
11- "github.com/remeh/sizedwaitgroup"
1211 "go.uber.org/zap"
1312 resty "resty.dev/v3"
1413)
@@ -28,10 +27,7 @@ type (
2827 }
2928
3029 FeneconProberTarget struct {
31- Target string
32- Meter int
33- Ess int
34- Charger int
30+ Target string
3531 }
3632)
3733
@@ -111,161 +107,145 @@ func (fp *FeneconProber) Run(target FeneconProberTarget) {
111107
112108 fp .prometheus .info .With (commonLabels ).Set (1 )
113109
114- wg := sizedwaitgroup .New (fp .parallelRequests )
115-
116110 // ------------------------------------------------------------------------
117111 // SUM
112+ result , err := fp .queryWildcard (client , "_sum/.*" )
113+ if err == nil {
114+ // general
115+ result .Address ("_sum/State" ).SetGauge (commonLabels , fp .prometheus .status )
118116
119- // general
120- fp .queryCommon (& wg , client , "_sum/State" , commonLabels , fp .prometheus .status )
121-
122- // battery
123- fp .queryCommon (& wg , client , "_sum/EssSoc" , commonLabels , fp .prometheus .battery .charge )
124- fp .queryCommon (& wg , client , "_sum/EssCapacity" , commonLabels , fp .prometheus .battery .capacity )
125- fp .queryCommon (& wg , client , "_sum/EssActivePower" , commonLabels , fp .prometheus .battery .power )
126- fp .queryCommonIfNotZero (& wg , client , "_sum/EssActiveChargeEnergy" , commonLabels , fp .prometheus .battery .powerChargeTotal )
127- fp .queryCommonIfNotZero (& wg , client , "_sum/EssActiveDischargeEnergy" , commonLabels , fp .prometheus .battery .powerDischargeTotal )
128- fp .queryCommonIfNotZero (& wg , client , "_sum/EssDcChargeEnergy" , commonLabels , fp .prometheus .battery .powerDcChargeTotal )
129- fp .queryCommonIfNotZero (& wg , client , "_sum/EssDcDischargeEnergy" , commonLabels , fp .prometheus .battery .powerDcDischargeTotal )
130- fp .queryCommon (& wg , client , "_sum/EssActivePowerL1" , phase1Labels , fp .prometheus .battery .powerPhase )
131- fp .queryCommon (& wg , client , "_sum/EssActivePowerL2" , phase2Labels , fp .prometheus .battery .powerPhase )
132- fp .queryCommon (& wg , client , "_sum/EssActivePowerL3" , phase3Labels , fp .prometheus .battery .powerPhase )
133-
134- // grid
135- fp .queryCommon (& wg , client , "_sum/GridMode" , commonLabels , fp .prometheus .grid .mode )
136- fp .queryCommon (& wg , client , "_sum/GridActivePower" , commonLabels , fp .prometheus .grid .power )
137- fp .queryCommonIfNotZero (& wg , client , "_sum/GridBuyActiveEnergy" , commonLabels , fp .prometheus .grid .powerBuyTotal )
138- fp .queryCommonIfNotZero (& wg , client , "_sum/GridSellActiveEnergy" , commonLabels , fp .prometheus .grid .powerSellTotal )
139- fp .queryCommon (& wg , client , "_sum/GridActivePowerL1" , phase1Labels , fp .prometheus .grid .powerPhase )
140- fp .queryCommon (& wg , client , "_sum/GridActivePowerL2" , phase2Labels , fp .prometheus .grid .powerPhase )
141- fp .queryCommon (& wg , client , "_sum/GridActivePowerL3" , phase3Labels , fp .prometheus .grid .powerPhase )
142-
143- // production
144- fp .queryCommon (& wg , client , "_sum/ProductionActivePower" , commonLabels , fp .prometheus .production .power )
145- fp .queryCommon (& wg , client , "_sum/ProductionAcActivePower" , commonLabels , fp .prometheus .production .powerAc )
146- fp .queryCommon (& wg , client , "_sum/ProductionDcActualPower" , commonLabels , fp .prometheus .production .powerDc )
147- fp .queryCommonIfNotZero (& wg , client , "_sum/ProductionActiveEnergy" , commonLabels , fp .prometheus .production .powerTotal )
148- fp .queryCommonIfNotZero (& wg , client , "_sum/ProductionAcActiveEnergy" , commonLabels , fp .prometheus .production .powerAcTotal )
149- fp .queryCommonIfNotZero (& wg , client , "_sum/ProductionDcActiveEnergy" , commonLabels , fp .prometheus .production .powerDcTotal )
150- fp .queryCommon (& wg , client , "_sum/ProductionAcActivePowerL1" , phase1Labels , fp .prometheus .production .powerPhase )
151- fp .queryCommon (& wg , client , "_sum/ProductionAcActivePowerL2" , phase2Labels , fp .prometheus .production .powerPhase )
152- fp .queryCommon (& wg , client , "_sum/ProductionAcActivePowerL3" , phase3Labels , fp .prometheus .production .powerPhase )
153-
154- // consumption
155- fp .queryCommon (& wg , client , "_sum/ConsumptionActivePower" , commonLabels , fp .prometheus .consumption .power )
156- fp .queryCommonIfNotZero (& wg , client , "_sum/ConsumptionActiveEnergy" , commonLabels , fp .prometheus .consumption .powerTotal )
157- fp .queryCommon (& wg , client , "_sum/ConsumptionActivePowerL1" , phase1Labels , fp .prometheus .consumption .powerPhase )
158- fp .queryCommon (& wg , client , "_sum/ConsumptionActivePowerL2" , phase2Labels , fp .prometheus .consumption .powerPhase )
159- fp .queryCommon (& wg , client , "_sum/ConsumptionActivePowerL3" , phase3Labels , fp .prometheus .consumption .powerPhase )
117+ // battery
118+ result .Address ("_sum/EssSoc" ).SetGauge (commonLabels , fp .prometheus .battery .charge )
119+ result .Address ("_sum/EssCapacity" ).SetGauge (commonLabels , fp .prometheus .battery .capacity )
120+ result .Address ("_sum/EssActivePower" ).SetGauge (commonLabels , fp .prometheus .battery .power )
121+ result .Address ("_sum/EssActiveChargeEnergy" ).SetGaugeIfNotZero (commonLabels , fp .prometheus .battery .powerChargeTotal )
122+ result .Address ("_sum/EssActiveDischargeEnergy" ).SetGaugeIfNotZero (commonLabels , fp .prometheus .battery .powerDischargeTotal )
123+ result .Address ("_sum/EssDcChargeEnergy" ).SetGaugeIfNotZero (commonLabels , fp .prometheus .battery .powerDcChargeTotal )
124+ result .Address ("_sum/EssDcDischargeEnergy" ).SetGaugeIfNotZero (commonLabels , fp .prometheus .battery .powerDcDischargeTotal )
125+ result .Address ("_sum/EssActivePowerL1" ).SetGauge (phase1Labels , fp .prometheus .battery .powerPhase )
126+ result .Address ("_sum/EssActivePowerL2" ).SetGauge (phase2Labels , fp .prometheus .battery .powerPhase )
127+ result .Address ("_sum/EssActivePowerL3" ).SetGauge (phase3Labels , fp .prometheus .battery .powerPhase )
128+
129+ // grid
130+ result .Address ("_sum/GridMode" ).SetGauge (commonLabels , fp .prometheus .grid .mode )
131+ result .Address ("_sum/GridActivePower" ).SetGauge (commonLabels , fp .prometheus .grid .power )
132+ result .Address ("_sum/GridBuyActiveEnergy" ).SetGaugeIfNotZero (commonLabels , fp .prometheus .grid .powerBuyTotal )
133+ result .Address ("_sum/GridSellActiveEnergy" ).SetGaugeIfNotZero (commonLabels , fp .prometheus .grid .powerSellTotal )
134+ result .Address ("_sum/GridActivePowerL1" ).SetGauge (phase1Labels , fp .prometheus .grid .powerPhase )
135+ result .Address ("_sum/GridActivePowerL2" ).SetGauge (phase2Labels , fp .prometheus .grid .powerPhase )
136+ result .Address ("_sum/GridActivePowerL3" ).SetGauge (phase3Labels , fp .prometheus .grid .powerPhase )
137+
138+ // grid
139+ result .Address ("_sum/GridMode" ).SetGauge (commonLabels , fp .prometheus .grid .mode )
140+ result .Address ("_sum/GridActivePower" ).SetGauge (commonLabels , fp .prometheus .grid .power )
141+ result .Address ("_sum/GridBuyActiveEnergy" ).SetGaugeIfNotZero (commonLabels , fp .prometheus .grid .powerBuyTotal )
142+ result .Address ("_sum/GridSellActiveEnergy" ).SetGaugeIfNotZero (commonLabels , fp .prometheus .grid .powerSellTotal )
143+ result .Address ("_sum/GridActivePowerL1" ).SetGauge (phase1Labels , fp .prometheus .grid .powerPhase )
144+ result .Address ("_sum/GridActivePowerL2" ).SetGauge (phase2Labels , fp .prometheus .grid .powerPhase )
145+ result .Address ("_sum/GridActivePowerL3" ).SetGauge (phase3Labels , fp .prometheus .grid .powerPhase )
146+
147+ // production
148+ result .Address ("_sum/ProductionActivePower" ).SetGauge (commonLabels , fp .prometheus .production .power )
149+ result .Address ("_sum/ProductionAcActivePower" ).SetGauge (commonLabels , fp .prometheus .production .powerAc )
150+ result .Address ("_sum/ProductionDcActualPower" ).SetGauge (commonLabels , fp .prometheus .production .powerDc )
151+ result .Address ("_sum/ProductionActiveEnergy" ).SetGaugeIfNotZero (commonLabels , fp .prometheus .production .powerTotal )
152+ result .Address ("_sum/ProductionAcActiveEnergy" ).SetGaugeIfNotZero (commonLabels , fp .prometheus .production .powerAcTotal )
153+ result .Address ("_sum/ProductionDcActiveEnergy" ).SetGaugeIfNotZero (commonLabels , fp .prometheus .production .powerDcTotal )
154+ result .Address ("_sum/ProductionAcActivePowerL1" ).SetGauge (phase1Labels , fp .prometheus .production .powerPhase )
155+ result .Address ("_sum/ProductionAcActivePowerL2" ).SetGauge (phase2Labels , fp .prometheus .production .powerPhase )
156+ result .Address ("_sum/ProductionAcActivePowerL3" ).SetGauge (phase3Labels , fp .prometheus .production .powerPhase )
157+
158+ // consumption
159+ result .Address ("_sum/ConsumptionActivePower" ).SetGauge (commonLabels , fp .prometheus .consumption .power )
160+ result .Address ("_sum/ConsumptionActiveEnergy" ).SetGaugeIfNotZero (commonLabels , fp .prometheus .consumption .powerTotal )
161+ result .Address ("_sum/ConsumptionActivePowerL1" ).SetGauge (phase1Labels , fp .prometheus .consumption .powerPhase )
162+ result .Address ("_sum/ConsumptionActivePowerL2" ).SetGauge (phase2Labels , fp .prometheus .consumption .powerPhase )
163+ result .Address ("_sum/ConsumptionActivePowerL3" ).SetGauge (phase3Labels , fp .prometheus .consumption .powerPhase )
164+ }
160165
161166 // ------------------------------------------------------------------------
162167 // Ess (Batteries)
163- for i := 0 ; i < target .Ess ; i ++ {
164- module := fmt .Sprintf ("ess%v" , i )
165- batteryLabels := prometheus.Labels {"target" : target .Target , "module" : module }
166-
167- // battery
168- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/State" , module ), batteryLabels , fp .prometheus .status )
169- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/GridMode" , module ), batteryLabels , fp .prometheus .grid .mode )
170- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/Soc" , module ), batteryLabels , fp .prometheus .battery .charge )
171- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/Capacity" , module ), batteryLabels , fp .prometheus .battery .capacity )
172- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/ActivePower" , module ), batteryLabels , fp .prometheus .battery .power )
173- fp .queryCommonIfNotZero (& wg , client , fmt .Sprintf ("%s/ActiveChargeEnergy" , module ), batteryLabels , fp .prometheus .battery .powerChargeTotal )
174- fp .queryCommonIfNotZero (& wg , client , fmt .Sprintf ("%s/ActiveDischargeEnergy" , module ), batteryLabels , fp .prometheus .battery .powerDischargeTotal )
175- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/AllowedChargePower" , module ), batteryLabels , fp .prometheus .battery .allowedChargePower )
176- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/AllowedDischargePower" , module ), batteryLabels , fp .prometheus .battery .allowedDischargePower )
168+ result , err = fp .queryWildcard (client , "ess.*/.*" )
169+ if err == nil {
170+ for _ , module := range result .AddressParts (0 ) {
171+ batteryLabels := prometheus.Labels {"target" : target .Target , "module" : module }
172+
173+ result .Address (module , "State" ).SetGauge (batteryLabels , fp .prometheus .status )
174+ result .Address (module , "GridMode" ).SetGauge (batteryLabels , fp .prometheus .grid .mode )
175+ result .Address (module , "Soc" ).SetGauge (batteryLabels , fp .prometheus .battery .charge )
176+ result .Address (module , "Capacity" ).SetGauge (batteryLabels , fp .prometheus .battery .capacity )
177+ result .Address (module , "ActivePower" ).SetGauge (batteryLabels , fp .prometheus .battery .power )
178+ result .Address (module , "ActiveChargeEnergy" ).SetGaugeIfNotZero (batteryLabels , fp .prometheus .battery .powerChargeTotal )
179+ result .Address (module , "ActiveDischargeEnergy" ).SetGaugeIfNotZero (batteryLabels , fp .prometheus .battery .powerDischargeTotal )
180+ result .Address (module , "AllowedChargePower" ).SetGauge (batteryLabels , fp .prometheus .battery .allowedChargePower )
181+ result .Address (module , "AllowedDischargePower" ).SetGauge (batteryLabels , fp .prometheus .battery .allowedDischargePower )
182+ }
177183 }
178184
179185 // ------------------------------------------------------------------------
180186 // Charger (eg. panels)
181- for i := 0 ; i < target .Charger ; i ++ {
182- module := fmt .Sprintf ("charger%v" , i )
183- chargerLabels := prometheus.Labels {"target" : target .Target , "module" : module }
184-
185- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/State" , module ), chargerLabels , fp .prometheus .status )
186- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/ActualPower" , module ), chargerLabels , fp .prometheus .production .power )
187- fp .queryCommonIfNotZero (& wg , client , fmt .Sprintf ("%s/ActualEnergy" , module ), chargerLabels , fp .prometheus .production .powerTotal )
188- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/MaxActualPower" , module ), chargerLabels , fp .prometheus .production .maxActualPower )
187+ result , err = fp .queryWildcard (client , "charger.*/.*" )
188+ if err == nil {
189+ for _ , module := range result .AddressParts (0 ) {
190+ chargerLabels := prometheus.Labels {"target" : target .Target , "module" : module }
191+
192+ result .Address (module , "State" ).SetGauge (chargerLabels , fp .prometheus .status )
193+ result .Address (module , "ActualPower" ).SetGauge (chargerLabels , fp .prometheus .production .power )
194+ result .Address (module , "ActualEnergy" ).SetGaugeIfNotZero (chargerLabels , fp .prometheus .production .powerTotal )
195+ result .Address (module , "MaxActualPower" ).SetGauge (chargerLabels , fp .prometheus .production .maxActualPower )
196+ }
189197 }
190198
191199 // ------------------------------------------------------------------------
192200 // Meter (eg. panels)
193- for i := 0 ; i < target .Meter ; i ++ {
194- module := fmt .Sprintf ("meter%v" , i )
195- meterLabels := prometheus.Labels {"target" : target .Target , "module" : module }
196- meterPhase1Labels := prometheus.Labels {"target" : target .Target , "module" : module , "phase" : "1" }
197- meterPhase2Labels := prometheus.Labels {"target" : target .Target , "module" : module , "phase" : "2" }
198- meterPhase3Labels := prometheus.Labels {"target" : target .Target , "module" : module , "phase" : "3" }
199-
200- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/State" , module ), meterLabels , fp .prometheus .status )
201- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/Frequency" , module ), meterLabels , fp .prometheus .meter .frequency )
202- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/Voltage" , module ), meterLabels , fp .prometheus .meter .voltage )
203- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/VoltageL1" , module ), meterPhase1Labels , fp .prometheus .meter .voltagePhase )
204- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/VoltageL2" , module ), meterPhase2Labels , fp .prometheus .meter .voltagePhase )
205- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/VoltageL3" , module ), meterPhase3Labels , fp .prometheus .meter .voltagePhase )
206- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/ActivePower" , module ), meterLabels , fp .prometheus .meter .power )
207- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/ActivePowerL1" , module ), meterPhase1Labels , fp .prometheus .meter .powerPhase )
208- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/ActivePowerL2" , module ), meterPhase2Labels , fp .prometheus .meter .powerPhase )
209- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/ActivePowerL3" , module ), meterPhase3Labels , fp .prometheus .meter .powerPhase )
210- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/ReactivePower" , module ), meterLabels , fp .prometheus .meter .reactivePower )
211- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/ReactivePowerL1" , module ), meterPhase1Labels , fp .prometheus .meter .reactivePowerPhase )
212- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/ReactivePowerL2" , module ), meterPhase2Labels , fp .prometheus .meter .reactivePowerPhase )
213- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/ReactivePowerL3" , module ), meterPhase3Labels , fp .prometheus .meter .reactivePowerPhase )
214- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/Current" , module ), meterLabels , fp .prometheus .meter .current )
215- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/CurrentL1" , module ), meterPhase1Labels , fp .prometheus .meter .currentPhase )
216- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/CurrentL2" , module ), meterPhase2Labels , fp .prometheus .meter .currentPhase )
217- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/CurrentL3" , module ), meterPhase3Labels , fp .prometheus .meter .currentPhase )
218- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/MinActivePower" , module ), meterLabels , fp .prometheus .meter .minActivePower )
219- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/MaxActivePower" , module ), meterLabels , fp .prometheus .meter .maxActivePower )
220- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/ActiveProductionEnergy" , module ), meterLabels , fp .prometheus .meter .powerProductionTotal )
221- fp .queryCommon (& wg , client , fmt .Sprintf ("%s/ActiveConsumptionEnergy" , module ), meterLabels , fp .prometheus .meter .powerConsumptionTotal )
201+ result , err = fp .queryWildcard (client , "meter.*/.*" )
202+ if err == nil {
203+ for _ , module := range result .AddressParts (0 ) {
204+ meterLabels := prometheus.Labels {"target" : target .Target , "module" : module }
205+ meterPhase1Labels := prometheus.Labels {"target" : target .Target , "module" : module , "phase" : "1" }
206+ meterPhase2Labels := prometheus.Labels {"target" : target .Target , "module" : module , "phase" : "2" }
207+ meterPhase3Labels := prometheus.Labels {"target" : target .Target , "module" : module , "phase" : "3" }
208+
209+ result .Address (module , "State" ).SetGauge (meterLabels , fp .prometheus .status )
210+ result .Address (module , "Frequency" ).SetGauge (meterLabels , fp .prometheus .meter .frequency )
211+ result .Address (module , "Voltage" ).SetGauge (meterLabels , fp .prometheus .meter .voltage )
212+ result .Address (module , "VoltageL1" ).SetGauge (meterPhase1Labels , fp .prometheus .meter .voltagePhase )
213+ result .Address (module , "VoltageL2" ).SetGauge (meterPhase2Labels , fp .prometheus .meter .voltagePhase )
214+ result .Address (module , "VoltageL3" ).SetGauge (meterPhase3Labels , fp .prometheus .meter .voltagePhase )
215+ result .Address (module , "ActivePower" ).SetGauge (meterLabels , fp .prometheus .meter .power )
216+ result .Address (module , "ActivePowerL1" ).SetGauge (meterPhase1Labels , fp .prometheus .meter .powerPhase )
217+ result .Address (module , "ActivePowerL2" ).SetGauge (meterPhase2Labels , fp .prometheus .meter .powerPhase )
218+ result .Address (module , "ActivePowerL3" ).SetGauge (meterPhase3Labels , fp .prometheus .meter .powerPhase )
219+ result .Address (module , "ReactivePower" ).SetGauge (meterLabels , fp .prometheus .meter .reactivePower )
220+ result .Address (module , "ReactivePowerL1" ).SetGauge (meterPhase1Labels , fp .prometheus .meter .reactivePowerPhase )
221+ result .Address (module , "ReactivePowerL2" ).SetGauge (meterPhase2Labels , fp .prometheus .meter .reactivePowerPhase )
222+ result .Address (module , "ReactivePowerL3" ).SetGauge (meterPhase3Labels , fp .prometheus .meter .reactivePowerPhase )
223+ result .Address (module , "Current" ).SetGauge (meterLabels , fp .prometheus .meter .current )
224+ result .Address (module , "CurrentL1" ).SetGauge (meterPhase1Labels , fp .prometheus .meter .currentPhase )
225+ result .Address (module , "CurrentL2" ).SetGauge (meterPhase2Labels , fp .prometheus .meter .currentPhase )
226+ result .Address (module , "CurrentL3" ).SetGauge (meterPhase3Labels , fp .prometheus .meter .currentPhase )
227+ result .Address (module , "MinActivePower" ).SetGauge (meterLabels , fp .prometheus .meter .minActivePower )
228+ result .Address (module , "MaxActivePower" ).SetGauge (meterLabels , fp .prometheus .meter .maxActivePower )
229+ result .Address (module , "ActiveProductionEnergy" ).SetGauge (meterLabels , fp .prometheus .meter .powerProductionTotal )
230+ result .Address (module , "ActiveConsumptionEnergy" ).SetGauge (meterLabels , fp .prometheus .meter .powerConsumptionTotal )
231+ }
222232 }
223233
224- wg .Wait ()
225-
226234 fp .logger .Debugf (`finished probe in %v` , time .Since (startTime ).String ())
227235}
228236
229- func (fp * FeneconProber ) queryCommon (wg * sizedwaitgroup.SizedWaitGroup , client * resty.Client , url string , labels prometheus.Labels , gaugeVec * prometheus.GaugeVec ) {
230- fp .queryCommonCallback (
231- wg ,
232- client ,
233- url ,
234- func (result ResultCommon ) {
235- if result .Value != nil {
236- gaugeVec .With (labels ).Set (* result .Value )
237- }
238- },
239- )
240- }
237+ func (fp * FeneconProber ) queryWildcard (client * resty.Client , url string ) (* ResultWildcard , error ) {
238+ result := ResultWildcard {}
241239
242- func (fp * FeneconProber ) queryCommonIfNotZero (wg * sizedwaitgroup.SizedWaitGroup , client * resty.Client , url string , labels prometheus.Labels , gaugeVec * prometheus.GaugeVec ) {
243- fp .queryCommonCallback (
244- wg ,
245- client ,
246- url ,
247- func (result ResultCommon ) {
248- if result .Value != nil && * result .Value > 0 {
249- gaugeVec .With (labels ).Set (* result .Value )
250- }
251- },
252- )
253- }
240+ startTime := time .Now ()
241+ fp .logger .Debugf (`start query %v` , url )
254242
255- func (fp * FeneconProber ) queryCommonCallback (wg * sizedwaitgroup.SizedWaitGroup , client * resty.Client , url string , callback func (result ResultCommon )) {
256- wg .Add ()
257- go func () {
258- defer wg .Done ()
259- startTime := time .Now ()
260- fp .logger .Debugf (`start query %v` , url )
261-
262- result := ResultCommon {}
263- _ , err := client .R ().SetContext (fp .ctx ).SetResult (& result ).Get (url )
264- if err == nil {
265- fp .logger .Debugf (`finished query %v in %v` , url , time .Since (startTime ).String ())
266- callback (result )
267- } else {
268- fp .logger .Errorf (`failed query %v in %v: %v` , url , time .Since (startTime ).String (), err )
269- }
270- }()
243+ _ , err := client .R ().SetContext (fp .ctx ).SetResult (& result ).Get (url )
244+ if err == nil {
245+ fp .logger .Debugf (`finished query %v in %v` , url , time .Since (startTime ).String ())
246+ } else {
247+ fp .logger .Errorf (`failed query %v in %v: %v` , url , time .Since (startTime ).String (), err )
248+ }
249+
250+ return & result , err
271251}
0 commit comments