40 lines
658 B
Go
40 lines
658 B
Go
// Package monitor monitors service health
|
|
package monitor
|
|
|
|
import (
|
|
"errors"
|
|
)
|
|
|
|
const (
|
|
StatusUnknown StatusCode = iota
|
|
StatusRunning
|
|
StatusFailed
|
|
)
|
|
|
|
type StatusCode int
|
|
|
|
// Monitor monitors a service and reaps dead instances
|
|
type Monitor interface {
|
|
// Status of the service
|
|
Status(service string) (Status, error)
|
|
// Watch starts watching the service
|
|
Watch(service string) error
|
|
// Stop monitoring
|
|
Stop() error
|
|
}
|
|
|
|
type Status struct {
|
|
Code StatusCode
|
|
Info string
|
|
Error string
|
|
}
|
|
|
|
var (
|
|
ErrNotWatching = errors.New("not watching")
|
|
)
|
|
|
|
// NewMonitor returns a new monitor
|
|
func NewMonitor(opts ...Option) Monitor {
|
|
return newMonitor(opts...)
|
|
}
|