Documentation
¶
Index ¶
- Constants
- func UseFloat64(f *float64) float64
- func UseString(str *string) string
- type CheckData
- type ContactData
- type Database
- type Logger
- type MatchedMetric
- type MetricEvent
- type MetricState
- type MetricValue
- type NotificationEvent
- type NotificationEvents
- type ScheduleData
- type ScheduleDataDay
- type ScheduledNotification
- type Sender
- type SubscriptionData
- type Trigger
- type TriggerCheck
- type TriggerData
Constants ¶
const ( // FallingTrigger represents falling trigger type, in which OK > WARN > ERROR FallingTrigger = "falling" // RisingTrigger represents rising trigger type, in which OK < WARN < ERROR RisingTrigger = "rising" // ExpressionTrigger represents trigger type with custom user expression ExpressionTrigger = "expression" )
Variables ¶
This section is empty.
Functions ¶
func UseFloat64 ¶
UseFloat64 gets pointer value of float64 or default float64 if pointer is nil
Types ¶
type CheckData ¶
type CheckData struct {
Metrics map[string]MetricState `json:"metrics"`
Score int64 `json:"score"`
State string `json:"state"`
Timestamp int64 `json:"timestamp,omitempty"`
EventTimestamp int64 `json:"event_timestamp,omitempty"`
Suppressed bool `json:"suppressed,omitempty"`
SuppressedState string `json:"suppressed_state,omitempty"`
Message string `json:"msg,omitempty"`
}
CheckData represent last trigger check data
func (CheckData) GetEventTimestamp ¶
GetEventTimestamp gets event timestamp for given check
func (*CheckData) GetOrCreateMetricState ¶
func (checkData *CheckData) GetOrCreateMetricState(metric string, emptyTimestampValue int64) MetricState
GetOrCreateMetricState gets metric state from check data or create new if CheckData has no state for given metric
func (*CheckData) UpdateScore ¶
UpdateScore update and return checkData score, based on metric states and checkData state
type ContactData ¶
type ContactData struct {
Type string `json:"type"`
Value string `json:"value"`
ID string `json:"id"`
User string `json:"user"`
}
ContactData represents contact object
type Database ¶
type Database interface {
// SelfState
UpdateMetricsHeartbeat() error
GetMetricsUpdatesCount() (int64, error)
GetChecksUpdatesCount() (int64, error)
GetRemoteChecksUpdatesCount() (int64, error)
GetNotifierState() (string, error)
SetNotifierState(string) error
// Tag storing
GetTagNames() ([]string, error)
RemoveTag(tagName string) error
GetTagTriggerIDs(tagName string) ([]string, error)
// LastCheck storing
GetTriggerLastCheck(triggerID string) (CheckData, error)
SetTriggerLastCheck(triggerID string, checkData *CheckData, isRemote bool) error
RemoveTriggerLastCheck(triggerID string) error
GetTriggerCheckIDs(tags []string, onlyErrors bool) ([]string, error)
SetTriggerCheckMetricsMaintenance(triggerID string, metrics map[string]int64) error
// Trigger storing
GetTriggerIDs() ([]string, error)
GetAllTriggerIDs() ([]string, error)
GetRemoteTriggerIDs() ([]string, error)
GetTrigger(triggerID string) (Trigger, error)
GetTriggers(triggerIDs []string) ([]*Trigger, error)
GetTriggerChecks(triggerIDs []string) ([]*TriggerCheck, error)
SaveTrigger(triggerID string, trigger *Trigger) error
RemoveTrigger(triggerID string) error
GetPatternTriggerIDs(pattern string) ([]string, error)
RemovePatternTriggerIDs(pattern string) error
// Throttling
GetTriggerThrottling(triggerID string) (time.Time, time.Time)
SetTriggerThrottling(triggerID string, next time.Time) error
DeleteTriggerThrottling(triggerID string) error
// NotificationEvent storing
GetNotificationEvents(triggerID string, start, size int64) ([]*NotificationEvent, error)
PushNotificationEvent(event *NotificationEvent, ui bool) error
GetNotificationEventCount(triggerID string, from int64) int64
FetchNotificationEvent() (NotificationEvent, error)
RemoveAllNotificationEvents() error
// ContactData storing
GetContact(contactID string) (ContactData, error)
GetContacts(contactIDs []string) ([]*ContactData, error)
GetAllContacts() ([]*ContactData, error)
RemoveContact(contactID string) error
SaveContact(contact *ContactData) error
GetUserContactIDs(userLogin string) ([]string, error)
// SubscriptionData storing
GetSubscription(id string) (SubscriptionData, error)
GetSubscriptions(subscriptionIDs []string) ([]*SubscriptionData, error)
SaveSubscription(subscription *SubscriptionData) error
SaveSubscriptions(subscriptions []*SubscriptionData) error
RemoveSubscription(subscriptionID string) error
GetUserSubscriptionIDs(userLogin string) ([]string, error)
GetTagsSubscriptions(tags []string) ([]*SubscriptionData, error)
// ScheduledNotification storing
GetNotifications(start, end int64) ([]*ScheduledNotification, int64, error)
RemoveNotification(notificationKey string) (int64, error)
RemoveAllNotifications() error
FetchNotifications(to int64) ([]*ScheduledNotification, error)
AddNotification(notification *ScheduledNotification) error
AddNotifications(notification []*ScheduledNotification, timestamp int64) error
// Patterns and metrics storing
GetPatterns() ([]string, error)
AddPatternMetric(pattern, metric string) error
GetPatternMetrics(pattern string) ([]string, error)
RemovePattern(pattern string) error
RemovePatternsMetrics(pattern []string) error
RemovePatternWithMetrics(pattern string) error
SubscribeMetricEvents(tomb *tomb.Tomb) (<-chan *MetricEvent, error)
SaveMetrics(buffer map[string]*MatchedMetric) error
GetMetricRetention(metric string) (int64, error)
GetMetricsValues(metrics []string, from int64, until int64) (map[string][]*MetricValue, error)
RemoveMetricValues(metric string, toTime int64) error
RemoveMetricsValues(metrics []string, toTime int64) error
AddTriggersToCheck(triggerIDs []string) error
GetTriggerToCheck() (string, error)
GetTriggersToCheckCount() (int64, error)
AddRemoteTriggersToCheck(triggerIDs []string) error
GetRemoteTriggerToCheck() (string, error)
GetRemoteTriggersToCheckCount() (int64, error)
// TriggerCheckLock storing
AcquireTriggerCheckLock(triggerID string, timeout int) error
DeleteTriggerCheckLock(triggerID string) error
SetTriggerCheckLock(triggerID string) (bool, error)
// Bot data storing
GetIDByUsername(messenger, username string) (string, error)
SetUsernameID(messenger, username, id string) error
RemoveUser(messenger, username string) error
RegisterBotIfAlreadyNot(messenger string, ttl time.Duration) bool
RenewBotRegistration(messenger string) bool
DeregisterBots()
DeregisterBot(messenger string) bool
}
Database implements DB functionality
type Logger ¶
type Logger interface {
Debug(args ...interface{})
Debugf(format string, args ...interface{})
Info(args ...interface{})
Infof(format string, args ...interface{})
Error(args ...interface{})
Errorf(format string, args ...interface{})
Fatal(args ...interface{})
Fatalf(format string, args ...interface{})
Warning(args ...interface{})
Warningf(format string, args ...interface{})
}
Logger implements logger abstraction
type MatchedMetric ¶
type MatchedMetric struct {
Metric string
Patterns []string
Value float64
Timestamp int64
RetentionTimestamp int64
Retention int
}
MatchedMetric represent parsed and matched metric data
type MetricEvent ¶
MetricEvent represent filter metric event
type MetricState ¶
type MetricState struct {
EventTimestamp int64 `json:"event_timestamp"`
State string `json:"state"`
Suppressed bool `json:"suppressed"`
SuppressedState string `json:"suppressed_state,omitempty"`
Timestamp int64 `json:"timestamp"`
Value *float64 `json:"value,omitempty"`
Maintenance int64 `json:"maintenance,omitempty"`
}
MetricState represent metric state data for given timestamp
func (*MetricState) GetCheckPoint ¶
func (metricState *MetricState) GetCheckPoint(checkPointGap int64) int64
GetCheckPoint gets check point for given MetricState CheckPoint is the timestamp from which to start checking the current state of the metric
func (MetricState) GetEventTimestamp ¶
func (metricState MetricState) GetEventTimestamp() int64
GetEventTimestamp gets event timestamp for given metric
type MetricValue ¶
type MetricValue struct {
RetentionTimestamp int64 `json:"step,omitempty"`
Timestamp int64 `json:"ts"`
Value float64 `json:"value"`
}
MetricValue represent metric data
type NotificationEvent ¶
type NotificationEvent struct {
IsTriggerEvent bool `json:"trigger_event,omitempty"`
Timestamp int64 `json:"timestamp"`
Metric string `json:"metric"`
Value *float64 `json:"value,omitempty"`
State string `json:"state"`
TriggerID string `json:"trigger_id"`
SubscriptionID *string `json:"sub_id,omitempty"`
ContactID string `json:"contactId,omitempty"`
OldState string `json:"old_state"`
Message *string `json:"msg,omitempty"`
}
NotificationEvent represents trigger state changes event
func (NotificationEvent) String ¶
func (eventData NotificationEvent) String() string
type NotificationEvents ¶
type NotificationEvents []NotificationEvent
NotificationEvents represents slice of NotificationEvent
func (NotificationEvents) GetSubjectState ¶
func (events NotificationEvents) GetSubjectState() string
GetSubjectState returns the most critical state of events
type ScheduleData ¶
type ScheduleData struct {
Days []ScheduleDataDay `json:"days"`
TimezoneOffset int64 `json:"tzOffset"`
StartOffset int64 `json:"startOffset"`
EndOffset int64 `json:"endOffset"`
}
ScheduleData represent subscription schedule
func (*ScheduleData) IsScheduleAllows ¶
func (schedule *ScheduleData) IsScheduleAllows(ts int64) bool
IsScheduleAllows check if the time is in the allowed schedule interval
type ScheduleDataDay ¶
ScheduleDataDay represent week day of schedule
type ScheduledNotification ¶
type ScheduledNotification struct {
Event NotificationEvent `json:"event"`
Trigger TriggerData `json:"trigger"`
Contact ContactData `json:"contact"`
Throttled bool `json:"throttled"`
SendFail int `json:"send_fail"`
Timestamp int64 `json:"timestamp"`
}
ScheduledNotification represent notification object
func (*ScheduledNotification) GetKey ¶
func (notification *ScheduledNotification) GetKey() string
GetKey return notification key to prevent duplication to the same contact
type Sender ¶
type Sender interface {
SendEvents(events NotificationEvents, contact ContactData, trigger TriggerData, throttled bool) error
Init(senderSettings map[string]string, logger Logger, location *time.Location, dateTimeFormat string) error
}
Sender interface for implementing specified contact type sender
type SubscriptionData ¶
type SubscriptionData struct {
Contacts []string `json:"contacts"`
Tags []string `json:"tags"`
Schedule ScheduleData `json:"sched"`
ID string `json:"id"`
Enabled bool `json:"enabled"`
IgnoreWarnings bool `json:"ignore_warnings,omitempty"`
IgnoreRecoverings bool `json:"ignore_recoverings,omitempty"`
ThrottlingEnabled bool `json:"throttling"`
User string `json:"user"`
}
SubscriptionData represent user subscription
func (*SubscriptionData) MustIgnore ¶
func (subscription *SubscriptionData) MustIgnore(eventData *NotificationEvent) bool
MustIgnore returns true if given state transition must be ignored
type Trigger ¶
type Trigger struct {
ID string `json:"id"`
Name string `json:"name"`
Desc *string `json:"desc,omitempty"`
Targets []string `json:"targets"`
WarnValue *float64 `json:"warn_value"`
ErrorValue *float64 `json:"error_value"`
TriggerType string `json:"trigger_type"`
Tags []string `json:"tags"`
TTLState *string `json:"ttl_state,omitempty"`
TTL int64 `json:"ttl,omitempty"`
Schedule *ScheduleData `json:"sched,omitempty"`
Expression *string `json:"expression,omitempty"`
PythonExpression *string `json:"python_expression,omitempty"`
Patterns []string `json:"patterns"`
IsRemote bool `json:"is_remote"`
}
Trigger represents trigger data object
type TriggerCheck ¶
type TriggerCheck struct {
Trigger
Throttling int64 `json:"throttling"`
LastCheck CheckData `json:"last_check"`
}
TriggerCheck represent trigger data with last check data and check timestamp
type TriggerData ¶
type TriggerData struct {
ID string `json:"id"`
Name string `json:"name"`
Desc string `json:"desc"`
Targets []string `json:"targets"`
WarnValue float64 `json:"warn_value"`
ErrorValue float64 `json:"error_value"`
Tags []string `json:"__notifier_trigger_tags"`
}
TriggerData represents trigger object
func (*TriggerData) GetTags ¶
func (trigger *TriggerData) GetTags() string
GetTags returns "[tag1][tag2]...[tagN]" string
Directories
¶
| Path | Synopsis |
|---|---|
|
dto
nolint nolint nolint nolint nolint nolint nolint nolint nolint
|
nolint nolint nolint nolint nolint nolint nolint nolint nolint |
|
api
command
|
|
|
checker
command
|
|
|
cli
command
|
|
|
filter
command
|
|
|
notifier
command
|
|
|
logging
|
|
|
metrics
|
|
|
graphite/go-metrics
nolint nolint nolint nolint nolint nolint
|
nolint nolint nolint nolint nolint nolint |
|
mock
|
|
|
moira-alert
Package mock_moira_alert is a generated GoMock package.
|
Package mock_moira_alert is a generated GoMock package. |
|
notifier
Package mock_notifier is a generated GoMock package.
|
Package mock_notifier is a generated GoMock package. |
|
scheduler
Package mock_scheduler is a generated GoMock package.
|
Package mock_scheduler is a generated GoMock package. |
|
senders
|
|
