@@ -129,29 +129,33 @@ func (k *KeepalivedCollector) Collect(ch chan<- prometheus.Metric) {
129129 defer k .Unlock ()
130130
131131 keepalivedUp := float64 (1 )
132-
133- b := backoff .NewExponentialBackOff ()
134- b .InitialInterval = 10 * time .Millisecond
135- b .MaxElapsedTime = 2 * time .Second
136- b .Reset ()
137-
138132 var keepalivedStats * KeepalivedStats
139133
140- if err := backoff .Retry (func () error {
141- var err error
142- keepalivedStats , err = k .getKeepalivedStats ()
143- if err != nil {
144- slog .Debug ("Failed to get keepalived stats" ,
145- "error" , err ,
146- "retryAfter" , b .NextBackOff ().String (),
147- )
148- }
134+ if err := k .collector .Refresh (); err != nil {
135+ slog .Error ("Failed to send refresh signals to keepalived" , "error" , err )
136+ keepalivedUp = 0
137+ }
149138
150- return err
151- }, b ); err != nil {
152- slog .Error ("No data found to be exported" , "error" , err )
139+ if keepalivedUp == 1 {
140+ b := backoff .NewExponentialBackOff ()
141+ b .InitialInterval = 50 * time .Millisecond
142+ b .MaxElapsedTime = 2 * time .Second
143+ b .Reset ()
144+
145+ if err := backoff .Retry (func () error {
146+ var err error
147+ keepalivedStats , err = k .getKeepalivedStats ()
148+ if err != nil {
149+ slog .Debug ("Failed to get keepalived stats" ,
150+ "error" , err ,
151+ )
152+ }
153+ return err
154+ }, b ); err != nil {
155+ slog .Error ("No data found to be exported" , "error" , err )
153156
154- keepalivedUp = 0
157+ keepalivedUp = 0
158+ }
155159 }
156160
157161 k .newConstMetric (ch , "keepalived_up" , prometheus .GaugeValue , keepalivedUp )
@@ -398,10 +402,6 @@ func (k *KeepalivedCollector) getKeepalivedStats() (*KeepalivedStats, error) {
398402
399403 var err error
400404
401- if err := k .collector .Refresh (); err != nil {
402- return nil , err
403- }
404-
405405 if k .useJSON {
406406 stats .VRRPs , err = k .collector .JSONVrrps ()
407407 if err != nil {
0 commit comments