Documentation ¶
Index ¶
- Variables
- func FinalizerReceiver(embeddedServerHook string) *config.Receiver
- func NewNamespaceLeaf(rl rateLimitingConfig, opniConfigs []config.OpniReceiver, ...) (*config.Route, *config.Receiver)
- func NewNamespaceTree(namespace string, defaultValues ...RouteValues) (*config.Route, []*config.Receiver)
- func NewNotificationLeaf(namespace string, value RouteValues) (*config.Route, *config.Receiver)
- func NewOpniMetricsSubtree() *config.Route
- func NewOpniSubRoutingTree() (*config.Route, []*config.Receiver)
- func NewRootNode(embeddedServerHook string) *config.Config
- func NewRoutingTree(embeddedServerHook string) *config.Config
- func NotificationSubTreeLabel() string
- type OpniRouterV1
- func (o *OpniRouterV1) BuildConfig() (*config.Config, error)
- func (o *OpniRouterV1) Clone() OpniRouting
- func (o *OpniRouterV1) DeleteEndpoint(id string) error
- func (o *OpniRouterV1) HasLabels(routingId string) []*labels.Matcher
- func (o *OpniRouterV1) HasReceivers(routingId string) []string
- func (o *OpniRouterV1) MarshalYAML() ([]byte, error)
- func (o *OpniRouterV1) Merge(_ OpniRouting) (OpniRouting, error)
- func (o *OpniRouterV1) Search(map[string]string) []*config.Route
- func (o *OpniRouterV1) SetDefaultNamespaceConfig(endpoints []*alertingv1.AlertEndpoint) error
- func (o *OpniRouterV1) SetDefaultReceiver(endpoint url.URL)
- func (o *OpniRouterV1) SetNamespaceSpec(namespace, routeId string, specs *alertingv1.FullAttachedEndpoints) error
- func (o *OpniRouterV1) SyncExternalConfig(content []byte) error
- func (o *OpniRouterV1) UnmarshalYAML(unmarshal func(interface{}) error) error
- func (o *OpniRouterV1) UpdateEndpoint(id string, spec *alertingv1.AlertEndpoint) error
- func (o *OpniRouterV1) Walk(map[string]string, func(int, *config.Route) error) error
- type OpniRouting
- type ProductionConfigSyncer
- type RouteValues
- type RoutingIdentifer
Constants ¶
This section is empty.
Variables ¶
var OpniMetricsSubRoutingTreeId config.Matchers = []*labels.Matcher{ alertingv1.OpniMetricsSubRoutingTreeMatcher, }
var OpniSubRoutingTreeId config.Matchers = []*labels.Matcher{ alertingv1.OpniSubRoutingTreeMatcher, }
Functions ¶
func FinalizerReceiver ¶ added in v0.9.0
func NewNamespaceLeaf ¶ added in v0.9.0
func NewNamespaceLeaf( rl rateLimitingConfig, opniConfigs []config.OpniReceiver, matchers []*labels.Matcher, receiverId string, ) (*config.Route, *config.Receiver)
new namespace matcher
func NewNamespaceTree ¶ added in v0.9.0
func NewNotificationLeaf ¶ added in v0.9.0
func NewOpniMetricsSubtree ¶
this subtree connects to cortex
func NewOpniSubRoutingTree ¶
returns the subtree & the default receivers contains the setup for broadcasting and conditions
func NewRootNode ¶ added in v0.9.0
This needs to expand all labels, due to assumptions we make about external backends like AiOps pushing messages to the severity tree
func NewRoutingTree ¶ added in v0.9.0
func NotificationSubTreeLabel ¶ added in v0.9.0
func NotificationSubTreeLabel() string
Types ¶
type OpniRouterV1 ¶
type OpniRouterV1 struct { HookEndpoint url.URL `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 *url.URL) *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) SetDefaultNamespaceConfig ¶
func (o *OpniRouterV1) SetDefaultNamespaceConfig(endpoints []*alertingv1.AlertEndpoint) error
func (*OpniRouterV1) SetDefaultReceiver ¶ added in v0.9.0
func (o *OpniRouterV1) SetDefaultReceiver(endpoint url.URL)
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
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 RouteValues ¶ added in v0.9.0
RouteValues (receiver name, rate limiting config)
func NotificationSubTreeValues ¶ added in v0.9.0
func NotificationSubTreeValues() []RouteValues
! 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