Documentation
¶
Index ¶
- Constants
- func CheckTCPPortAlive(ip, port string, timeout int64) (bool, error)
- func GetMonitorType(t string) string
- type AbstractMonitor
- func (mon *AbstractMonitor) AnalyseData()
- func (mon *AbstractMonitor) ClockStart(cfg *CachetMonitor, iface MonitorInterface, wg *sync.WaitGroup)
- func (mon *AbstractMonitor) ClockStop()
- func (mon *AbstractMonitor) Describe() []string
- func (mon *AbstractMonitor) GetMonitor() *AbstractMonitor
- func (m *AbstractMonitor) SetDefaultIncident(i *Incident)
- func (mon *AbstractMonitor) Validate() []string
- type CachetAPI
- func (api CachetAPI) GetAllComponents() ([]Datum, error)
- func (api CachetAPI) GetComponentStatus(componentID int) (int, error)
- func (api CachetAPI) GetConfigurationFromRemote() (*CachetMonitor, error)
- func (api CachetAPI) NewRequest(requestType, url string, reqBody []byte) (*http.Response, CachetResponse, error)
- func (api CachetAPI) Ping() error
- func (api CachetAPI) SendMetric(id int, lag int64)
- type CachetMonitor
- type CachetResponse
- type Components
- type DNSAnswer
- type DNSMonitor
- type Datum
- type HTTPMonitor
- type Incident
- func (incident *Incident) GetComponentStatus(cfg *CachetMonitor) (int, error)
- func (incident *Incident) Send(cfg *CachetMonitor) (err error, updatedComponentStatus int)
- func (incident *Incident) SetFixed()
- func (incident *Incident) SetIdentified()
- func (incident *Incident) SetInvestigating()
- func (incident *Incident) SetWatching()
- type IncidentResponse
- type Links
- type MessageTemplate
- type Meta
- type MonitorInterface
- type Pagination
- type TCPMonitor
- type Tags
Constants ¶
View Source
const DefaultInterval = 15
View Source
const DefaultThreshold = 3
View Source
const DefaultTimeFormat = time.RFC3339
View Source
const DefaultTimeout = 10
View Source
const HistorySize = 3
Variables ¶
This section is empty.
Functions ¶
func CheckTCPPortAlive ¶
CheckTCPPortAlive func
Types ¶
type AbstractMonitor ¶
type AbstractMonitor struct {
Name string
Target string
// (default)http / dns
Type string
Strict bool
Interval time.Duration
Timeout time.Duration
MetricID int `mapstructure:"metric_id"`
ComponentID int `mapstructure:"component_id"`
// Templating stuff
Template struct {
Investigating MessageTemplate
Fixed MessageTemplate
}
// Threshold = percentage / number of down incidents
Threshold float32
ThresholdCount bool `mapstructure:"threshold_count"`
// contains filtered or unexported fields
}
AbstractMonitor data model
func (*AbstractMonitor) AnalyseData ¶
func (mon *AbstractMonitor) AnalyseData()
AnalyseData decides if the monitor is statistically up or down and creates / resolves an incident
func (*AbstractMonitor) ClockStart ¶
func (mon *AbstractMonitor) ClockStart(cfg *CachetMonitor, iface MonitorInterface, wg *sync.WaitGroup)
func (*AbstractMonitor) ClockStop ¶
func (mon *AbstractMonitor) ClockStop()
func (*AbstractMonitor) Describe ¶
func (mon *AbstractMonitor) Describe() []string
func (*AbstractMonitor) GetMonitor ¶
func (mon *AbstractMonitor) GetMonitor() *AbstractMonitor
func (*AbstractMonitor) SetDefaultIncident ¶
func (m *AbstractMonitor) SetDefaultIncident(i *Incident)
SetDefaultIncident for monitor
func (*AbstractMonitor) Validate ¶
func (mon *AbstractMonitor) Validate() []string
Validate configuration
type CachetAPI ¶
type CachetAPI struct {
URL string `json:"url"`
Token string `json:"token"`
Insecure bool `json:"insecure"`
}
func (CachetAPI) GetAllComponents ¶
GetAllComponents func
func (CachetAPI) GetComponentStatus ¶
GetComponentStatus
func (CachetAPI) GetConfigurationFromRemote ¶
func (api CachetAPI) GetConfigurationFromRemote() (*CachetMonitor, error)
GetConfigurationFromRemote server
func (CachetAPI) NewRequest ¶
func (api CachetAPI) NewRequest(requestType, url string, reqBody []byte) (*http.Response, CachetResponse, error)
NewRequest wraps http.NewRequest
func (CachetAPI) SendMetric ¶
SendMetric adds a data point to a cachet monitor
type CachetMonitor ¶
type CachetMonitor struct {
SystemName string `json:"system_name" yaml:"system_name"`
DateFormat string `json:"date_format" yaml:"date_format"`
API CachetAPI `json:"api"`
RawMonitors []map[string]interface{} `json:"monitors" yaml:"monitors"`
Monitors []MonitorInterface `json:"-" yaml:"-"`
Immediate bool `json:"-" yaml:"-"`
}
type CachetResponse ¶
type CachetResponse struct {
Data json.RawMessage `json:"data"`
}
type Components ¶
func UnmarshalComponents ¶
func UnmarshalComponents(data []byte) (Components, error)
func (*Components) Marshal ¶
func (r *Components) Marshal() ([]byte, error)
type DNSMonitor ¶
type DNSMonitor struct {
AbstractMonitor `mapstructure:",squash"`
// IP:port format or blank to use system defined DNS
DNS string
// A(default), AAAA, MX, ...
Question string
Answers []DNSAnswer
// contains filtered or unexported fields
}
func (*DNSMonitor) Validate ¶
func (monitor *DNSMonitor) Validate() []string
type Datum ¶
type Datum struct {
ID int64 `json:"id"`
Name string `json:"name"`
Description string `json:"description"`
Link string `json:"link"`
Status int64 `json:"status"`
Order int64 `json:"order"`
GroupID int64 `json:"group_id"`
CreatedAt string `json:"created_at"`
UpdatedAt string `json:"updated_at"`
DeletedAt interface{} `json:"deleted_at"`
Enabled bool `json:"enabled"`
StatusName string `json:"status_name"`
Tags Tags `json:"tags"`
}
type HTTPMonitor ¶
type HTTPMonitor struct {
AbstractMonitor `mapstructure:",squash"`
Method string
ExpectedStatusCode int `mapstructure:"expected_status_code"`
Headers map[string]string
// compiled to Regexp
ExpectedBody string `mapstructure:"expected_body"`
// contains filtered or unexported fields
}
func (*HTTPMonitor) Describe ¶
func (mon *HTTPMonitor) Describe() []string
type Incident ¶
type Incident struct {
ID int `json:"id"`
Name string `json:"name"`
Message string `json:"message"`
Status int `json:"status"`
Visible int `json:"visible"`
Notify bool `json:"notify"`
ComponentID int `json:"component_id"`
ComponentStatus int `json:"component_status"`
// contains filtered or unexported fields
}
Incident Cachet data model
func (*Incident) GetComponentStatus ¶
func (incident *Incident) GetComponentStatus(cfg *CachetMonitor) (int, error)
GetComponentStatus func
func (*Incident) Send ¶
func (incident *Incident) Send(cfg *CachetMonitor) (err error, updatedComponentStatus int)
Send - Create or Update incident
func (*Incident) SetIdentified ¶
func (incident *Incident) SetIdentified()
SetIdentified sets status to Identified not used now
func (*Incident) SetInvestigating ¶
func (incident *Incident) SetInvestigating()
SetInvestigating sets status to Investigating
func (*Incident) SetWatching ¶
func (incident *Incident) SetWatching()
SetWatching sets status to Watching not used now
type IncidentResponse ¶
type IncidentResponse struct {
ID int64 `json:"id"`
Name string `json:"name"`
Description string `json:"description"`
Link string `json:"link"`
Status int64 `json:"status"`
Order int64 `json:"order"`
GroupID int64 `json:"group_id"`
CreatedAt string `json:"created_at"`
UpdatedAt string `json:"updated_at"`
DeletedAt interface{} `json:"deleted_at"`
Enabled bool `json:"enabled"`
StatusName string `json:"status_name"`
}
IncidentResponse struct
type Links ¶
type Links struct {
NextPage interface{} `json:"next_page"`
PreviousPage interface{} `json:"previous_page"`
}
type MessageTemplate ¶
type MessageTemplate struct {
Subject string `json:"subject"`
Message string `json:"message"`
// contains filtered or unexported fields
}
func (*MessageTemplate) Exec ¶
func (t *MessageTemplate) Exec(data interface{}) (string, string)
func (*MessageTemplate) SetDefault ¶
func (t *MessageTemplate) SetDefault(d MessageTemplate)
type Meta ¶
type Meta struct {
Pagination Pagination `json:"pagination"`
}
type MonitorInterface ¶
type MonitorInterface interface {
ClockStart(*CachetMonitor, MonitorInterface, *sync.WaitGroup)
ClockStop()
Validate() []string
GetMonitor() *AbstractMonitor
Describe() []string
// contains filtered or unexported methods
}
type Pagination ¶
type TCPMonitor ¶
type TCPMonitor struct {
AbstractMonitor `mapstructure:",squash"`
Port string
}
TCPMonitor struct
Source Files
¶
Click to show internal directories.
Click to hide internal directories.