track hypervisor daemon kill count
Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
parent
62e9d8cfb1
commit
7a4bc0b5d6
14
http.go
14
http.go
|
@ -67,10 +67,20 @@ func okHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
fmt.Fprintln(w, "GOOD=false")
|
fmt.Fprintln(w, "GOOD=false")
|
||||||
}
|
}
|
||||||
for _, h := range me.hypers {
|
for _, h := range me.hypers {
|
||||||
|
url := "http://" + h.Hostname + ":2520/kill"
|
||||||
dur := time.Since(h.lastpoll) // Calculate the elapsed time
|
dur := time.Since(h.lastpoll) // Calculate the elapsed time
|
||||||
if dur > 2 * time.Minute {
|
if dur > 90 * time.Second {
|
||||||
url := "http://" + h.Hostname + ":2520/kill"
|
|
||||||
log.Info("KILL DAEMON ON", h.Hostname, shell.FormatDuration(dur), "curl", url)
|
log.Info("KILL DAEMON ON", h.Hostname, shell.FormatDuration(dur), "curl", url)
|
||||||
|
// s := shell.Wget(url)
|
||||||
|
// log.Info("curl got:", s)
|
||||||
|
h.lastpoll = time.Now()
|
||||||
|
h.killcount += 1
|
||||||
|
}
|
||||||
|
if h.killcount != 0 {
|
||||||
|
log.Info("KILL count =", h.killcount, "FOR", h.Hostname, dur, "curl", url)
|
||||||
|
}
|
||||||
|
if h.killcount > 10 {
|
||||||
|
log.Info("KILL count is greater than 10 for host", h.Hostname, dur, "curl", url)
|
||||||
}
|
}
|
||||||
// l := shell.FormatDuration(dur)
|
// l := shell.FormatDuration(dur)
|
||||||
// log.Warn("HOST =", h.Hostname, "Last poll =", l)
|
// log.Warn("HOST =", h.Hostname, "Last poll =", l)
|
||||||
|
|
3
poll.go
3
poll.go
|
@ -56,6 +56,7 @@ func (h *HyperT) pollHypervisor() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
h.lastpoll = time.Now()
|
h.lastpoll = time.Now()
|
||||||
|
h.killcount = 0 // poll worked. reset killcount
|
||||||
}
|
}
|
||||||
|
|
||||||
func findDroplet(name string) *DropletT {
|
func findDroplet(name string) *DropletT {
|
||||||
|
@ -88,7 +89,7 @@ func clusterHealthy() bool {
|
||||||
good = false
|
good = false
|
||||||
d.CurrentState = "MISSING"
|
d.CurrentState = "MISSING"
|
||||||
}
|
}
|
||||||
l := shell.FormatDuration(dur)
|
l := shell.FormatDuration(dur)
|
||||||
if l == "" {
|
if l == "" {
|
||||||
log.Info("DUR IS EMPTY", dur)
|
log.Info("DUR IS EMPTY", dur)
|
||||||
}
|
}
|
||||||
|
|
13
structs.go
13
structs.go
|
@ -23,12 +23,13 @@ type virtigoT struct {
|
||||||
|
|
||||||
// the stuff that is needed for a hypervisor
|
// the stuff that is needed for a hypervisor
|
||||||
type HyperT struct {
|
type HyperT struct {
|
||||||
Hostname string // the hypervisor hostname
|
Hostname string // the hypervisor hostname
|
||||||
Scan func() // the function to run to scan the hypervisor
|
Scan func() // the function to run to scan the hypervisor
|
||||||
Autoscan bool // to scan or not to scan
|
Autoscan bool // to scan or not to scan
|
||||||
Delay time.Duration // how often to poll the hypervisor
|
Delay time.Duration // how often to poll the hypervisor
|
||||||
Dog *time.Ticker // the watchdog timer itself
|
Dog *time.Ticker // the watchdog timer itself
|
||||||
lastpoll time.Time // the last time the hypervisor polled
|
lastpoll time.Time // the last time the hypervisor polled
|
||||||
|
killcount int
|
||||||
}
|
}
|
||||||
|
|
||||||
// the stuff that is needed for a hypervisor
|
// the stuff that is needed for a hypervisor
|
||||||
|
|
Loading…
Reference in New Issue