// Fire causes the Alert to become Active() and not Snoozed(), and causes each // action to be performed. Active Alerts do not perform new queries. func (r *Rule) fire(am *alerting.AlertManager, message string) error { actions, err := alerting.ParseActions(r.Actions) if err != nil { return fmt.Errorf("Could not fire alert: %v", err) } a := alerting.Alert{ Name: r.Name, Category: r.Category, Message: message, Nag: int64(r.Nag), AutoDismiss: r.AutoDismiss, Actions: actions, } return am.AddAlert(&a) }
func (r *Rule) queryEvaluationAlert(queryErr error, am *alerting.AlertManager) error { actions, err := alerting.ParseActions([]string{"Email([email protected])"}) if err != nil { return err } name := "Failed to evaluate query" msg := fmt.Sprintf("Failed to evaluate query for rule \"%s\": [ %s ]", r.Name, r.Condition) glog.Errorf("%s\nFull error:\n%v", msg, queryErr) return am.AddAlert(&alerting.Alert{ Name: name, Category: alerting.INFRA_ALERT, Message: msg, Nag: int64(1 * time.Hour), AutoDismiss: int64(15 * time.Minute), Actions: actions, }) }