...

Package config

import "github.com/prometheus/alertmanager/config"
Overview
Index

Overview ▾

Index ▾

Variables
type Config
    func Load(s string) (*Config, error)
    func LoadFile(filename string) (*Config, error)
    func (c Config) String() string
    func (c *Config) UnmarshalYAML(unmarshal func(interface{}) error) error
type Coordinator
    func NewCoordinator(configFilePath string, r prometheus.Registerer, l log.Logger) *Coordinator
    func (c *Coordinator) Reload() error
    func (c *Coordinator) Subscribe(ss ...func(*Config) error)
type DiscordConfig
    func (c *DiscordConfig) UnmarshalYAML(unmarshal func(interface{}) error) error
type EmailConfig
    func (c *EmailConfig) UnmarshalYAML(unmarshal func(interface{}) error) error
type GlobalConfig
    func DefaultGlobalConfig() GlobalConfig
    func (c *GlobalConfig) UnmarshalYAML(unmarshal func(interface{}) error) error
type HostPort
    func (hp HostPort) MarshalJSON() ([]byte, error)
    func (hp HostPort) MarshalYAML() (interface{}, error)
    func (hp HostPort) String() string
    func (hp *HostPort) UnmarshalJSON(data []byte) error
    func (hp *HostPort) UnmarshalYAML(unmarshal func(interface{}) error) error
type InhibitRule
    func (r *InhibitRule) UnmarshalYAML(unmarshal func(interface{}) error) error
type MatchRegexps
    func (m *MatchRegexps) UnmarshalYAML(unmarshal func(interface{}) error) error
type Matchers
    func (m Matchers) MarshalJSON() ([]byte, error)
    func (m Matchers) MarshalYAML() (interface{}, error)
    func (m *Matchers) UnmarshalJSON(data []byte) error
    func (m *Matchers) UnmarshalYAML(unmarshal func(interface{}) error) error
type MuteTimeInterval
    func (mt *MuteTimeInterval) UnmarshalYAML(unmarshal func(interface{}) error) error
type NotifierConfig
    func (nc *NotifierConfig) SendResolved() bool
type OpsGenieConfig
    func (c *OpsGenieConfig) UnmarshalYAML(unmarshal func(interface{}) error) error
type OpsGenieConfigResponder
type PagerdutyConfig
    func (c *PagerdutyConfig) UnmarshalYAML(unmarshal func(interface{}) error) error
type PagerdutyImage
type PagerdutyLink
type PushoverConfig
    func (c *PushoverConfig) UnmarshalYAML(unmarshal func(interface{}) error) error
type Receiver
    func (c *Receiver) UnmarshalYAML(unmarshal func(interface{}) error) error
type Regexp
    func (re Regexp) MarshalJSON() ([]byte, error)
    func (re Regexp) MarshalYAML() (interface{}, error)
    func (re *Regexp) UnmarshalJSON(data []byte) error
    func (re *Regexp) UnmarshalYAML(unmarshal func(interface{}) error) error
type Route
    func (r *Route) UnmarshalYAML(unmarshal func(interface{}) error) error
type SNSConfig
    func (c *SNSConfig) UnmarshalYAML(unmarshal func(interface{}) error) error
type Secret
    func (s Secret) MarshalJSON() ([]byte, error)
    func (s Secret) MarshalYAML() (interface{}, error)
    func (s *Secret) UnmarshalYAML(unmarshal func(interface{}) error) error
type SecretURL
    func (s SecretURL) MarshalJSON() ([]byte, error)
    func (s SecretURL) MarshalYAML() (interface{}, error)
    func (s *SecretURL) UnmarshalJSON(data []byte) error
    func (s *SecretURL) UnmarshalYAML(unmarshal func(interface{}) error) error
type SlackAction
    func (c *SlackAction) UnmarshalYAML(unmarshal func(interface{}) error) error
type SlackConfig
    func (c *SlackConfig) UnmarshalYAML(unmarshal func(interface{}) error) error
type SlackConfirmationField
    func (c *SlackConfirmationField) UnmarshalYAML(unmarshal func(interface{}) error) error
type SlackField
    func (c *SlackField) UnmarshalYAML(unmarshal func(interface{}) error) error
type TelegramConfig
    func (c *TelegramConfig) UnmarshalYAML(unmarshal func(interface{}) error) error
type TimeInterval
    func (ti *TimeInterval) UnmarshalYAML(unmarshal func(interface{}) error) error
type URL
    func (u *URL) Copy() *URL
    func (u URL) MarshalJSON() ([]byte, error)
    func (u URL) MarshalYAML() (interface{}, error)
    func (u *URL) UnmarshalJSON(data []byte) error
    func (u *URL) UnmarshalYAML(unmarshal func(interface{}) error) error
type VictorOpsConfig
    func (c *VictorOpsConfig) UnmarshalYAML(unmarshal func(interface{}) error) error
type WebexConfig
    func (c *WebexConfig) UnmarshalYAML(unmarshal func(interface{}) error) error
