update error handle
This commit is contained in:
parent
e6299f9303
commit
6c75b5aeba
|
@ -312,6 +312,9 @@ func (engine *Engine) ExecuteQuery(rule *alerting.Rule)([]alerting.MetricData, e
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if searchRes.StatusCode != 200 {
|
||||||
|
return nil, fmt.Errorf("search error: %s", string(searchRes.RawResult.Body))
|
||||||
|
}
|
||||||
searchResult := map[string]interface{}{}
|
searchResult := map[string]interface{}{}
|
||||||
err = util.FromJSONBytes(searchRes.RawResult.Body, &searchResult)
|
err = util.FromJSONBytes(searchRes.RawResult.Body, &searchResult)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -435,18 +438,26 @@ func (engine *Engine) CheckCondition(rule *alerting.Rule)([]alerting.ConditionRe
|
||||||
return conditionResults, nil
|
return conditionResults, nil
|
||||||
}
|
}
|
||||||
func (engine *Engine) Do(rule *alerting.Rule) error {
|
func (engine *Engine) Do(rule *alerting.Rule) error {
|
||||||
log.Tracef("start check condition of rule %s", rule.ID)
|
|
||||||
conditionResults, err := engine.CheckCondition(rule)
|
var (
|
||||||
if err != nil {
|
alertItem *alerting.Alert
|
||||||
return err
|
err error
|
||||||
}
|
)
|
||||||
lastAlertItem := alerting.Alert{}
|
|
||||||
err = getLastAlert(rule.ID, &lastAlertItem)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
var alertItem *alerting.Alert
|
|
||||||
defer func() {
|
defer func() {
|
||||||
|
if err != nil && alertItem == nil {
|
||||||
|
alertItem = &alerting.Alert{
|
||||||
|
ID: util.GetUUID(),
|
||||||
|
Created: time.Now(),
|
||||||
|
Updated: time.Now(),
|
||||||
|
RuleID: rule.ID,
|
||||||
|
ResourceID: rule.Resource.ID,
|
||||||
|
ResourceName: rule.Resource.Name,
|
||||||
|
Expression: rule.Metrics.Expression,
|
||||||
|
Objects: rule.Resource.Objects,
|
||||||
|
State: alerting.AlertStateError,
|
||||||
|
Error: err.Error(),
|
||||||
|
}
|
||||||
|
}
|
||||||
if alertItem != nil {
|
if alertItem != nil {
|
||||||
for _, actionResult := range alertItem.ActionExecutionResults {
|
for _, actionResult := range alertItem.ActionExecutionResults {
|
||||||
if actionResult.Error != "" {
|
if actionResult.Error != "" {
|
||||||
|
@ -462,6 +473,16 @@ func (engine *Engine) Do(rule *alerting.Rule) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
log.Tracef("start check condition of rule %s", rule.ID)
|
||||||
|
conditionResults, err := engine.CheckCondition(rule)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
lastAlertItem := alerting.Alert{}
|
||||||
|
err = getLastAlert(rule.ID, &lastAlertItem)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
if len(conditionResults) == 0 {
|
if len(conditionResults) == 0 {
|
||||||
if lastAlertItem.State != alerting.AlertStateNormal && lastAlertItem.ID != "" {
|
if lastAlertItem.State != alerting.AlertStateNormal && lastAlertItem.ID != "" {
|
||||||
alertItem = &alerting.Alert{
|
alertItem = &alerting.Alert{
|
||||||
|
|
Loading…
Reference in New Issue