Documentation ¶
Index ¶
Constants ¶
View Source
const ( // OK when the alerts have resolved and everything is peachy OK int = iota // WARNING when the number of failed attempts passes the WarningThreshold WARNING // CRITICAL when the number of failed attempts passes the CriticalThreshold CRITICAL )
States of a monitor
View Source
const ( DEFAULT_DNS_TIMEOUT = time.Duration(2) * time.Second DEFAULT_DNS_RECORD_TYPE = "A" )
View Source
const ( START int = iota STOP GOROUTINE_ID_LENGTH = 8 MAX_PORT = 65536 )
View Source
const ( DEFAULT_CONN_TIMEOUT = time.Duration(4) * time.Second DEFAULT_READ_TIMEOUT = time.Duration(2) * time.Second DEFAULT_WRITE_TIMEOUT = time.Duration(2) * time.Second DEFAULT_READ_SIZE = 4096 )
View Source
const (
DEFAULT_CMD_TIMEOUT = time.Duration(3) * time.Second
)
View Source
const (
DEFAULT_HTTP_TIMEOUT = time.Duration(3) * time.Second
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Base ¶
type Base struct { RMC *RootMonitorConfig Identifier string MonitorFunc func() error // contains filtered or unexported fields }
Base monitor to embed into monitors that do real work
type DnsMonitor ¶
type DnsMonitor struct { Base Timeout time.Duration Client *resolver.Client Expect *regexp.Regexp RecordType string }
func NewDnsMonitor ¶
func NewDnsMonitor(rmc *RootMonitorConfig) *DnsMonitor
func (*DnsMonitor) Validate ¶
func (dns *DnsMonitor) Validate() error
type ExecMonitor ¶
func NewExecMonitor ¶
func NewExecMonitor(rmc *RootMonitorConfig) *ExecMonitor
func (*ExecMonitor) Validate ¶
func (e *ExecMonitor) Validate() error
type HTTPMonitor ¶
func NewHTTPMonitor ¶
func NewHTTPMonitor(rmc *RootMonitorConfig) *HTTPMonitor
func (*HTTPMonitor) Validate ¶
func (h *HTTPMonitor) Validate() error
type IMonitor ¶
func NewSampleMonitor ¶
func NewSampleMonitor(rmc *RootMonitorConfig) IMonitor
type Monitor ¶
type Monitor struct { Config *config.Config Log log.FieldLogger Identifier string MessageChannel chan *alerter.Message StateChannel chan *state.Message SupportedMonitors map[string]func(*RootMonitorConfig) IMonitor // monitor name : NewXMonitor MemberID string // contains filtered or unexported fields }
type MonitorConfig ¶
type MonitorConfig struct { // Generic attributes that fit more than one monitor type Type string `json:"type"` // 'tcp', 'http', 'ssh', 'exec', 'icmp', 'dns' Description string `json:"description,omitempty"` // optional Host string `json:"host,omitempty"` // required for all checks except 'exec' Interval util.CustomDuration `json:"interval,omitempty"` Timeout util.CustomDuration `json:"timeout,omitempty"` Port int `json:"port,omitempty"` // works for all checks except 'icmp' and 'exec' Expect string `json:"expect,omitempty"` // works for 'tcp', 'ssh', 'http', 'exec' checks except 'icmp' Disable bool `json:"disable,omitempty"` Tags []string `json:"tags,omitempty"` MemberTag string `json:"member-tag,omitempty"` // lock a check to specific member(s) // TCP specific attributes TCPSend string `json:"send,omitempty"` TCPReadTimeout util.CustomDuration `json:"read-timeout,omitempty"` TCPWriteTimeout util.CustomDuration `json:"write-timeout,omitempty"` TCPReadSize int `json:"read-size,omitempty"` // HTTP specific attributes HTTPURL string `json:"url,omitempty"` HTTPMethod string `json:"method,omitempty"` HTTPSSL bool `json:"ssl,omitempty"` HTTPStatusCode int `json:"status-code,omitempty"` HTTPRequestBody string `json:"request-body,omitempty"` // Only used if 'Method' is 'GET' // Exec specific attributes ExecCommand string `json:"command,omitempty"` ExecArgs []string `json:"args,omitempty"` ExecReturnCode int `json:"return-code,omitempty"` // DNS specific attributes DnsTarget string `json:"dns-target,omitempty"` DnsRecordType string `json:"dns-record-type,omitempty"` DnsMaxTime util.CustomDuration `json:"dns-max-time,omitempty"` DnsExpectedCount int `json:"dns-expected-count,omitempty"` // Alerting related configuration WarningThreshold int `json:"warning-threshold,omitempty"` // how many times a check must fail before a warning alert is emitted CriticalThreshold int `json:"critical-threshold,omitempty"` // how many times a check must fail before a critical alert is emitted WarningAlerter []string `json:"warning-alerter,omitempty"` // these alerters will be contacted when a warning threshold is hit CriticalAlerter []string `json:"critical-alerter,omitempty"` // these alerters will be contacted when a critical threshold is hit }
TODO: This should probably be split up between each individual check type
type RootMonitorConfig ¶
type RootMonitorConfig struct { GID string // goroutine id Name string // monitor config name in member dir ConfigName string // monitor config name in monitor dir MemberID string Config *MonitorConfig MessageChannel chan *alerter.Message StateChannel chan *state.Message StopChannel chan bool Ticker *time.Ticker Log log.FieldLogger }
type SampleMonitor ¶
type SampleMonitor struct {
Base
}
func (*SampleMonitor) Validate ¶
func (s *SampleMonitor) Validate() error
type TCPMonitor ¶
type TCPMonitor struct { Base ReadTimeout time.Duration WriteTimeout time.Duration ConnTimeout time.Duration ReadSize int }
func NewTCPMonitor ¶
func NewTCPMonitor(rmc *RootMonitorConfig) *TCPMonitor
func (*TCPMonitor) Validate ¶
func (t *TCPMonitor) Validate() error
Click to show internal directories.
Click to hide internal directories.