routing

package
v0.9.0-rc1 Latest Latest
Warning

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

Go to latest
Published: Mar 10, 2023 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

Functions

func DefaultOpniReceiver

func DefaultOpniReceiver(embeddedServerHook string) *config.Receiver

func DefaultSubTreeLabel

func DefaultSubTreeLabel() string

func NewDefaultRoutingTree

func NewDefaultRoutingTree(embeddedServerHook string) *config.Config

func NewDefaultRoutingTreeRoot

func NewDefaultRoutingTreeRoot(embeddedServerHook string) *config.Config

This needs to expand all labels, due to assumptions we make about external backends like AiOps pushing messages to the severity tree

func NewOpniAlarmLabels

func NewOpniAlarmLabels(conditionId string) (map[string]string, error)

func NewOpniMetricsSubtree

func NewOpniMetricsSubtree() *config.Route

this subtree connects to cortex

func NewOpniNamespacedSubTree

func NewOpniNamespacedSubTree(namespace string, defaultValues ...DefaultRouteValues) (*config.Route, []*config.Receiver)

func NewOpniSeverityLabels

func NewOpniSeverityLabels(title, body, severity string) (map[string]string, error)

func NewOpniSubRoutingTree

func NewOpniSubRoutingTree() (*config.Route, []*config.Receiver)

returns the subtree & the default receivers contains the setup for broadcasting and conditions

func NewOpniSubRoutingTreeWithDefaultValue

func NewOpniSubRoutingTreeWithDefaultValue(namespace string, value DefaultRouteValues) (*config.Route, *config.Receiver)

func NewOpniSubRoutingTreeWithValue

func NewOpniSubRoutingTreeWithValue(rl rateLimitingConfig, opniConfigs []config.OpniReceiver, matchers []*labels.Matcher, receiverId string) (*config.Route, *config.Receiver)

new namespace matcher

Types

type DefaultRouteValues added in v0.8.3

type DefaultRouteValues lo.Tuple2[string, rateLimitingConfig]

DefaultRouteValues (receiver name, rate limiting config)

func DefaultSubTreeValues

func DefaultSubTreeValues() []DefaultRouteValues

! values must be returned sorted in a deterministic order

these are used by the router to catch eveyrthing that is not an explicit alarm that is also part of opni, i.e. plain text notifications

type OpniRouterV1

type OpniRouterV1 struct {
	HookEndpoint string `yaml:"hookEndpoint,omitempty" json:"hookEndpoint,omitempty"`
	// Contains an AlertManager config not created and managed by Opni
	SyncedConfig *config.Config `yaml:"embeddedConfig,omitempty" json:"embeddedConfig,omitempty"`

	// defaultNamespaceValue -> endpointId -> OpniConfig
	DefaultNamespaceConfigs defaultNamespaceConfigs `yaml:"defaultNamespaceConfigs,omitempty" json:"defaultNamespaceConfigs,omitempty"`
	// namespace -> routeId -> endpointId -> OpniConfig
	NamespacedSpecs namespacedSpecs `yaml:"namespacedSpecs,omitempty" json:"namespacedSpecs,omitempty"`
	// namespace -> routeId -> 	rateLimitingConfig
	NamespacedRateLimiting namespaceRateLimiting `yaml:"namespacedRateLimiting,omitempty" json:"namespacedRateLimiting,omitempty"`
}

indexes using endpointId for scalability

func NewOpniRouterV1

func NewOpniRouterV1(hookEndpoint string) *OpniRouterV1

func (*OpniRouterV1) BuildConfig

func (o *OpniRouterV1) BuildConfig() (*config.Config, error)

func (*OpniRouterV1) Clone

func (o *OpniRouterV1) Clone() OpniRouting

func (*OpniRouterV1) DeleteEndpoint

func (o *OpniRouterV1) DeleteEndpoint(id string) error

func (*OpniRouterV1) HasLabels

func (o *OpniRouterV1) HasLabels(routingId string) []*labels.Matcher

func (*OpniRouterV1) HasReceivers

func (o *OpniRouterV1) HasReceivers(routingId string) []string

func (*OpniRouterV1) MarshalYAML

func (o *OpniRouterV1) MarshalYAML() ([]byte, error)

func (*OpniRouterV1) Merge

func (o *OpniRouterV1) Merge(_ OpniRouting) (OpniRouting, error)

func (*OpniRouterV1) Search

func (o *OpniRouterV1) Search(map[string]string) []*config.Route

func (*OpniRouterV1) SetDefaultNamespaceConfig

func (o *OpniRouterV1) SetDefaultNamespaceConfig(endpoints []*alertingv1.AlertEndpoint) error

func (*OpniRouterV1) SetNamespaceSpec

func (o *OpniRouterV1) SetNamespaceSpec(namespace, routeId string, specs *alertingv1.FullAttachedEndpoints) error

func (*OpniRouterV1) SyncExternalConfig

func (o *OpniRouterV1) SyncExternalConfig(content []byte) error

func (*OpniRouterV1) UnmarshalYAML

func (o *OpniRouterV1) UnmarshalYAML(unmarshal func(interface{}) error) error

func (*OpniRouterV1) UpdateEndpoint

func (o *OpniRouterV1) UpdateEndpoint(id string, spec *alertingv1.AlertEndpoint) error

func (*OpniRouterV1) Walk

func (o *OpniRouterV1) Walk(map[string]string, func(int, *config.Route) error) error

type OpniRouting

type OpniRouting interface {
	ProductionConfigSyncer
	RoutingIdentifer

	yaml.Unmarshaler
	MarshalYAML() ([]byte, error)

	SetDefaultNamespaceConfig(endps []*alertingv1.AlertEndpoint) error
	SetNamespaceSpec(namespace string, routeId string, specs *alertingv1.FullAttachedEndpoints) error
	// When an already attached endpoint is updated, propagate updates to the routing tree
	UpdateEndpoint(id string, spec *alertingv1.AlertEndpoint) error
	// When an already attached endpoint is delete, propagate all deletions to the routing tree
	DeleteEndpoint(endpointId string) error

	// Converts OpniRouting to a valid AlertManager config
	// Returns a NotFound error if the a route to update or delete is not found
	// Returns a Conflict error if we try to insert a duplicate config, unique up to its keys
	BuildConfig() (*config.Config, error)
	Clone() OpniRouting
}

OpniRouting Responsible for handling the mapping of ids to configured endpoints, including indexing external configs

func NewDefaultOpniRouting

func NewDefaultOpniRouting() OpniRouting

func NewDefaultOpniRoutingWithOverrideHook

func NewDefaultOpniRoutingWithOverrideHook(hook string) OpniRouting

type ProductionConfigSyncer

type ProductionConfigSyncer interface {
	// Walks the tree of routes in the config, calling the given function
	Walk(map[string]string, func(depth int, r *config.Route) error) error
	// Returns the routes that match the given labels
	Search(labels map[string]string) []*config.Route
	// Merges two OpniRouting objects (also includes merging plain AlertManager configs for users)
	Merge(other OpniRouting) (OpniRouting, error)
	// Converts a valid AlertManager config to OpniRouting
	// Returns an FailedPrecondition error if the config cannot be unmarshalled,
	// Returns an InternalServerError if the config is invalid
	SyncExternalConfig(content []byte) error
}

WIP

type RoutingIdentifer

type RoutingIdentifer interface {
	HasLabels(routingId string) []*labels.Matcher
	HasReceivers(routingId string) []string
}

Jump to

Keyboard shortcuts

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