Skip to content

Commit 704c81b

Browse files
authored
fix(keepalived): ensure Refresh() runs once per cycle (flashcatcloud#1385)
Co-authored-by: peter <>
1 parent 689838b commit 704c81b

1 file changed

Lines changed: 23 additions & 23 deletions

File tree

inputs/keepalived/collector/collector.go

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)