Documentation
¶
Index ¶
- type Config
- type Diagnostic
- type Event
- type EventData
- type HandlerConfig
- type Service
- func (s *Service) Alert(state *alert.EventState, data *alert.EventData, hc *HandlerConfig) error
- func (s *Service) Close() error
- func (s *Service) Global() bool
- func (s *Service) Handler(c HandlerConfig, ctx ...keyvalue.T) alert.Handler
- func (s *Service) Open() error
- func (s *Service) StateChangesOnly() bool
- func (s *Service) Test(options interface{}) error
- func (s *Service) TestOptions() interface{}
- func (s *Service) Update(newConfig []interface{}) error
- type SeverityMap
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
// Whether Zenoss integration is enabled.
Enabled bool `toml:"enabled" override:"enabled"`
// Zenoss events API URL.
URL string `toml:"url" override:"url"`
// Zenoss authentication username.
Username string `toml:"username" override:"username"`
// Zenoss authentication password.
Password string `toml:"password" override:"password,redact"`
// Action (router name).
Action string `toml:"action" override:"action"`
// Router method.
Method string `toml:"method" override:"method"`
// Event type.
Type string `toml:"type" override:"type"`
// Event TID.
TID int64 `toml:"tid" override:"tid"`
// Collector name.
Collector string `toml:"collector" override:"collector"`
// Level to severity map.
SeverityMap SeverityMap `toml:"severity-map" override:"severity-map"`
// Whether all alerts should automatically post to Zenoss.
Global bool `toml:"global" override:"global"`
// Whether all alerts should automatically use stateChangesOnly mode.
// Only applies if global is also set.
StateChangesOnly bool `toml:"state-changes-only" override:"state-changes-only"`
}
type Diagnostic ¶
type Diagnostic interface {
WithContext(ctx ...keyvalue.T) Diagnostic
Error(msg string, err error)
}
type Event ¶
type Event struct {
Action string `json:"action"`
Method string `json:"method"`
Data []map[string]interface{} `json:"data"`
Type string `json:"type"`
TID int64 `json:"tid"`
}
Event is a structure representing Zenoss event.
type EventData ¶
type EventData struct {
Summary string `json:"summary"`
Device string `json:"device"`
Component string `json:"component"`
Severity interface{} `json:"severity"`
EvClassKey string `json:"evclasskey"`
EvClass string `json:"evclass"`
Collector string `json:"collector,omitempty"`
Message string `json:"message,omitempty"`
}
EventData represents Zenoss event data. All fields should be present in JSON.
type HandlerConfig ¶
type HandlerConfig struct {
// Action (router name).
// If empty uses action from the configuration.
Action string `mapstructure:"action"`
// Router method.
// If empty uses method from the configuration.
Method string `mapstructure:"method"`
// Event type.
// If empty uses type from the configuration.
Type string `mapstructure:"type"`
// Event TID.
// If empty uses TID from the configuration.
TID int64 `mapstructure:"tid"`
// Summary of the event.
Summary string `json:"summary"`
// Device related to the event.
Device string `json:"device"`
// Component related to the event.
Component string `json:"component"`
// Event Class Key of the event.
EventClassKey string `json:"evclasskey"`
// Event Class of the event.
EventClass string `json:"evclass"`
// Collector (typically IP or hostname).
Collector string `json:"collector"`
// Message related to the event.
Message string `json:"message"`
// Custom fields is a map of key value pairs.
CustomFields map[string]interface{} `mapstructure:"customField"`
}
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
func NewService ¶
func NewService(c Config, d Diagnostic) *Service
func (*Service) Alert ¶
func (s *Service) Alert(state *alert.EventState, data *alert.EventData, hc *HandlerConfig) error
func (*Service) StateChangesOnly ¶
func (*Service) TestOptions ¶
func (s *Service) TestOptions() interface{}
type SeverityMap ¶
type SeverityMap struct {
// OK level mapping to severity (number or string)
OK interface{} `toml:"OK" json:"ok"`
// Info level mapping to severity (number or string)
Info interface{} `toml:"Info" json:"info"`
// Warning level mapping to severity (number or string)
Warning interface{} `toml:"Warning" json:"warning"`
// Critical level mapping to severity (number or string)
Critical interface{} `toml:"Critical" json:"critical"`
}
func (*SeverityMap) CustomMapStructure ¶
func (s *SeverityMap) CustomMapStructure(m map[string]interface{}) error
Implements override.CustomMapStructurer because newer versions of github.com/mitchellh/mapstructure do not handle overwriting interface values inside structs with a new type.
func (*SeverityMap) ValueFor ¶
func (s *SeverityMap) ValueFor(level alert.Level) interface{}
Click to show internal directories.
Click to hide internal directories.