diff --git a/model/alerting/condition.go b/model/alerting/condition.go index a1286990..ac3c8945 100644 --- a/model/alerting/condition.go +++ b/model/alerting/condition.go @@ -24,9 +24,9 @@ type ConditionItem struct { //MetricName string `json:"metric"` MinimumPeriodMatch int `json:"minimum_period_match"` Operator string `json:"operator"` - Values []string `json:"values"` - Severity string `json:"severity"` - Expression string `json:"expression,omitempty"` + Values []string `json:"values"` + Priority string `json:"priority"` + Expression string `json:"expression,omitempty"` } func (cond *ConditionItem) GenerateConditionExpression()(conditionExpression string, err error){ @@ -68,9 +68,7 @@ type ConditionResultItem struct { RelationValues map[string]interface{} `json:"relation_values"` } -type Severity string - -var SeverityWeights = map[string]int{ +var PriorityWeights = map[string]int{ "info": 1, "low": 2, "medium": 3, diff --git a/model/alerting/rule_test.go b/model/alerting/rule_test.go index 1f1b4e43..968b22c5 100644 --- a/model/alerting/rule_test.go +++ b/model/alerting/rule_test.go @@ -55,7 +55,7 @@ func TestCreateRule( t *testing.T) { //Conditions: Condition{ // Operator: "any", // Items: []ConditionItem{ - // { MinimumPeriodMatch: 1, Operator: "gte", Values: []string{"1"}, Severity: "error", AlertMessage: "集群健康状态为 Red"}, + // { MinimumPeriodMatch: 1, Operator: "gte", Values: []string{"1"}, Priority: "error", AlertMessage: "集群健康状态为 Red"}, // }, //}, @@ -71,7 +71,7 @@ func TestCreateRule( t *testing.T) { Conditions: Condition{ Operator: "any", Items: []ConditionItem{ - {MinimumPeriodMatch: 1, Operator: "lte", Values: []string{"76"}, Severity: "error", Message: "磁盘可用率小于10%"}, + {MinimumPeriodMatch: 1, Operator: "lte", Values: []string{"76"}, Priority: "error", Message: "磁盘可用率小于10%"}, }, }, diff --git a/plugin/api/alerting/alert.go b/plugin/api/alerting/alert.go index 4ccdd730..475dc4b7 100644 --- a/plugin/api/alerting/alert.go +++ b/plugin/api/alerting/alert.go @@ -152,7 +152,7 @@ func (h *AlertAPI) getAlertStats(w http.ResponseWriter, req *http.Request, ps ht } } } - for severity, _ := range alerting.SeverityWeights { + for severity, _ := range alerting.PriorityWeights { if _, ok := severityAlerts[severity]; !ok { severityAlerts[severity] = 0 } diff --git a/plugin/api/alerting/rule.go b/plugin/api/alerting/rule.go index ee457737..ee89bc70 100644 --- a/plugin/api/alerting/rule.go +++ b/plugin/api/alerting/rule.go @@ -865,7 +865,7 @@ func getRuleMetricData( rule *alerting.Rule, filterParam *alerting.FilterParam) // Conditions: alerting.Condition{ // Operator: "any", // Items: []alerting.ConditionItem{ -// {MinimumPeriodMatch: 5, Operator: "gte", Values: []string{"90"}, Severity: "error", AlertMessage: "cpu使用率大于90%"}, +// {MinimumPeriodMatch: 5, Operator: "gte", Values: []string{"90"}, Priority: "error", AlertMessage: "cpu使用率大于90%"}, // }, // }, // diff --git a/service/alerting/elasticsearch/engine.go b/service/alerting/elasticsearch/engine.go index d0cb3ce2..dd798209 100644 --- a/service/alerting/elasticsearch/engine.go +++ b/service/alerting/elasticsearch/engine.go @@ -513,7 +513,7 @@ func (engine *Engine) CheckCondition(rule *alerting.Rule)(*alerting.ConditionRes for idx, targetData := range targetMetricData { if idx == 0 { sort.Slice(rule.Conditions.Items, func(i, j int) bool { - return alerting.SeverityWeights[rule.Conditions.Items[i].Severity] > alerting.SeverityWeights[rule.Conditions.Items[j].Severity] + return alerting.PriorityWeights[rule.Conditions.Items[i].Priority] > alerting.PriorityWeights[rule.Conditions.Items[j].Priority] }) } LoopCondition: @@ -669,11 +669,11 @@ func (engine *Engine) Do(rule *alerting.Rule) error { alertItem.State = alerting.AlertStateAlerting var ( - severity = conditionResults[0].ConditionItem.Severity + severity = conditionResults[0].ConditionItem.Priority ) for _, conditionResult := range conditionResults { - if alerting.SeverityWeights[severity] < alerting.SeverityWeights[conditionResult.ConditionItem.Severity] { - severity = conditionResult.ConditionItem.Severity + if alerting.PriorityWeights[severity] < alerting.PriorityWeights[conditionResult.ConditionItem.Priority] { + severity = conditionResult.ConditionItem.Priority } } paramsCtx = newParameterCtx(rule, checkResults, util.MapStr{ @@ -826,9 +826,9 @@ func newParameterCtx(rule *alerting.Rule, checkResults *alerting.ConditionResult severity string ) if len(checkResults.ResultItems) > 0 { - severity = checkResults.ResultItems[0].ConditionItem.Severity + severity = checkResults.ResultItems[0].ConditionItem.Priority sort.Slice(checkResults.ResultItems, func(i, j int) bool { - if alerting.SeverityWeights[checkResults.ResultItems[i].ConditionItem.Severity] > alerting.SeverityWeights[checkResults.ResultItems[j].ConditionItem.Severity] { + if alerting.PriorityWeights[checkResults.ResultItems[i].ConditionItem.Priority] > alerting.PriorityWeights[checkResults.ResultItems[j].ConditionItem.Priority] { return true } return false @@ -851,7 +851,7 @@ func newParameterCtx(rule *alerting.Rule, checkResults *alerting.ConditionResult } conditionParams = append(conditionParams, util.MapStr{ alerting2.ParamThreshold: resultItem.ConditionItem.Values, - alerting2.Severity: resultItem.ConditionItem.Severity, + alerting2.Severity: resultItem.ConditionItem.Priority, alerting2.ParamGroupValues: resultItem.GroupValues, alerting2.ParamIssueTimestamp: resultItem.IssueTimestamp, alerting2.ParamResultValue: resultItem.ResultValue, diff --git a/service/alerting/elasticsearch/engine_test.go b/service/alerting/elasticsearch/engine_test.go index 377eed5c..31620061 100644 --- a/service/alerting/elasticsearch/engine_test.go +++ b/service/alerting/elasticsearch/engine_test.go @@ -65,8 +65,8 @@ func TestEngine( t *testing.T) { Conditions: alerting.Condition{ Operator: "any", Items: []alerting.ConditionItem{ - {MinimumPeriodMatch: 1, Operator: "lte", Values: []string{"10"}, Severity: "error"}, - {MinimumPeriodMatch: 1, Operator: "lte", Values: []string{"20"}, Severity: "warning"}, + {MinimumPeriodMatch: 1, Operator: "lte", Values: []string{"10"}, Priority: "error"}, + {MinimumPeriodMatch: 1, Operator: "lte", Values: []string{"20"}, Priority: "warning"}, }, }, @@ -107,7 +107,7 @@ func TestEngine( t *testing.T) { // t.Fatal(err) //} sort.Slice(rule.Conditions.Items, func(i, j int) bool { - return alerting.SeverityWeights[rule.Conditions.Items[i].Severity] > alerting.SeverityWeights[rule.Conditions.Items[j].Severity] + return alerting.PriorityWeights[rule.Conditions.Items[i].Priority] > alerting.PriorityWeights[rule.Conditions.Items[j].Priority] }) fmt.Println(rule.Conditions.Items) @@ -152,7 +152,7 @@ func TestGeneratePercentilesAggQuery(t *testing.T) { // Conditions: alerting.Condition{ // Operator: "any", // Items: []alerting.ConditionItem{ - // {MinimumPeriodMatch: 5, Operator: "gte", Values: []string{"90"}, Severity: "error", AlertMessage: "cpu使用率大于90%"}, + // {MinimumPeriodMatch: 5, Operator: "gte", Values: []string{"90"}, Priority: "error", AlertMessage: "cpu使用率大于90%"}, // }, // }, // @@ -212,7 +212,7 @@ func TestGeneratePercentilesAggQuery(t *testing.T) { Conditions: alerting.Condition{ Operator: "any", Items: []alerting.ConditionItem{ - {MinimumPeriodMatch: 1, Operator: "gte", Values: []string{"10"}, Severity: "warning"}, + {MinimumPeriodMatch: 1, Operator: "gte", Values: []string{"10"}, Priority: "warning"}, }, },