Skip to content

Commit f1275d5

Browse files
committed
use wildcard urls to reduce api calls
Signed-off-by: Markus Blaschke <[email protected]>
1 parent 310f08a commit f1275d5

File tree

4 files changed

+208
-198
lines changed

4 files changed

+208
-198
lines changed

fenecon/prober.go

Lines changed: 121 additions & 141 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
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

Comments
 (0)