Documentation
¶
Index ¶
- Variables
- func Autostyle(i int) chart.Style
- func Close()
- func Load(c *conf.Conf) error
- func Run() error
- type Action
- type ActionType
- type Battery
- type BoardPowerReading
- type CDPCacheEntries
- type CDPCacheEntry
- type ChassisComponent
- type Context
- func (c *Context) Ack() string
- func (c *Context) Eval(v interface{}) (interface{}, error)
- func (c *Context) EvalAll(v interface{}) (interface{}, error)
- func (c *Context) Expr(v string) string
- func (c *Context) GetMeta(metric, name string, v interface{}) (interface{}, error)
- func (c *Context) Graph(v interface{}, args ...string) (interface{}, error)
- func (c *Context) GraphAll(v interface{}, args ...string) (interface{}, error)
- func (c *Context) GraphLink(v string) string
- func (c *Context) HTTPGet(url string) string
- func (c *Context) HTTPGetJSON(url string) (*jsonq.JsonQuery, error)
- func (c *Context) HTTPPost(url, bodyType, data string) string
- func (c *Context) HostView(host string) string
- func (c *Context) Incident() string
- func (c *Context) LSQuery(index_root, filter, sduration, eduration string, size int) (interface{}, error)
- func (c *Context) LSQueryAll(index_root, keystring, filter, sduration, eduration string, size int) (interface{}, error)
- func (c *Context) LeftJoin(v ...interface{}) (interface{}, error)
- func (c *Context) Lookup(table, key string) (string, error)
- func (c *Context) LookupAll(table, key string, group interface{}) (string, error)
- func (c *Context) Rule() (string, error)
- type Controller
- type Disk
- type Event
- type Hardware
- type HostData
- type HostInterface
- type ICMPData
- type IncidentStatus
- type MemoryModule
- type PhysicalDisk
- type PowerSupply
- type Process
- type Result
- type RunHistory
- type Schedule
- func (s *Schedule) Action(user, message string, t ActionType, ak models.AlertKey) error
- func (s *Schedule) ActionNotify(at ActionType, user, message string, aks []models.AlertKey)
- func (s *Schedule) AddNotification(ak models.AlertKey, n *conf.Notification, started time.Time)
- func (s *Schedule) AddSilence(start, end time.Time, alert, tagList string, forget, confirm bool, ...) (map[models.AlertKey]bool, error)
- func (s *Schedule) AlertSuccessful(name string) bool
- func (s *Schedule) CheckAlert(T miniprofiler.Timer, r *RunHistory, a *conf.Alert)
- func (s *Schedule) CheckExpr(T miniprofiler.Timer, rh *RunHistory, a *conf.Alert, e *expr.Expr, ...) (alerts models.AlertKeys, err error)
- func (s *Schedule) CheckNotifications() time.Duration
- func (s *Schedule) ClearErrors(alert string) error
- func (s *Schedule) ClearSilence(id string) error
- func (s *Schedule) Close()
- func (s *Schedule) CollectStates()
- func (s *Schedule) Data(rh *RunHistory, st *State, a *conf.Alert, isEmail bool) *Context
- func (s *Schedule) DeleteMetadata(tags opentsdb.TagSet, name string) error
- func (s *Schedule) ExecuteBadTemplate(errs []error, rh *RunHistory, a *conf.Alert, st *State) (subject, body []byte, err error)
- func (s *Schedule) ExecuteBody(rh *RunHistory, a *conf.Alert, st *State, isEmail bool) ([]byte, []*conf.Attachment, error)
- func (s *Schedule) ExecuteSubject(rh *RunHistory, a *conf.Alert, st *State, isEmail bool) ([]byte, error)
- func (s *Schedule) ExprGraph(t miniprofiler.Timer, unit string, res []*expr.Result) (chart.Chart, error)
- func (s *Schedule) ExprPNG(t miniprofiler.Timer, w io.Writer, width, height int, unit string, ...) error
- func (s *Schedule) ExprSVG(t miniprofiler.Timer, w io.Writer, width, height int, unit string, ...) error
- func (s *Schedule) GetIncident(id uint64) (*models.Incident, error)
- func (s *Schedule) GetIncidentEvents(id uint64) (*models.Incident, []Event, []Action, error)
- func (s *Schedule) GetIncidents(alert string, from, to time.Time) ([]*models.Incident, error)
- func (s *Schedule) GetLockStatus() (holder string, since time.Time)
- func (s *Schedule) GetMetadata(metric string, subset opentsdb.TagSet) ([]metadata.Metasend, error)
- func (s *Schedule) GetOpenStates() States
- func (s *Schedule) GetOrCreateStatus(ak models.AlertKey) *State
- func (s *Schedule) GetStateFileBackup() ([]byte, error)
- func (s *Schedule) GetStatus(ak models.AlertKey) *State
- func (s *Schedule) Host(filter string) (map[string]*HostData, error)
- func (s *Schedule) Init(c *conf.Conf) error
- func (s *Schedule) Load(c *conf.Conf) error
- func (s *Schedule) LoadTempConfig(hash string) (text string, err error)
- func (s *Schedule) Lock(method string)
- func (s *Schedule) MarshalGroups(T miniprofiler.Timer, filter string) (*StateGroups, error)
- func (s *Schedule) MetadataMetrics(metric string) (*database.MetricMetadata, error)
- func (s *Schedule) NewRunHistory(start time.Time, cache *cache.Cache) *RunHistory
- func (s *Schedule) Notify(st *State, n *conf.Notification)
- func (s *Schedule) PingHosts()
- func (s *Schedule) PutMetadata(k metadata.Metakey, v interface{}) error
- func (s *Schedule) RestoreState() error
- func (s *Schedule) Run() error
- func (s *Schedule) RunAlert(a *conf.Alert)
- func (s *Schedule) RunHistory(r *RunHistory)
- func (s *Schedule) SaveTempConfig(text string) (hash string, err error)
- func (s *Schedule) SetStatus(ak models.AlertKey, st *State)
- func (s *Schedule) Silenced() map[models.AlertKey]models.Silence
- func (s *Schedule) Unlock()
- type ServiceStatus
- type State
- func (s *State) AbnormalEvent() *Event
- func (s *State) AbnormalStatus() Status
- func (s *State) Action(user, message string, t ActionType, timestamp time.Time)
- func (s *State) AlertKey() models.AlertKey
- func (s *State) Append(event *Event) Status
- func (s *State) Copy() *State
- func (s *State) IsActive() bool
- func (s *State) Last() Event
- func (s *State) Status() Status
- func (s *State) Touch()
- func (s *State) WorstThisIncident() Status
- type StateGroup
- type StateGroups
- type StateTuple
- type States
- type Status
- type Temp
- type VM
- type VirtualDisk
Constants ¶
This section is empty.
Variables ¶
var DefaultSched = &Schedule{}
Functions ¶
Types ¶
type ActionType ¶
type ActionType int
const ( ActionNone ActionType = iota ActionAcknowledge ActionClose ActionForget )
func (ActionType) MarshalJSON ¶
func (a ActionType) MarshalJSON() ([]byte, error)
func (ActionType) String ¶
func (a ActionType) String() string
type BoardPowerReading ¶
type CDPCacheEntries ¶
type CDPCacheEntries []CDPCacheEntry
type CDPCacheEntry ¶
Cisco Discovery Protocol
type ChassisComponent ¶
type Context ¶
type Context struct {
*State
Alert *conf.Alert
IsEmail bool
Attachments []*conf.Attachment
// contains filtered or unexported fields
}
func (*Context) Eval ¶
Eval takes a result or an expression which it evaluates to a result. It returns a value with tags corresponding to the context's tags. If no such result is found, the first result with nil tags is returned. If no such result is found, nil is returned.
func (*Context) Expr ¶
Expr takes an expression in the form of a string, changes the tags to match the context of the alert, and returns a link to the expression page.
func (*Context) Graph ¶
Graph returns an SVG for the given result (or expression, for which it gets the result) with same tags as the context's tags.
func (*Context) GraphAll ¶
GraphAll returns an SVG for the given result (or expression, for which it gets the result).
func (*Context) GraphLink ¶
GraphLink takes an expression in the form of a string, and returns a link to the expression page's graph tab with the time set.
func (*Context) LSQueryAll ¶
func (*Context) LeftJoin ¶
LeftJoin takes slices of results and expressions for which it gets the slices of results. Then it joins the 2nd and higher slice of results onto the first slice of results. Joining is performed by group: a group that includes all tags (with same values) of the first group is a match.
func (*Context) Lookup ¶
Lookup returns the value for a key in the lookup table for the context's tagset.
type Controller ¶
type Controller struct {
Status string
StatusLastUpdated int64
metadata.HWControllerMeta
}
type Hardware ¶
type Hardware struct {
Memory map[string]*MemoryModule `json:",omitempty"`
ChassisComponents map[string]*ChassisComponent `json:",omitempty"`
Storage struct {
Controllers map[string]*Controller `json:",omitempty"`
PhysicalDisks map[string]*PhysicalDisk `json:",omitempty"`
VirtualDisks map[string]*VirtualDisk `json:",omitempty"`
Batteries map[string]*Battery
}
Temps map[string]*Temp
PowerSupplies map[string]*PowerSupply `json:",omitempty"`
BoardPowerReading *BoardPowerReading
}
type HostData ¶
type HostData struct {
CPU struct {
Logical int64 `json:",omitempty"`
Physical int64 `json:",omitempty"`
PercentUsed float64
StatsLastUpdated int64
Processors map[string]string `json:",omitempty"`
}
ICMPData map[string]*ICMPData
Disks map[string]*Disk
OpenIncidents []IncidentStatus
Interfaces map[string]*HostInterface
UptimeSeconds int64 `json:",omitempty"`
Manufacturer string `json:",omitempty"`
Hardware *Hardware `json:",omitempty"`
Memory struct {
TotalBytes float64
UsedBytes float64
StatsLastUpdated int64
}
Processes map[string]*Process `json:",omitempty"`
Services map[string]*ServiceStatus `json:",omitempty"`
Model string `json:",omitempty"`
Name string `json:",omitempty"`
OS struct {
Caption string `json:",omitempty"`
Version string `json:",omitempty"`
}
SerialNumber string `json:",omitempty"`
VM *VM `json:",omitempty"`
Guests []string `json:",omitempty"`
}
type HostInterface ¶
type HostInterface struct {
Description string `json:",omitempty"`
IPAddresses []string `json:",omitempty"`
RemoteMacs []string `json:",omitempty"`
CDPCacheEntries CDPCacheEntries `json:",omitempty"`
Inbps int64
LinkSpeed int64 `json:",omitempty"`
MAC string `json:",omitempty"`
Master string `json:",omitempty"`
Name string `json:",omitempty"`
Outbps int64
StatsLastUpdated int64
Type string
}
type IncidentStatus ¶
type MemoryModule ¶
type PhysicalDisk ¶
type PhysicalDisk struct {
Status string
StatusLastUpdated int64
metadata.HWDiskMeta
}
type PowerSupply ¶
type RunHistory ¶
type RunHistory struct {
Cache *cache.Cache
Start time.Time
Context opentsdb.Context
GraphiteContext graphite.Context
InfluxConfig client.Config
Logstash expr.LogstashElasticHosts
Events map[models.AlertKey]*Event
// contains filtered or unexported fields
}
func (*RunHistory) AtTime ¶
func (rh *RunHistory) AtTime(t time.Time) *RunHistory
AtTime creates a new RunHistory starting at t with the same context and events as rh.
func (*RunHistory) GetUnknownAndUnevaluatedAlertKeys ¶
func (r *RunHistory) GetUnknownAndUnevaluatedAlertKeys(alert string) (unknown, uneval []models.AlertKey)
type Schedule ¶
type Schedule struct {
Conf *conf.Conf
Group map[time.Time]models.AlertKeys
Search *search.Search
//notifications we are currently tracking, potentially with future or repeated actions.
Notifications map[models.AlertKey]map[string]time.Time
LastCheck time.Time
DataAccess database.DataAccess
// contains filtered or unexported fields
}
func (*Schedule) ActionNotify ¶
func (s *Schedule) ActionNotify(at ActionType, user, message string, aks []models.AlertKey)
func (*Schedule) AddNotification ¶
func (*Schedule) AddSilence ¶
func (*Schedule) AlertSuccessful ¶
func (*Schedule) CheckAlert ¶
func (s *Schedule) CheckAlert(T miniprofiler.Timer, r *RunHistory, a *conf.Alert)
func (*Schedule) CheckNotifications ¶
CheckNotifications processes past notification events. It returns the duration until the soonest notification triggers.
func (*Schedule) ClearErrors ¶
func (*Schedule) ClearSilence ¶
func (*Schedule) CollectStates ¶
func (s *Schedule) CollectStates()
CollectStates sends various state information to bosun with collect.
func (*Schedule) DeleteMetadata ¶
func (*Schedule) ExecuteBadTemplate ¶
func (*Schedule) ExecuteBody ¶
func (s *Schedule) ExecuteBody(rh *RunHistory, a *conf.Alert, st *State, isEmail bool) ([]byte, []*conf.Attachment, error)
func (*Schedule) ExecuteSubject ¶
func (*Schedule) GetIncidentEvents ¶
func (*Schedule) GetIncidents ¶
func (*Schedule) GetLockStatus ¶
func (*Schedule) GetMetadata ¶
func (*Schedule) GetOpenStates ¶
func (*Schedule) GetOrCreateStatus ¶
func (*Schedule) GetStateFileBackup ¶
func (*Schedule) LoadTempConfig ¶
Retreive the specified config text from state file.
func (*Schedule) MarshalGroups ¶
func (s *Schedule) MarshalGroups(T miniprofiler.Timer, filter string) (*StateGroups, error)
func (*Schedule) MetadataMetrics ¶
func (s *Schedule) MetadataMetrics(metric string) (*database.MetricMetadata, error)
func (*Schedule) NewRunHistory ¶
func (*Schedule) PutMetadata ¶
func (*Schedule) RestoreState ¶
RestoreState restores notification and alert state from the file on disk.
func (*Schedule) RunHistory ¶
func (s *Schedule) RunHistory(r *RunHistory)
RunHistory processes an event history and triggers notifications if needed.
func (*Schedule) SaveTempConfig ¶
Saves the provided config text in state file for later access. Returns a hash of the file to be used as a retreival key.
type ServiceStatus ¶
type State ¶
type State struct {
*Result
// Most recent last.
History []Event `json:",omitempty"`
Actions []Action `json:",omitempty"`
Touched time.Time
Alert string // helper data since AlertKeys don't serialize to JSON well
Tags string // string representation of Group
Group opentsdb.TagSet
Subject string
Body string
EmailBody []byte `json:"-"`
EmailSubject []byte `json:"-"`
Attachments []*conf.Attachment `json:"-"`
NeedAck bool
Open bool
Forgotten bool
Unevaluated bool
LastLogTime time.Time
}
func (*State) AbnormalEvent ¶
AbnormalEvent returns the most recent non-normal event, or nil if none found.
func (*State) AbnormalStatus ¶
AbnormalStatus returns the most recent non-normal status, or StNone if none found.
func (*State) Action ¶
func (s *State) Action(user, message string, t ActionType, timestamp time.Time)
func (*State) Append ¶
Append appends status to the history if the status is different than the latest status. Returns the previous status.
func (*State) WorstThisIncident ¶
WorstThisIncident returns the highest severity event with the same IncidentId as the Last event.
type StateGroup ¶
type StateGroup struct {
Active bool `json:",omitempty"`
Status Status
CurrentStatus Status
Silenced bool
IsError bool `json:",omitempty"`
Subject string `json:",omitempty"`
Alert string `json:",omitempty"`
AlertKey models.AlertKey `json:",omitempty"`
Ago string `json:",omitempty"`
State *State `json:",omitempty"`
Children []*StateGroup `json:",omitempty"`
}
type StateGroups ¶
type StateGroups struct {
Groups struct {
NeedAck []*StateGroup `json:",omitempty"`
Acknowledged []*StateGroup `json:",omitempty"`
}
TimeAndDate []int
FailingAlerts, UnclosedErrors int
}
type StateTuple ¶
type States ¶
func (States) GroupSets ¶
GroupSets returns slices of TagSets, grouped by most common ancestor. Those with no shared ancestor are grouped by alert name.
func (States) GroupStates ¶
GroupStates groups by NeedAck, Active, Status, and Silenced.
type Status ¶
type Status int