type WebhookConfig
    func (c *WebhookConfig) UnmarshalYAML(unmarshal func(interface{}) error) error
type WechatConfig
    func (c *WechatConfig) UnmarshalYAML(unmarshal func(interface{}) error) error

Package files

config.go coordinator.go notifiers.go

Variables

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",
    }
)

type Config

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

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
}

func Load

func Load(s string) (*Config, error)

Load parses the YAML input s into a Config.

func LoadFile

func LoadFile(filename string) (*Config, error)

LoadFile parses the given YAML file into a Config.

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 Coordinator

Coordinator coordinates Alertmanager configurations beyond the lifetime of a single configuration.

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

func NewCoordinator

func NewCoordinator(configFilePath string, r prometheus.Registerer, l log.Logger) *Coordinator

NewCoordinator returns a new coordinator with the given configuration file path. It does not yet load the configuration from file. This is done in `Reload()`.

func (*Coordinator) Reload

func (c *Coordinator) Reload() error

Reload triggers a configuration reload from file and notifies all configuration change subscribers.

func (*Coordinator) Subscribe

func (c *Coordinator) Subscribe(ss ...func(*Config) error)

Subscribe subscribes the given Subscribers to configuration changes.

type DiscordConfig

DiscordConfig configures notifications via Discord.

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

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

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

func (*DiscordConfig) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface.

type EmailConfig

EmailConfig configures notifications via mail.

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"`
    AuthPassword     Secret              `yaml:"auth_password,omitempty" json:"auth_password,omitempty"`
    AuthPasswordFile string              `yaml:"auth_password_file,omitempty" json:"auth_password_file,omitempty"`
    AuthSecret       Secret              `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"`
}

func (*EmailConfig) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface.

type GlobalConfig

GlobalConfig defines configuration parameters that are valid globally unless overwritten.

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"`
    SMTPAuthPassword     Secret     `yaml:"smtp_auth_password,omitempty" json:"smtp_auth_password,omitempty"`
    SMTPAuthPasswordFile string     `yaml:"smtp_auth_password_file,omitempty" json:"smtp_auth_password_file,omitempty"`
    SMTPAuthSecret       Secret     `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"`
    SlackAPIURL          *SecretURL `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         *URL       `yaml:"pagerduty_url,omitempty" json:"pagerduty_url,omitempty"`
    OpsGenieAPIURL       *URL       `yaml:"opsgenie_api_url,omitempty" json:"opsgenie_api_url,omitempty"`
    OpsGenieAPIKey       Secret     `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         *URL       `yaml:"wechat_api_url,omitempty" json:"wechat_api_url,omitempty"`
    WeChatAPISecret      Secret     `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      *URL       `yaml:"victorops_api_url,omitempty" json:"victorops_api_url,omitempty"`
    VictorOpsAPIKey      Secret     `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       *URL       `yaml:"telegram_api_url,omitempty" json:"telegram_api_url,omitempty"`
    WebexAPIURL          *URL       `yaml:"webex_api_url,omitempty" json:"webex_api_url,omitempty"`
}

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

HostPort represents a "host:port" network address.

type HostPort struct {
    Host string
    Port string
}

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

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.

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"`
}

func (*InhibitRule) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface for InhibitRule.

type MatchRegexps

MatchRegexps represents a map of Regexp.

type MatchRegexps map[string]Regexp

func (*MatchRegexps) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface for MatchRegexps.

type Matchers

Matchers is label.Matchers with an added UnmarshalYAML method to implement the yaml.Unmarshaler interface and MarshalYAML to implement the yaml.Marshaler interface.

type Matchers labels.Matchers

func (Matchers) MarshalJSON

func (m Matchers) MarshalJSON() ([]byte, error)

MarshalJSON implements the json.Marshaler interface for Matchers.

func (Matchers) MarshalYAML

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

MarshalYAML implements the yaml.Marshaler interface for Matchers.

func (*Matchers) UnmarshalJSON

func (m *Matchers) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the json.Unmarshaler 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

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

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

func (*MuteTimeInterval) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface for MuteTimeInterval.

type NotifierConfig

NotifierConfig contains base options common across all notifier configurations.

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

func (*NotifierConfig) SendResolved

func (nc *NotifierConfig) SendResolved() bool

type OpsGenieConfig

OpsGenieConfig configures notifications via OpsGenie.

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

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

    APIKey       Secret                    `yaml:"api_key,omitempty" json:"api_key,omitempty"`
    APIKeyFile   string                    `yaml:"api_key_file,omitempty" json:"api_key_file,omitempty"`
    APIURL       *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"`
}

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

PagerdutyConfig configures notifications via PagerDuty.

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

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

    ServiceKey     Secret            `yaml:"service_key,omitempty" json:"service_key,omitempty"`
    ServiceKeyFile string            `yaml:"service_key_file,omitempty" json:"service_key_file,omitempty"`
    RoutingKey     Secret            `yaml:"routing_key,omitempty" json:"routing_key,omitempty"`
    RoutingKeyFile string            `yaml:"routing_key_file,omitempty" json:"routing_key_file,omitempty"`
    URL            *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"`
}

