config

package
v0.11.0-rc4 Latest Latest
Warning

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

Go to latest
Published: Aug 9, 2023 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Overview

Embeds in `api_types.go“: - root level AlertManager configurations & configuration types - notifier configurations

Repo : github.com/prometheus/alertmanager Path: - config/config.go - config/notifiers.go Changelist : 1) Secret/SecretURL fields are marshalled and unmarshalled as strings 2) We extend methods on each notifier struct in this package's receiver.go/message.go file.

Index

Constants

This section is empty.

Variables

View Source
var (
	// DefaultWebhookConfig defines default values for Webhook configurations.
	DefaultWebhookConfig = WebhookConfig{
		NotifierConfig: NotifierConfig{
			VSendResolved: true,
		},
	}

	// DefaultWebexConfig defines default values for Webex configurations.
	DefaultWebexConfig = WebexConfig{
		NotifierConfig: NotifierConfig{
			VSendResolved: true,
		},
		Message: `{{ template "webex.default.message" . }}`,
	}

	// DefaultDiscordConfig defines default values for Discord configurations.
	DefaultDiscordConfig = DiscordConfig{
		NotifierConfig: NotifierConfig{
			VSendResolved: true,
		},
		Title:   `{{ template "discord.default.title" . }}`,
		Message: `{{ template "discord.default.message" . }}`,
	}

	// DefaultEmailConfig defines default values for Email configurations.
	DefaultEmailConfig = EmailConfig{
		NotifierConfig: NotifierConfig{
			VSendResolved: false,
		},
		HTML: `{{ template "email.default.html" . }}`,
		Text: ``,
	}

	// DefaultEmailSubject defines the default Subject header of an Email.
	DefaultEmailSubject = `{{ template "email.default.subject" . }}`

	// DefaultPagerdutyDetails defines the default values for PagerDuty details.
	DefaultPagerdutyDetails = map[string]string{
		"firing":       `{{ template "pagerduty.default.instances" .Alerts.Firing }}`,
		"resolved":     `{{ template "pagerduty.default.instances" .Alerts.Resolved }}`,
		"num_firing":   `{{ .Alerts.Firing | len }}`,
		"num_resolved": `{{ .Alerts.Resolved | len }}`,
	}

	// DefaultPagerdutyConfig defines default values for PagerDuty configurations.
	DefaultPagerdutyConfig = PagerdutyConfig{
		NotifierConfig: NotifierConfig{
			VSendResolved: true,
		},
		Description: `{{ template "pagerduty.default.description" .}}`,
		Client:      `{{ template "pagerduty.default.client" . }}`,
		ClientURL:   `{{ template "pagerduty.default.clientURL" . }}`,
	}

	// DefaultSlackConfig defines default values for Slack configurations.
	DefaultSlackConfig = SlackConfig{
		NotifierConfig: NotifierConfig{
			VSendResolved: false,
		},
		Color:      `{{ if eq .Status "firing" }}danger{{ else }}good{{ end }}`,
		Username:   `{{ template "slack.default.username" . }}`,
		Title:      `{{ template "slack.default.title" . }}`,
		TitleLink:  `{{ template "slack.default.titlelink" . }}`,
		IconEmoji:  `{{ template "slack.default.iconemoji" . }}`,
		IconURL:    `{{ template "slack.default.iconurl" . }}`,
		Pretext:    `{{ template "slack.default.pretext" . }}`,
		Text:       `{{ template "slack.default.text" . }}`,
		Fallback:   `{{ template "slack.default.fallback" . }}`,
		CallbackID: `{{ template "slack.default.callbackid" . }}`,
		Footer:     `{{ template "slack.default.footer" . }}`,
	}

	// DefaultOpsGenieConfig defines default values for OpsGenie configurations.
	DefaultOpsGenieConfig = OpsGenieConfig{
		NotifierConfig: NotifierConfig{
			VSendResolved: true,
		},
		Message:     `{{ template "opsgenie.default.message" . }}`,
		Description: `{{ template "opsgenie.default.description" . }}`,
		Source:      `{{ template "opsgenie.default.source" . }}`,
	}

	// DefaultWechatConfig defines default values for wechat configurations.
	DefaultWechatConfig = WechatConfig{
		NotifierConfig: NotifierConfig{
			VSendResolved: false,
		},
		Message: `{{ template "wechat.default.message" . }}`,
		ToUser:  `{{ template "wechat.default.to_user" . }}`,
		ToParty: `{{ template "wechat.default.to_party" . }}`,
		ToTag:   `{{ template "wechat.default.to_tag" . }}`,
		AgentID: `{{ template "wechat.default.agent_id" . }}`,
	}

	// DefaultVictorOpsConfig defines default values for VictorOps configurations.
	DefaultVictorOpsConfig = VictorOpsConfig{
		NotifierConfig: NotifierConfig{
			VSendResolved: true,
		},
		MessageType:       `CRITICAL`,
		StateMessage:      `{{ template "victorops.default.state_message" . }}`,
		EntityDisplayName: `{{ template "victorops.default.entity_display_name" . }}`,
		MonitoringTool:    `{{ template "victorops.default.monitoring_tool" . }}`,
	}

	// DefaultPushoverConfig defines default values for Pushover configurations.
	DefaultPushoverConfig = PushoverConfig{
		NotifierConfig: NotifierConfig{
			VSendResolved: true,
		},
		Title:    `{{ template "pushover.default.title" . }}`,
		Message:  `{{ template "pushover.default.message" . }}`,
		URL:      `{{ template "pushover.default.url" . }}`,
		Priority: `{{ if eq .Status "firing" }}2{{ else }}0{{ end }}`,
		Retry:    duration(1 * time.Minute),
		Expire:   duration(1 * time.Hour),
		HTML:     false,
	}

	// DefaultSNSConfig defines default values for SNS configurations.
	DefaultSNSConfig = SNSConfig{
		NotifierConfig: NotifierConfig{
			VSendResolved: true,
		},
		Subject: `{{ template "sns.default.subject" . }}`,
		Message: `{{ template "sns.default.message" . }}`,
	}

	DefaultTelegramConfig = TelegramConfig{
		NotifierConfig: NotifierConfig{
			VSendResolved: true,
		},
		DisableNotifications: false,
		Message:              `{{ template "telegram.default.message" . }}`,
		ParseMode:            "HTML",
	}
)

Functions

This section is empty.

Types

type Alert

type Alert struct {
	Status       string            `json:"status"`
	Labels       map[string]string `json:"labels"`
	Annotations  map[string]string `json:"annotations"`
	StartsAt     time.Time         `json:"startsAt"`
	EndsAt       time.Time         `json:"endsAt"`
	GeneratorURL string            `json:"generatorURL"`
	Fingerprint  string            `json:"fingerprint"`
}

func (*Alert) GetAlarmName added in v0.11.0

func (a *Alert) GetAlarmName() (alarmName string, found bool)

func (*Alert) GetClusterId added in v0.11.0

func (a *Alert) GetClusterId() (clusterId string, found bool)

func (*Alert) GetClusterName added in v0.11.0

func (a *Alert) GetClusterName() (clusterName string, found bool)

func (*Alert) GetDedupeKey added in v0.11.0

func (a *Alert) GetDedupeKey() (dedupeKey string, found bool)

func (*Alert) GetDetails added in v0.11.0

func (a *Alert) GetDetails() map[string]string

func (*Alert) GetFingerprint added in v0.11.0

func (a *Alert) GetFingerprint() (fingerprint string, found bool)

func (*Alert) GetGoldenSignal added in v0.11.0

func (a *Alert) GetGoldenSignal() (goldenSignal string, found bool)

func (*Alert) GetGroupKey added in v0.11.0

func (a *Alert) GetGroupKey() (groupKey string, found bool)

func (*Alert) GetHeader added in v0.11.0

func (a *Alert) GetHeader() (header string, found bool)

func (*Alert) GetSeverity added in v0.11.0

func (a *Alert) GetSeverity() (severity string, found bool)

func (*Alert) GetSummary added in v0.11.0

func (a *Alert) GetSummary() (summary string, found bool)

func (*Alert) GetUuid added in v0.11.0

func (a *Alert) GetUuid() (uuid string, found bool)

func (*Alert) IsPushNotification added in v0.11.0

func (a *Alert) IsPushNotification() (oneTime bool, found bool)

indicates whether this was a one time message, or a recurrent message like an alarm

type Alerts

type Alerts []Alert

Alerts is a list of Alert objects.

type Config

type Config struct {
	Global       *GlobalConfig  `yaml:"global,omitempty" json:"global,omitempty"`
	Route        *Route         `yaml:"route,omitempty" json:"route,omitempty"`
	InhibitRules []*InhibitRule `yaml:"inhibit_rules,omitempty" json:"inhibit_rules,omitempty"`
	Receivers    []*Receiver    `yaml:"receivers,omitempty" json:"receivers,omitempty"`
	Templates    []string       `yaml:"templates" json:"templates"`
	// Deprecated. Remove before v1.0 release.
	MuteTimeIntervals []MuteTimeInterval `yaml:"mute_time_intervals,omitempty" json:"mute_time_intervals,omitempty"`
	TimeIntervals     []TimeInterval     `yaml:"time_intervals,omitempty" json:"time_intervals,omitempty"`
	// contains filtered or unexported fields
}

Config is the top-level configuration for Alertmanager's config files.

func (Config) String

func (c Config) String() string

func (*Config) UnmarshalYAML

func (c *Config) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface for Config.

type DiscordConfig

type DiscordConfig struct {
	NotifierConfig `yaml:",inline" json:",inline"`

	HTTPConfig *commoncfg.HTTPClientConfig `yaml:"http_config,omitempty" json:"http_config,omitempty"`
	//! Changed from SecretURL to URL for marshalling / unmarshalling purposes
	WebhookURL *amCfg.URL `yaml:"webhook_url,omitempty" json:"webhook_url,omitempty"`

	Title   string `yaml:"title,omitempty" json:"title,omitempty"`
	Message string `yaml:"message,omitempty" json:"message,omitempty"`
}

DiscordConfig configures notifications via Discord.

func (*DiscordConfig) UnmarshalYAML

func (c *DiscordConfig) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface.

type EmailConfig

type EmailConfig struct {
	NotifierConfig `yaml:",inline" json:",inline"`

	// Email address to notify.
	To           string   `yaml:"to,omitempty" json:"to,omitempty"`
	From         string   `yaml:"from,omitempty" json:"from,omitempty"`
	Hello        string   `yaml:"hello,omitempty" json:"hello,omitempty"`
	Smarthost    HostPort `yaml:"smarthost,omitempty" json:"smarthost,omitempty"`
	AuthUsername string   `yaml:"auth_username,omitempty" json:"auth_username,omitempty"`
	//!Changed from Secret to string for marshalling / unmarshalling purposes
	AuthPassword     string `yaml:"auth_password,omitempty" json:"auth_password,omitempty"`
	AuthPasswordFile string `yaml:"auth_password_file,omitempty" json:"auth_password_file,omitempty"`
	//!Changed from Secret to string for marshalling / unmarshalling purposes
	AuthSecret   string              `yaml:"auth_secret,omitempty" json:"auth_secret,omitempty"`
	AuthIdentity string              `yaml:"auth_identity,omitempty" json:"auth_identity,omitempty"`
	Headers      map[string]string   `yaml:"headers,omitempty" json:"headers,omitempty"`
	HTML         string              `yaml:"html,omitempty" json:"html,omitempty"`
	Text         string              `yaml:"text,omitempty" json:"text,omitempty"`
	RequireTLS   *bool               `yaml:"require_tls,omitempty" json:"require_tls,omitempty"`
	TLSConfig    commoncfg.TLSConfig `yaml:"tls_config,omitempty" json:"tls_config,omitempty"`
}

EmailConfig configures notifications via mail.

func (*EmailConfig) Clone

func (c *EmailConfig) Clone() OpniReceiver

func (*EmailConfig) Configure

func (c *EmailConfig) Configure(endp *alertingv1.AlertEndpoint) OpniReceiver

func (*EmailConfig) ExtractInfo added in v0.8.3

func (c *EmailConfig) ExtractInfo() *alertingv1.EndpointImplementation

func (*EmailConfig) InternalId

func (c *EmailConfig) InternalId() string

func (*EmailConfig) StoreInfo added in v0.8.3

func (c *EmailConfig) StoreInfo(details *alertingv1.EndpointImplementation)

func (*EmailConfig) UnmarshalYAML

func (c *EmailConfig) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface.

type GlobalConfig

type GlobalConfig struct {
	// ResolveTimeout is the time after which an alert is declared resolved
	// if it has not been updated.
	ResolveTimeout model.Duration `yaml:"resolve_timeout" json:"resolve_timeout"`

	HTTPConfig *commoncfg.HTTPClientConfig `yaml:"http_config,omitempty" json:"http_config,omitempty"`

	SMTPFrom         string   `yaml:"smtp_from,omitempty" json:"smtp_from,omitempty"`
	SMTPHello        string   `yaml:"smtp_hello,omitempty" json:"smtp_hello,omitempty"`
	SMTPSmarthost    HostPort `yaml:"smtp_smarthost,omitempty" json:"smtp_smarthost,omitempty"`
	SMTPAuthUsername string   `yaml:"smtp_auth_username,omitempty" json:"smtp_auth_username,omitempty"`
	//! Changed from secret to string for unmarshalling / marshalling purposes
	SMTPAuthPassword string `yaml:"smtp_auth_password,omitempty" json:"smtp_auth_password,omitempty"`
	//! Changed from secret to string for unmarshalling / marshalling purposes
	SMTPAuthPasswordFile string `yaml:"smtp_auth_password_file,omitempty" json:"smtp_auth_password_file,omitempty"`
	//! Changed from secret to string for unmarshalling / marshalling purposes
	SMTPAuthSecret   string `yaml:"smtp_auth_secret,omitempty" json:"smtp_auth_secret,omitempty"`
	SMTPAuthIdentity string `yaml:"smtp_auth_identity,omitempty" json:"smtp_auth_identity,omitempty"`
	SMTPRequireTLS   bool   `yaml:"smtp_require_tls" json:"smtp_require_tls,omitempty"`
	//! Changed from secret to URL for unmarshalling / marshalling purposes
	SlackAPIURL     *amCfg.URL `yaml:"slack_api_url,omitempty" json:"slack_api_url,omitempty"`
	SlackAPIURLFile string     `yaml:"slack_api_url_file,omitempty" json:"slack_api_url_file,omitempty"`
	PagerdutyURL    *amCfg.URL `yaml:"pagerduty_url,omitempty" json:"pagerduty_url,omitempty"`
	OpsGenieAPIURL  *amCfg.URL `yaml:"opsgenie_api_url,omitempty" json:"opsgenie_api_url,omitempty"`
	//! Changed from secret to string for unmarshalling / marshalling purposes
	OpsGenieAPIKey     string     `yaml:"opsgenie_api_key,omitempty" json:"opsgenie_api_key,omitempty"`
	OpsGenieAPIKeyFile string     `yaml:"opsgenie_api_key_file,omitempty" json:"opsgenie_api_key_file,omitempty"`
	WeChatAPIURL       *amCfg.URL `yaml:"wechat_api_url,omitempty" json:"wechat_api_url,omitempty"`
	//! Changed from secret to string for unmarshalling / marshalling purposes
	WeChatAPISecret string     `yaml:"wechat_api_secret,omitempty" json:"wechat_api_secret,omitempty"`
	WeChatAPICorpID string     `yaml:"wechat_api_corp_id,omitempty" json:"wechat_api_corp_id,omitempty"`
	VictorOpsAPIURL *amCfg.URL `yaml:"victorops_api_url,omitempty" json:"victorops_api_url,omitempty"`
	//! Changed from secret to string for unmarshalling / marshalling purposes
	VictorOpsAPIKey     string     `yaml:"victorops_api_key,omitempty" json:"victorops_api_key,omitempty"`
	VictorOpsAPIKeyFile string     `yaml:"victorops_api_key_file,omitempty" json:"victorops_api_key_file,omitempty"`
	TelegramAPIUrl      *amCfg.URL `yaml:"telegram_api_url,omitempty" json:"telegram_api_url,omitempty"`
	WebexAPIURL         *amCfg.URL `yaml:"webex_api_url,omitempty" json:"webex_api_url,omitempty"`
}

GlobalConfig defines configuration parameters that are valid globally unless overwritten.

func DefaultGlobalConfig

func DefaultGlobalConfig() GlobalConfig

DefaultGlobalConfig returns GlobalConfig with default values.

func (*GlobalConfig) UnmarshalYAML

func (c *GlobalConfig) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface for GlobalConfig.

type HostPort

type HostPort struct {
	Host string
	Port string
}

HostPort represents a "host:port" network address.

func (HostPort) MarshalJSON

func (hp HostPort) MarshalJSON() ([]byte, error)

MarshalJSON implements the json.Marshaler interface for HostPort.

func (HostPort) MarshalYAML

func (hp HostPort) MarshalYAML() (interface{}, error)

MarshalYAML implements the yaml.Marshaler interface for HostPort.

func (HostPort) String

func (hp HostPort) String() string

func (*HostPort) UnmarshalJSON

func (hp *HostPort) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the json.Unmarshaler interface for HostPort.

func (*HostPort) UnmarshalYAML

func (hp *HostPort) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface for HostPort.

type InhibitRule

type InhibitRule struct {
	// SourceMatch defines a set of labels that have to equal the given
	// value for source alerts. Deprecated. Remove before v1.0 release.
	SourceMatch map[string]string `yaml:"source_match,omitempty" json:"source_match,omitempty"`
	// SourceMatchRE defines pairs like SourceMatch but does regular expression
	// matching. Deprecated. Remove before v1.0 release.
	SourceMatchRE MatchRegexps `yaml:"source_match_re,omitempty" json:"source_match_re,omitempty"`
	// SourceMatchers defines a set of label matchers that have to be fulfilled for source alerts.
	SourceMatchers Matchers `yaml:"source_matchers,omitempty" json:"source_matchers,omitempty"`
	// TargetMatch defines a set of labels that have to equal the given
	// value for target alerts. Deprecated. Remove before v1.0 release.
	TargetMatch map[string]string `yaml:"target_match,omitempty" json:"target_match,omitempty"`
	// TargetMatchRE defines pairs like TargetMatch but does regular expression
	// matching. Deprecated. Remove before v1.0 release.
	TargetMatchRE MatchRegexps `yaml:"target_match_re,omitempty" json:"target_match_re,omitempty"`
	// TargetMatchers defines a set of label matchers that have to be fulfilled for target alerts.
	TargetMatchers Matchers `yaml:"target_matchers,omitempty" json:"target_matchers,omitempty"`
	// A set of labels that must be equal between the source and target alert
	// for them to be a match.
	Equal model.LabelNames `yaml:"equal,omitempty" json:"equal,omitempty"`
}

InhibitRule defines an inhibition rule that mutes alerts that match the target labels if an alert matching the source labels exists. Both alerts have to have a set of labels being equal.

func (*InhibitRule) UnmarshalYAML

func (r *InhibitRule) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface for InhibitRule.

type MatchRegexps

type MatchRegexps map[string]amCfg.Regexp

MatchRegexps represents a map of Regexp.

func (*MatchRegexps) UnmarshalYAML

func (m *MatchRegexps) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface for MatchRegexps.

type Matchers

type Matchers labels.Matchers

func (Matchers) MarshalYAML

func (m Matchers) MarshalYAML() (interface{}, error)

MarshalYAML implements the yaml.Marshaler interface for Matchers.

func (*Matchers) UnmarshalYAML

func (m *Matchers) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface for Matchers.

type MuteTimeInterval

type MuteTimeInterval struct {
	Name          string                      `yaml:"name" json:"name"`
	TimeIntervals []timeinterval.TimeInterval `yaml:"time_intervals" json:"time_intervals"`
}

MuteTimeInterval represents a named set of time intervals for which a route should be muted.

func (*MuteTimeInterval) UnmarshalYAML

func (mt *MuteTimeInterval) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface for MuteTimeInterval.

type NotifierConfig

type NotifierConfig struct {
	VSendResolved bool `yaml:"send_resolved" json:"send_resolved"`
}

NotifierConfig contains base options common across all notifier configurations.

func (*NotifierConfig) SendResolved

func (nc *NotifierConfig) SendResolved() bool

type OpniReceiver

type OpniReceiver interface {
	InternalId() string
	// extract non-specific receiver info
	ExtractInfo() *alertingv1.EndpointImplementation
	// set non-specific receiver info
	StoreInfo(details *alertingv1.EndpointImplementation)
	// configure receiver specific info
	Configure(*alertingv1.AlertEndpoint) OpniReceiver
	Clone() OpniReceiver
	yaml.Unmarshaler
}

Extends the receiver configs of AlertManager, e.g. SlackConfig, EmailConfig... panics when the receiver type

func ExtractReceiver

func ExtractReceiver(unmarshall func(interface{}) error, _ interface{}) (OpniReceiver, error)

type OpsGenieConfig

type OpsGenieConfig struct {
	NotifierConfig `yaml:",inline" json:",inline"`

	HTTPConfig *commoncfg.HTTPClientConfig `yaml:"http_config,omitempty" json:"http_config,omitempty"`

	//! Changed from Secret to string for marshalling / unmarshalling purposes
	APIKey       string                    `yaml:"api_key,omitempty" json:"api_key,omitempty"`
	APIKeyFile   string                    `yaml:"api_key_file,omitempty" json:"api_key_file,omitempty"`
	APIURL       *amCfg.URL                `yaml:"api_url,omitempty" json:"api_url,omitempty"`
	Message      string                    `yaml:"message,omitempty" json:"message,omitempty"`
	Description  string                    `yaml:"description,omitempty" json:"description,omitempty"`
	Source       string                    `yaml:"source,omitempty" json:"source,omitempty"`
	Details      map[string]string         `yaml:"details,omitempty" json:"details,omitempty"`
	Entity       string                    `yaml:"entity,omitempty" json:"entity,omitempty"`
	Responders   []OpsGenieConfigResponder `yaml:"responders,omitempty" json:"responders,omitempty"`
	Actions      string                    `yaml:"actions,omitempty" json:"actions,omitempty"`
	Tags         string                    `yaml:"tags,omitempty" json:"tags,omitempty"`
	Note         string                    `yaml:"note,omitempty" json:"note,omitempty"`
	Priority     string                    `yaml:"priority,omitempty" json:"priority,omitempty"`
	UpdateAlerts bool                      `yaml:"update_alerts,omitempty" json:"update_alerts,omitempty"`
}

OpsGenieConfig configures notifications via OpsGenie.

func (*OpsGenieConfig) Clone

func (c *OpsGenieConfig) Clone() OpniReceiver

func (*OpsGenieConfig) Configure

func (*OpsGenieConfig) ExtractInfo added in v0.8.3

func (*OpsGenieConfig) InternalId

func (c *OpsGenieConfig) InternalId() string

func (*OpsGenieConfig) StoreInfo added in v0.8.3

func (*OpsGenieConfig) UnmarshalYAML

func (c *OpsGenieConfig) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface.

type OpsGenieConfigResponder

type OpsGenieConfigResponder struct {
	// One of those 3 should be filled.
	ID       string `yaml:"id,omitempty" json:"id,omitempty"`
	Name     string `yaml:"name,omitempty" json:"name,omitempty"`
	Username string `yaml:"username,omitempty" json:"username,omitempty"`

	// team, user, escalation, schedule etc.
	Type string `yaml:"type,omitempty" json:"type,omitempty"`
}

type PagerdutyConfig

type PagerdutyConfig struct {
	NotifierConfig `yaml:",inline" json:",inline"`

	HTTPConfig *commoncfg.HTTPClientConfig `yaml:"http_config,omitempty" json:"http_config,omitempty"`
	//!Changed from Secret to string for marshalling / unmarshalling purposes
	ServiceKey     string            `yaml:"service_key,omitempty" json:"service_key,omitempty"`
	ServiceKeyFile string            `yaml:"service_key_file,omitempty" json:"service_key_file,omitempty"`
	RoutingKey     string            `yaml:"routing_key,omitempty" json:"routing_key,omitempty"`
	RoutingKeyFile string            `yaml:"routing_key_file,omitempty" json:"routing_key_file,omitempty"`
	URL            *amCfg.URL        `yaml:"url,omitempty" json:"url,omitempty"`
	Client         string            `yaml:"client,omitempty" json:"client,omitempty"`
	ClientURL      string            `yaml:"client_url,omitempty" json:"client_url,omitempty"`
	Description    string            `yaml:"description,omitempty" json:"description,omitempty"`
	Details        map[string]string `yaml:"details,omitempty" json:"details,omitempty"`
	Images         []PagerdutyImage  `yaml:"images,omitempty" json:"images,omitempty"`
	Links          []PagerdutyLink   `yaml:"links,omitempty" json:"links,omitempty"`
	Source         string            `yaml:"source,omitempty" json:"source,omitempty"`
	Severity       string            `yaml:"severity,omitempty" json:"severity,omitempty"`
	Class          string            `yaml:"class,omitempty" json:"class,omitempty"`
	Component      string            `yaml:"component,omitempty" json:"component,omitempty"`
	Group          string            `yaml:"group,omitempty" json:"group,omitempty"`
}

PagerdutyConfig configures notifications via PagerDuty.

func (*PagerdutyConfig) Clone

func (c *PagerdutyConfig) Clone() OpniReceiver

func (*PagerdutyConfig) Configure

func (*PagerdutyConfig) ExtractInfo added in v0.8.3

func (*PagerdutyConfig) InternalId

func (c *PagerdutyConfig) InternalId() string

func (*PagerdutyConfig) StoreInfo added in v0.8.3

func (c *PagerdutyConfig) StoreInfo(details *alertingv1.EndpointImplementation)

func (*PagerdutyConfig) UnmarshalYAML

func (c *PagerdutyConfig) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface.

type PagerdutyImage

type PagerdutyImage struct {
	Src  string `yaml:"src,omitempty" json:"src,omitempty"`
	Alt  string `yaml:"alt,omitempty" json:"alt,omitempty"`
	Href string `yaml:"href,omitempty" json:"href,omitempty"`
}

PagerdutyImage is an image

type PagerdutyLink struct {
	Href string `yaml:"href,omitempty" json:"href,omitempty"`
	Text string `yaml:"text,omitempty" json:"text,omitempty"`
}

PagerdutyLink is a link

type PushoverConfig

type PushoverConfig struct {
	NotifierConfig `yaml:",inline" json:",inline"`

	HTTPConfig *commoncfg.HTTPClientConfig `yaml:"http_config,omitempty" json:"http_config,omitempty"`
	//! Changed from Secret to string for marshalling / unmarshalling purposes
	UserKey string `yaml:"user_key,omitempty" json:"user_key,omitempty"`
	//! Changed from Secret to string for marshalling / unmarshalling purposes
	Token    string   `yaml:"token,omitempty" json:"token,omitempty"`
	Title    string   `yaml:"title,omitempty" json:"title,omitempty"`
	Message  string   `yaml:"message,omitempty" json:"message,omitempty"`
	URL      string   `yaml:"url,omitempty" json:"url,omitempty"`
	URLTitle string   `yaml:"url_title,omitempty" json:"url_title,omitempty"`
	Sound    string   `yaml:"sound,omitempty" json:"sound,omitempty"`
	Priority string   `yaml:"priority,omitempty" json:"priority,omitempty"`
	Retry    duration `yaml:"retry,omitempty" json:"retry,omitempty"`
	Expire   duration `yaml:"expire,omitempty" json:"expire,omitempty"`
	HTML     bool     `yaml:"html" json:"html,omitempty"`
}

func (*PushoverConfig) Clone

func (c *PushoverConfig) Clone() OpniReceiver

func (*PushoverConfig) Configure

func (*PushoverConfig) ExtractInfo added in v0.8.3

func (*PushoverConfig) InternalId

func (c *PushoverConfig) InternalId() string

func (*PushoverConfig) StoreInfo added in v0.8.3

func (*PushoverConfig) UnmarshalYAML

func (c *PushoverConfig) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface.

type Receiver

type Receiver struct {
	// A unique identifier for this receiver.
	Name string `yaml:"name" json:"name"`

	DiscordConfigs   []*DiscordConfig   `yaml:"discord_configs,omitempty" json:"discord_configs,omitempty"`
	EmailConfigs     []*EmailConfig     `yaml:"email_configs,omitempty" json:"email_configs,omitempty"`
	PagerdutyConfigs []*PagerdutyConfig `yaml:"pagerduty_configs,omitempty" json:"pagerduty_configs,omitempty"`
	SlackConfigs     []*SlackConfig     `yaml:"slack_configs,omitempty" json:"slack_configs,omitempty"`
	WebhookConfigs   []*WebhookConfig   `yaml:"webhook_configs,omitempty" json:"webhook_configs,omitempty"`
	OpsGenieConfigs  []*OpsGenieConfig  `yaml:"opsgenie_configs,omitempty" json:"opsgenie_configs,omitempty"`
	WechatConfigs    []*WechatConfig    `yaml:"wechat_configs,omitempty" json:"wechat_configs,omitempty"`
	PushoverConfigs  []*PushoverConfig  `yaml:"pushover_configs,omitempty" json:"pushover_configs,omitempty"`
	VictorOpsConfigs []*VictorOpsConfig `yaml:"victorops_configs,omitempty" json:"victorops_configs,omitempty"`
	SNSConfigs       []*SNSConfig       `yaml:"sns_configs,omitempty" json:"sns_configs,omitempty"`
	TelegramConfigs  []*TelegramConfig  `yaml:"telegram_configs,omitempty" json:"telegram_configs,omitempty"`
	WebexConfigs     []*WebexConfig     `yaml:"webex_configs,omitempty" json:"webex_configs,omitempty"`
}

Receiver configuration provides configuration on how to contact a receiver.

func BuildReceiver

func BuildReceiver(receiverId string, recvs []OpniReceiver) (*Receiver, error)

Takes a collection of OpniReceivers and converts them to a single AlertManager this function will panic if it cannot convert the receivers

func (*Receiver) UnmarshalYAML

func (c *Receiver) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface for Receiver.

type Route

type Route struct {
	Receiver string `yaml:"receiver,omitempty" json:"receiver,omitempty"`

	GroupByStr []string          `yaml:"group_by,omitempty" json:"group_by,omitempty"`
	GroupBy    []model.LabelName `yaml:"-" json:"-"`
	GroupByAll bool              `yaml:"-" json:"-"`
	// Deprecated. Remove before v1.0 release.
	Match map[string]string `yaml:"match,omitempty" json:"match,omitempty"`
	// Deprecated. Remove before v1.0 release.
	MatchRE             MatchRegexps `yaml:"match_re,omitempty" json:"match_re,omitempty"`
	Matchers            Matchers     `yaml:"matchers,omitempty" json:"matchers,omitempty"`
	MuteTimeIntervals   []string     `yaml:"mute_time_intervals,omitempty" json:"mute_time_intervals,omitempty"`
	ActiveTimeIntervals []string     `yaml:"active_time_intervals,omitempty" json:"active_time_intervals,omitempty"`
	Continue            bool         `yaml:"continue" json:"continue,omitempty"`
	Routes              []*Route     `yaml:"routes,omitempty" json:"routes,omitempty"`

	GroupWait      *model.Duration `yaml:"group_wait,omitempty" json:"group_wait,omitempty"`
	GroupInterval  *model.Duration `yaml:"group_interval,omitempty" json:"group_interval,omitempty"`
	RepeatInterval *model.Duration `yaml:"repeat_interval,omitempty" json:"repeat_interval,omitempty"`
}

A Route is a node that contains definitions of how to handle alerts.

func (*Route) UnmarshalYAML

func (r *Route) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface for Route.

type SNSConfig

type SNSConfig struct {
	NotifierConfig `yaml:",inline" json:",inline"`

	HTTPConfig *commoncfg.HTTPClientConfig `yaml:"http_config,omitempty" json:"http_config,omitempty"`

	APIUrl      string            `yaml:"api_url,omitempty" json:"api_url,omitempty"`
	Sigv4       sigv4.SigV4Config `yaml:"sigv4" json:"sigv4"`
	TopicARN    string            `yaml:"topic_arn,omitempty" json:"topic_arn,omitempty"`
	PhoneNumber string            `yaml:"phone_number,omitempty" json:"phone_number,omitempty"`
	TargetARN   string            `yaml:"target_arn,omitempty" json:"target_arn,omitempty"`
	Subject     string            `yaml:"subject,omitempty" json:"subject,omitempty"`
	Message     string            `yaml:"message,omitempty" json:"message,omitempty"`
	Attributes  map[string]string `yaml:"attributes,omitempty" json:"attributes,omitempty"`
}

func (*SNSConfig) Clone

func (c *SNSConfig) Clone() OpniReceiver

func (*SNSConfig) Configure

func (*SNSConfig) ExtractInfo added in v0.8.3

func (c *SNSConfig) ExtractInfo() *alertingv1.EndpointImplementation

func (*SNSConfig) InternalId

func (c *SNSConfig) InternalId() string

func (*SNSConfig) StoreInfo added in v0.8.3

func (c *SNSConfig) StoreInfo(_ *alertingv1.EndpointImplementation)

func (*SNSConfig) UnmarshalYAML

func (c *SNSConfig) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface.

type SlackAction

type SlackAction struct {
	Type         string                  `yaml:"type,omitempty"  json:"type,omitempty"`
	Text         string                  `yaml:"text,omitempty"  json:"text,omitempty"`
	URL          string                  `yaml:"url,omitempty"   json:"url,omitempty"`
	Style        string                  `yaml:"style,omitempty" json:"style,omitempty"`
	Name         string                  `yaml:"name,omitempty"  json:"name,omitempty"`
	Value        string                  `yaml:"value,omitempty"  json:"value,omitempty"`
	ConfirmField *SlackConfirmationField `yaml:"confirm,omitempty"  json:"confirm,omitempty"`
}

SlackAction configures a single Slack action that is sent with each notification. See https://api.slack.com/docs/message-attachments#action_fields and https://api.slack.com/docs/message-buttons for more information.

func (*SlackAction) UnmarshalYAML

func (c *SlackAction) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface for SlackAction.

type SlackConfig

type SlackConfig struct {
	NotifierConfig `yaml:",inline" json:",inline"`

	HTTPConfig *commoncfg.HTTPClientConfig `yaml:"http_config,omitempty" json:"http_config,omitempty"`
	//! Changed from SecretURL to URL for marshalling / unmarshalling purposes
	APIURL     *amCfg.URL `yaml:"api_url,omitempty" json:"api_url,omitempty"`
	APIURLFile string     `yaml:"api_url_file,omitempty" json:"api_url_file,omitempty"`

	// Slack channel override, (like #other-channel or @username).
	Channel  string `yaml:"channel,omitempty" json:"channel,omitempty"`
	Username string `yaml:"username,omitempty" json:"username,omitempty"`
	Color    string `yaml:"color,omitempty" json:"color,omitempty"`

	Title       string         `yaml:"title,omitempty" json:"title,omitempty"`
	TitleLink   string         `yaml:"title_link,omitempty" json:"title_link,omitempty"`
	Pretext     string         `yaml:"pretext,omitempty" json:"pretext,omitempty"`
	Text        string         `yaml:"text,omitempty" json:"text,omitempty"`
	Fields      []*SlackField  `yaml:"fields,omitempty" json:"fields,omitempty"`
	ShortFields bool           `yaml:"short_fields" json:"short_fields,omitempty"`
	Footer      string         `yaml:"footer,omitempty" json:"footer,omitempty"`
	Fallback    string         `yaml:"fallback,omitempty" json:"fallback,omitempty"`
	CallbackID  string         `yaml:"callback_id,omitempty" json:"callback_id,omitempty"`
	IconEmoji   string         `yaml:"icon_emoji,omitempty" json:"icon_emoji,omitempty"`
	IconURL     string         `yaml:"icon_url,omitempty" json:"icon_url,omitempty"`
	ImageURL    string         `yaml:"image_url,omitempty" json:"image_url,omitempty"`
	ThumbURL    string         `yaml:"thumb_url,omitempty" json:"thumb_url,omitempty"`
	LinkNames   bool           `yaml:"link_names" json:"link_names,omitempty"`
	MrkdwnIn    []string       `yaml:"mrkdwn_in,omitempty" json:"mrkdwn_in,omitempty"`
	Actions     []*SlackAction `yaml:"actions,omitempty" json:"actions,omitempty"`
}

SlackConfig configures notifications via Slack.

func (*SlackConfig) Clone

func (c *SlackConfig) Clone() OpniReceiver

func (*SlackConfig) Configure

func (c *SlackConfig) Configure(endp *alertingv1.AlertEndpoint) OpniReceiver

func (*SlackConfig) ExtractInfo added in v0.8.3

func (c *SlackConfig) ExtractInfo() *alertingv1.EndpointImplementation

func (*SlackConfig) InternalId

func (c *SlackConfig) InternalId() string

func (*SlackConfig) StoreInfo added in v0.8.3

func (c *SlackConfig) StoreInfo(details *alertingv1.EndpointImplementation)

func (*SlackConfig) UnmarshalYAML

func (c *SlackConfig) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface.

type SlackConfirmationField

type SlackConfirmationField struct {
	Text        string `yaml:"text,omitempty"  json:"text,omitempty"`
	Title       string `yaml:"title,omitempty"  json:"title,omitempty"`
	OkText      string `yaml:"ok_text,omitempty"  json:"ok_text,omitempty"`
	DismissText string `yaml:"dismiss_text,omitempty"  json:"dismiss_text,omitempty"`
}

SlackConfirmationField protect users from destructive actions or particularly distinguished decisions by asking them to confirm their button click one more time. See https://api.slack.com/docs/interactive-message-field-guide#confirmation_fields for more information.

func (*SlackConfirmationField) UnmarshalYAML

func (c *SlackConfirmationField) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface for SlackConfirmationField.

type SlackField

type SlackField struct {
	Title string `yaml:"title,omitempty" json:"title,omitempty"`
	Value string `yaml:"value,omitempty" json:"value,omitempty"`
	Short *bool  `yaml:"short,omitempty" json:"short,omitempty"`
}

SlackField configures a single Slack field that is sent with each notification. Each field must contain a title, value, and optionally, a boolean value to indicate if the field is short enough to be displayed next to other fields designated as short. See https://api.slack.com/docs/message-attachments#fields for more information.

func (*SlackField) UnmarshalYAML

func (c *SlackField) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface for SlackField.

type TelegramConfig

type TelegramConfig struct {
	NotifierConfig `yaml:",inline" json:",inline"`

	HTTPConfig *commoncfg.HTTPClientConfig `yaml:"http_config,omitempty" json:"http_config,omitempty"`

	APIUrl *amCfg.URL `yaml:"api_url" json:"api_url,omitempty"`
	//! Changed from Secret to string for marshalling / unmarshalling purposes
	BotToken             string `yaml:"bot_token,omitempty" json:"token,omitempty"`
	ChatID               int64  `yaml:"chat_id,omitempty" json:"chat,omitempty"`
	Message              string `yaml:"message,omitempty" json:"message,omitempty"`
	DisableNotifications bool   `yaml:"disable_notifications,omitempty" json:"disable_notifications,omitempty"`
	ParseMode            string `yaml:"parse_mode,omitempty" json:"parse_mode,omitempty"`
}

TelegramConfig configures notifications via Telegram.

func (*TelegramConfig) Clone

func (c *TelegramConfig) Clone() OpniReceiver

func (*TelegramConfig) Configure

func (*TelegramConfig) ExtractInfo added in v0.8.3

func (*TelegramConfig) InternalId

func (c *TelegramConfig) InternalId() string

func (*TelegramConfig) StoreInfo added in v0.8.3

func (*TelegramConfig) UnmarshalYAML

func (c *TelegramConfig) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface.

type TimeInterval

type TimeInterval struct {
	Name          string                      `yaml:"name" json:"name"`
	TimeIntervals []timeinterval.TimeInterval `yaml:"time_intervals" json:"time_intervals"`
}

TimeInterval represents a named set of time intervals for which a route should be muted.

func (*TimeInterval) UnmarshalYAML

func (ti *TimeInterval) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface for MuteTimeInterval.

type VictorOpsConfig

type VictorOpsConfig struct {
	NotifierConfig `yaml:",inline" json:",inline"`

	HTTPConfig *commoncfg.HTTPClientConfig `yaml:"http_config,omitempty" json:"http_config,omitempty"`

	//! Changed from Secret to string for marshalling / unmarshalling purposes
	APIKey            string            `yaml:"api_key,omitempty" json:"api_key,omitempty"`
	APIKeyFile        string            `yaml:"api_key_file,omitempty" json:"api_key_file,omitempty"`
	APIURL            *amCfg.URL        `yaml:"api_url" json:"api_url"`
	RoutingKey        string            `yaml:"routing_key" json:"routing_key"`
	MessageType       string            `yaml:"message_type" json:"message_type"`
	StateMessage      string            `yaml:"state_message" json:"state_message"`
	EntityDisplayName string            `yaml:"entity_display_name" json:"entity_display_name"`
	MonitoringTool    string            `yaml:"monitoring_tool" json:"monitoring_tool"`
	CustomFields      map[string]string `yaml:"custom_fields,omitempty" json:"custom_fields,omitempty"`
}

VictorOpsConfig configures notifications via VictorOps.

func (*VictorOpsConfig) Clone

func (c *VictorOpsConfig) Clone() OpniReceiver

func (*VictorOpsConfig) Configure

func (*VictorOpsConfig) ExtractInfo added in v0.8.3

func (*VictorOpsConfig) InternalId

func (c *VictorOpsConfig) InternalId() string

func (*VictorOpsConfig) StoreInfo added in v0.8.3

func (*VictorOpsConfig) UnmarshalYAML

func (c *VictorOpsConfig) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface.

type WebexConfig

type WebexConfig struct {
	NotifierConfig `yaml:",inline" json:",inline"`
	HTTPConfig     *commoncfg.HTTPClientConfig `yaml:"http_config,omitempty" json:"http_config,omitempty"`
	APIURL         *amCfg.URL                  `yaml:"api_url,omitempty" json:"api_url,omitempty"`

	Message string `yaml:"message,omitempty" json:"message,omitempty"`
	RoomID  string `yaml:"room_id" json:"room_id"`
}

WebexConfig configures notifications via Webex.

func (*WebexConfig) UnmarshalYAML

func (c *WebexConfig) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface.

type WebhookConfig

type WebhookConfig struct {
	NotifierConfig `yaml:",inline" json:",inline"`

	HTTPConfig *commoncfg.HTTPClientConfig `yaml:"http_config,omitempty" json:"http_config,omitempty"`

	// URL to send POST request to.
	URL *amCfg.URL `yaml:"url" json:"url"`
	// MaxAlerts is the maximum number of alerts to be sent per webhook message.
	// Alerts exceeding this threshold will be truncated. Setting this to 0
	// allows an unlimited number of alerts.
	MaxAlerts uint64 `yaml:"max_alerts" json:"max_alerts"`
}

WebhookConfig configures notifications via a generic webhook.

func (*WebhookConfig) Clone

func (c *WebhookConfig) Clone() OpniReceiver

func (*WebhookConfig) Configure

func (c *WebhookConfig) Configure(endp *alertingv1.AlertEndpoint) OpniReceiver

func (*WebhookConfig) ExtractInfo added in v0.8.3

func (*WebhookConfig) InternalId

func (c *WebhookConfig) InternalId() string

func (*WebhookConfig) StoreInfo added in v0.8.3

func (c *WebhookConfig) StoreInfo(details *alertingv1.EndpointImplementation)

func (*WebhookConfig) UnmarshalYAML

func (c *WebhookConfig) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface.

type WebhookMessage

type WebhookMessage struct {
	Receiver string `json:"receiver"`
	Status   string `json:"status"`
	Alerts   Alerts `json:"alerts"`

	GroupLabels       map[string]string `json:"groupLabels"`
	CommonLabels      map[string]string `json:"commonLabels"`
	CommonAnnotations map[string]string `json:"commonAnnotations"`

	ExternalURL string `json:"externalURL"`

	// The protocol version.
	Version         string `json:"version"`
	GroupKey        string `json:"groupKey"`
	TruncatedAlerts uint64 `json:"truncatedAlerts"`
}

unmarshals messages received from webhooks

type WechatConfig

type WechatConfig struct {
	NotifierConfig `yaml:",inline" json:",inline"`

	HTTPConfig *commoncfg.HTTPClientConfig `yaml:"http_config,omitempty" json:"http_config,omitempty"`
	//! Changed from Secret to string for marshalling / unmarshalling purposes
	APISecret   string     `yaml:"api_secret,omitempty" json:"api_secret,omitempty"`
	CorpID      string     `yaml:"corp_id,omitempty" json:"corp_id,omitempty"`
	Message     string     `yaml:"message,omitempty" json:"message,omitempty"`
	APIURL      *amCfg.URL `yaml:"api_url,omitempty" json:"api_url,omitempty"`
	ToUser      string     `yaml:"to_user,omitempty" json:"to_user,omitempty"`
	ToParty     string     `yaml:"to_party,omitempty" json:"to_party,omitempty"`
	ToTag       string     `yaml:"to_tag,omitempty" json:"to_tag,omitempty"`
	AgentID     string     `yaml:"agent_id,omitempty" json:"agent_id,omitempty"`
	MessageType string     `yaml:"message_type,omitempty" json:"message_type,omitempty"`
}

WechatConfig configures notifications via Wechat.

func (*WechatConfig) Clone

func (c *WechatConfig) Clone() OpniReceiver

func (*WechatConfig) Configure

func (*WechatConfig) ExtractInfo added in v0.8.3

func (*WechatConfig) InternalId

func (c *WechatConfig) InternalId() string

func (*WechatConfig) StoreInfo added in v0.8.3

func (*WechatConfig) UnmarshalYAML

func (c *WechatConfig) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface.

Jump to

Keyboard shortcuts

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