plugin/health: implement dyn health checks (#1214)

Implement health.Healther in erratic and kubernetes plugin. The
kubernetes' healtcheck is only performed on startup - i.e. turn
healthy after the initial loading.

Erratic follow the drop count: every query%drop turns the healthcheck
unhealthy.

Fixes: #985
This commit is contained in:
Miek Gieben
2017-11-13 09:52:40 +00:00
committed by GitHub
parent 46a187df8f
commit 52b49f4838
7 changed files with 49 additions and 8 deletions

View File

@@ -25,6 +25,10 @@ erratic {
* `delay`: delay 1 per **AMOUNT** of queries for **DURATION**, the default for **AMOUNT** is 2 and
the default for **DURATION** is 100ms.
## Health
This plugin implements dynamic health checking. For every dropped query it turns unhealthy.
## Examples
~~~ corefile

14
plugin/erratic/health.go Normal file
View File

@@ -0,0 +1,14 @@
package erratic
import (
"sync/atomic"
)
// Health implements the health.Healther interface.
func (e *Erratic) Health() bool {
q := atomic.LoadUint64(&e.q)
if e.drop > 0 && q%e.drop == 0 {
return false
}
return true
}