func (*PagerdutyConfig) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface.

type PagerdutyImage

PagerdutyImage is an image

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"`
}

PagerdutyLink is a link

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

type PushoverConfig

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

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

    UserKey  Secret   `yaml:"user_key,omitempty" json:"user_key,omitempty"`
    Token    Secret   `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) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface.

type Receiver

Receiver configuration provides configuration on how to contact a 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"`
}

func (*Receiver) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface for Receiver.

type Regexp

Regexp encapsulates a regexp.Regexp and makes it YAML marshalable.

type Regexp struct {
    *regexp.Regexp
    // contains filtered or unexported fields
}

func (Regexp) MarshalJSON

func (re Regexp) MarshalJSON() ([]byte, error)

MarshalJSON implements the json.Marshaler interface for Regexp.

func (Regexp) MarshalYAML

func (re Regexp) MarshalYAML() (interface{}, error)

MarshalYAML implements the yaml.Marshaler interface for Regexp.

func (*Regexp) UnmarshalJSON

func (re *Regexp) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the json.Unmarshaler interface for Regexp

func (*Regexp) UnmarshalYAML

func (re *Regexp) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface for Regexp.

type Route

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

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"`
}

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) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface.

type Secret

Secret is a string that must not be revealed on marshaling.

type Secret string

func (Secret) MarshalJSON

func (s Secret) MarshalJSON() ([]byte, error)

MarshalJSON implements the json.Marshaler interface for Secret.

func (Secret) MarshalYAML

func (s Secret) MarshalYAML() (interface{}, error)

MarshalYAML implements the yaml.Marshaler interface for Secret.

func (*Secret) UnmarshalYAML

func (s *Secret) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface for Secret.

type SecretURL

SecretURL is a URL that must not be revealed on marshaling.

type SecretURL URL

func (SecretURL) MarshalJSON

func (s SecretURL) MarshalJSON() ([]byte, error)

MarshalJSON implements the json.Marshaler interface for SecretURL.

func (SecretURL) MarshalYAML

func (s SecretURL) MarshalYAML() (interface{}, error)

MarshalYAML implements the yaml.Marshaler interface for SecretURL.

func (*SecretURL) UnmarshalJSON

func (s *SecretURL) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the json.Marshaler interface for SecretURL.

func (*SecretURL) UnmarshalYAML

func (s *SecretURL) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface for SecretURL.

type SlackAction

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.

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"`
}

func (*SlackAction) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface for SlackAction.

type SlackConfig

SlackConfig configures notifications via Slack.

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

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

    APIURL     *SecretURL `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"`
}

func (*SlackConfig) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface.

type SlackConfirmationField

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.

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"`
}

func (*SlackConfirmationField) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface for SlackConfirmationField.

type SlackField

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.

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"`
}

func (*SlackField) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface for SlackField.

type TelegramConfig

TelegramConfig configures notifications via Telegram.

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

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

    APIUrl               *URL   `yaml:"api_url" json:"api_url,omitempty"`
    BotToken             Secret `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"`
}

func (*TelegramConfig) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface.

type TimeInterval

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

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

func (*TimeInterval) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface for MuteTimeInterval.

type URL

URL is a custom type that represents an HTTP or HTTPS URL and allows validation at configuration load time.

type URL struct {
    *url.URL
}

func (*URL) Copy

func (u *URL) Copy() *URL

Copy makes a deep-copy of the struct.

func (URL) MarshalJSON

func (u URL) MarshalJSON() ([]byte, error)

MarshalJSON implements the json.Marshaler interface for URL.

func (URL) MarshalYAML

func (u URL) MarshalYAML() (interface{}, error)

MarshalYAML implements the yaml.Marshaler interface for URL.

func (*URL) UnmarshalJSON

func (u *URL) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the json.Marshaler interface for URL.

func (*URL) UnmarshalYAML

func (u *URL) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface for URL.

type VictorOpsConfig

VictorOpsConfig configures notifications via VictorOps.

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

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

    APIKey            Secret            `yaml:"api_key,omitempty" json:"api_key,omitempty"`
    APIKeyFile        string            `yaml:"api_key_file,omitempty" json:"api_key_file,omitempty"`
    APIURL            *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"`
}

func (*VictorOpsConfig) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface.

type WebexConfig

WebexConfig configures notifications via Webex.

type WebexConfig struct {
    NotifierConfig `yaml:",inline" json:",inline"`
    HTTPConfig     *commoncfg.HTTPClientConfig `yaml:"http_config,omitempty" json:"http_config,omitempty"`
    APIURL         *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"`
}

func (*WebexConfig) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface.

type WebhookConfig

WebhookConfig configures notifications via a generic webhook.

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 *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"`
}

func (*WebhookConfig) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface.

type WechatConfig

WechatConfig configures notifications via Wechat.

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

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

    APISecret   Secret `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      *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"`
}

func (*WechatConfig) UnmarshalYAML

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

UnmarshalYAML implements the yaml.Unmarshaler interface.