Documentation ¶
Overview ¶
Package statuscheck defines the status report API for other CN-Infra plugins and implements the health status aggregator/exporter. Health status is collected from other plugins through the plugin status report API and aggregated and exported/exposed via ETCD or a REST API.
The API provides only two functions, one for registering the plugin for status change reporting and one for reporting status changes.
To register a plugin for providing status reports, use Register() function:
statuscheck.Register(PluginID, probe)
If probe is not nil, statuscheck will periodically probe the plugin state through the provided function. Otherwise, it is expected that the plugin itself will report state updates through ReportStateChange(), e.g.:
statuscheck.ReportStateChange(PluginID, statuscheck.OK, nil)
The default status of a plugin after registering is Init.
Index ¶
- Variables
- type AgentStatusReader
- type Deps
- type InterfaceStatusReader
- type Option
- type Plugin
- func (p *Plugin) AfterInit() error
- func (p *Plugin) Close() error
- func (p *Plugin) GetAgentStatus() status.AgentStatus
- func (p *Plugin) GetAllPluginStatus() map[string]*status.PluginStatus
- func (p *Plugin) GetInterfaceStats() status.InterfaceStats
- func (p *Plugin) Init() error
- func (p *Plugin) Register(pluginName infra.PluginName, probe PluginStateProbe)
- func (p *Plugin) ReportStateChange(pluginName infra.PluginName, state PluginState, lastError error)
- func (p *Plugin) ReportStateChangeWithMeta(pluginName infra.PluginName, state PluginState, lastError error, ...)
- type PluginState
- type PluginStateProbe
- type PluginStatusWriter
- type StatusReader
Constants ¶
This section is empty.
Variables ¶
var ( // PeriodicWriteTimeout is frequency of periodic writes of state data into ETCD. PeriodicWriteTimeout = time.Second * 10 // PeriodicProbingTimeout is frequency of periodic plugin state probing. PeriodicProbingTimeout = time.Second * 5 )
var DefaultPlugin = *NewPlugin()
DefaultPlugin is a default instance of Plugin.
Functions ¶
This section is empty.
Types ¶
type AgentStatusReader ¶
type AgentStatusReader interface { // GetAgentStatus returns the current global operational state of the agent. GetAgentStatus() status.AgentStatus }
AgentStatusReader allows to lookup agent status by other plugins.
type Deps ¶
type Deps struct { infra.PluginName // inject Log logging.PluginLogger // inject Transport datasync.KeyProtoValWriter // inject (optional) }
Deps lists the dependencies of statuscheck plugin.
type InterfaceStatusReader ¶
type InterfaceStatusReader interface {
GetInterfaceStats() status.InterfaceStats
}
InterfaceStatusReader looks up the interface state and returns updated state data
type Option ¶
type Option func(*Plugin)
Option is a function that can be used in NewPlugin to customize Plugin.
type Plugin ¶
type Plugin struct { Deps // contains filtered or unexported fields }
Plugin struct holds all plugin-related data.
func (*Plugin) AfterInit ¶
AfterInit starts go routines for periodic probing and periodic updates. Initial state data are published via the injected transport.
func (*Plugin) GetAgentStatus ¶
func (p *Plugin) GetAgentStatus() status.AgentStatus
GetAgentStatus return current global operational state of the agent.
func (*Plugin) GetAllPluginStatus ¶
func (p *Plugin) GetAllPluginStatus() map[string]*status.PluginStatus
GetAllPluginStatus returns a map containing pluginname and its status, for all plugins
func (*Plugin) GetInterfaceStats ¶
func (p *Plugin) GetInterfaceStats() status.InterfaceStats
GetInterfaceStats returns current global operational status of interfaces
func (*Plugin) Register ¶
func (p *Plugin) Register(pluginName infra.PluginName, probe PluginStateProbe)
Register a plugin for status change reporting.
func (*Plugin) ReportStateChange ¶
func (p *Plugin) ReportStateChange(pluginName infra.PluginName, state PluginState, lastError error)
ReportStateChange can be used to report a change in the status of a previously registered plugin.
func (*Plugin) ReportStateChangeWithMeta ¶
func (p *Plugin) ReportStateChangeWithMeta(pluginName infra.PluginName, state PluginState, lastError error, meta proto.Message)
ReportStateChangeWithMeta can be used to report a change in the status of a previously registered plugin and report the specific metadata state
type PluginState ¶
type PluginState string
PluginState is a data type used to describe the current operational state of a plugin.
const ( // Init state means that the initialization of the plugin is in progress. Init PluginState = "init" // OK state means that the plugin is healthy. OK PluginState = "ok" // Error state means that some error has occurred in the plugin. Error PluginState = "error" )
type PluginStateProbe ¶
type PluginStateProbe func() (PluginState, error)
PluginStateProbe defines parameters of a function used for plugin state probing, referred to as "probe".
type PluginStatusWriter ¶
type PluginStatusWriter interface { // Register registers a plugin for status change reporting. // If <probe> is not nil, Statuscheck will periodically probe the plugin // state through the provided function. Otherwise, it is expected that the // plugin itself will report state updates through ReportStateChange(). Register(pluginName infra.PluginName, probe PluginStateProbe) // ReportStateChange can be used to report a change in the status // of a previously registered plugin. It is not a bug, however, to report // the same status in consecutive calls. Statuscheck is smart enough // to detect an actual status change and propagate only updates to remote // clients. ReportStateChange(pluginName infra.PluginName, state PluginState, lastError error) // ReportStateChangeWithMeta can be used to report a change in the status // of a previously registered plugin with added metadata value stored in // global agent status. Metadata type is specified in statuscheck model. ReportStateChangeWithMeta(pluginName infra.PluginName, state PluginState, lastError error, meta proto.Message) }
PluginStatusWriter allows to register & write plugin status by other plugins
type StatusReader ¶
type StatusReader interface { AgentStatusReader InterfaceStatusReader GetAllPluginStatus() map[string]*status.PluginStatus }
StatusReader allows to lookup agent status and retrieve a map containing status of all plugins.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
model
|
|
Package pluginstatusmap implements specialization of idxmap used to store plugin status by plugin name.
|
Package pluginstatusmap implements specialization of idxmap used to store plugin status by plugin name. |