alert

package
v0.7.8-rc Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 16, 2024 License: Apache-2.0 Imports: 14 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrRelation = errors.New("provider id does not exist")
)

Functions

func BuildNotifications added in v0.7.6

func BuildNotifications(
	alerts []Alert,
	firingLen int,
	createdTime time.Time,
	groupByLabels []string,
) ([]notification.Notification, error)

Transform alerts and populate Data and Labels to be interpolated to the system-default template .Data - id - status "FIRING"/"RESOLVED" - resource - template - metric_value - metric_name - generator_url - num_alerts_firing - dashboard - playbook - summary .Labels - severity "WARNING"/"CRITICAL" - alertname - (others labels defined in rules)

Types

type Alert

type Alert struct {
	ID            uint64    `json:"id"`
	ProviderID    uint64    `json:"provider_id"`
	NamespaceID   uint64    `json:"namespace_id"`
	ResourceName  string    `json:"resource_name"`
	MetricName    string    `json:"metric_name"`
	MetricValue   string    `json:"metric_value"`
	Severity      string    `json:"severity"`
	Rule          string    `json:"rule"`
	TriggeredAt   time.Time `json:"triggered_at"`
	CreatedAt     time.Time `json:"created_at"`
	UpdatedAt     time.Time `json:"updated_at"`
	SilenceStatus string    `json:"silence_status"`

	// These fields won't be stored in the DB
	// these are additional information for notification purposes
	GroupKey     string
	Status       string
	Annotations  map[string]string
	Labels       map[string]string
	GeneratorURL string
	Fingerprint  string
}

func FromV1beta1Proto added in v0.6.7

func FromV1beta1Proto(proto *sirenv1beta1.Alert) *Alert

func (*Alert) ToV1beta1Proto added in v0.6.7

func (a *Alert) ToV1beta1Proto() *sirenv1beta1.Alert

type AlertTransformer

type AlertTransformer interface {
	TransformToAlerts(ctx context.Context, providerID uint64, namespaceID uint64, body map[string]any) ([]Alert, int, error)
}

type Config added in v0.7.6

type Config struct {
	GroupBy []string `mapstructure:"group_by" yaml:"group_by"`
}

type Filter

type Filter struct {
	ResourceName string
	ProviderID   uint64
	NamespaceID  uint64
	StartTime    int64
	EndTime      int64
	SilenceID    string
	IDs          []int64
}

type LogService

type LogService interface {
	ListAlertIDsBySilenceID(ctx context.Context, silenceID string) ([]int64, error)
}

type NotificationService added in v0.7.6

type NotificationService interface {
	Dispatch(context.Context, []notification.Notification) ([]string, error)
}

type Repository

type Repository interface {
	Create(context.Context, Alert) (Alert, error)
	List(context.Context, Filter) ([]Alert, error)
	BulkUpdateSilence(context.Context, []int64, string) error
}

type Service

type Service struct {
	// contains filtered or unexported fields
}

Service handles business logic

func NewService

func NewService(cfg Config, logger saltlog.Logger, repository Repository, logService LogService, notificationService NotificationService, registry map[string]AlertTransformer) *Service

NewService returns repository struct

func (*Service) CreateAlerts

func (s *Service) CreateAlerts(ctx context.Context, providerType string, providerID uint64, namespaceID uint64, body map[string]any) (alerts []Alert, err error)

func (*Service) List

func (s *Service) List(ctx context.Context, flt Filter) ([]Alert, error)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL