add alerting notification
This commit is contained in:
parent
c8cd0b80a4
commit
3fafe39b0d
|
@ -608,6 +608,10 @@ POST $[[INDEX_PREFIX]]alert-rule/_doc/builtin-calakp97h710dpnp1fa2
|
|||
"id": "builtin-calakp97h710dpnp1fa2",
|
||||
"created": "2022-06-16T03:58:29.437447113Z",
|
||||
"updated": "2022-07-21T23:12:51.111569117Z",
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"name": "CPU utilization is Too High",
|
||||
"enabled": false,
|
||||
"resource": {
|
||||
|
@ -734,6 +738,10 @@ POST $[[INDEX_PREFIX]]alert-rule/_doc/builtin-cal8n7p7h710dpnoaps0
|
|||
"updated": "2022-07-13T04:00:06.181994982Z",
|
||||
"name": "Cluster Health Change to Red",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -851,6 +859,10 @@ POST $[[INDEX_PREFIX]]alert-rule/_doc/builtin-cal8n7p7h710dpnogps1
|
|||
"updated": "2022-07-22T00:06:26.498903821Z",
|
||||
"name": "Disk utilization is Too High",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -980,6 +992,10 @@ POST $[[INDEX_PREFIX]]alert-rule/_doc/builtin-cbp20n2anisjmu4gehc5
|
|||
"updated": "2022-08-09T08:52:44.633455664Z",
|
||||
"name": "Elasticsearch node left cluster",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -1074,6 +1090,10 @@ POST $[[INDEX_PREFIX]]alert-rule/_doc/builtin-calavvp7h710dpnp32r3
|
|||
"updated": "2022-07-21T23:10:36.70696738Z",
|
||||
"name": "Index Health Change to Red",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -1168,6 +1188,10 @@ POST $[[INDEX_PREFIX]]alert-rule/_doc/builtin-calaqnh7h710dpnp2bm8
|
|||
"updated": "2022-07-21T23:12:07.142532243Z",
|
||||
"name": "JVM utilization is Too High",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -1292,6 +1316,10 @@ POST $[[INDEX_PREFIX]]alert-rule/_doc/builtin-cbp2e4ianisjmu4giqs7
|
|||
"updated": "2022-08-09T09:39:29.604751601Z",
|
||||
"name": "Search latency is great than 500ms",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -1414,6 +1442,10 @@ POST $[[INDEX_PREFIX]]alert-rule/_doc/builtin-calgapp7h710dpnpbeb6
|
|||
"updated": "2022-07-22T00:03:34.044562893Z",
|
||||
"name": "Shard Storage >= 55G",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -1509,6 +1541,10 @@ POST $[[INDEX_PREFIX]]alert-rule/_doc/cb34sfl6psfiqtovhpt4
|
|||
"updated": "2022-08-09T08:40:05.323148338Z",
|
||||
"name": "Too Many Deleted Documents",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -1632,8 +1668,8 @@ POST $[[INDEX_PREFIX]]view/_doc/cb34sfl6psfiqtovhpt4
|
|||
"name": "Gateway Metrics",
|
||||
"description": "",
|
||||
"creator": {
|
||||
"name": "admin",
|
||||
"id": "default_user_admin"
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"view_id": "cb34sfl6psfiqtovhpt4",
|
||||
"config":{
|
||||
|
|
|
@ -573,6 +573,10 @@ POST $[[INDEX_PREFIX]]alert-rule/doc/builtin-calakp97h710dpnp1fa2
|
|||
"updated": "2022-07-21T23:12:51.111569117Z",
|
||||
"name": "CPU utilization is Too High",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -697,6 +701,10 @@ POST $[[INDEX_PREFIX]]alert-rule/doc/builtin-cal8n7p7h710dpnoaps0
|
|||
"updated": "2022-07-13T04:00:06.181994982Z",
|
||||
"name": "Cluster Health Change to Red",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -814,6 +822,10 @@ POST $[[INDEX_PREFIX]]alert-rule/doc/builtin-cal8n7p7h710dpnogps1
|
|||
"updated": "2022-07-22T00:06:26.498903821Z",
|
||||
"name": "Disk utilization is Too High",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -943,6 +955,10 @@ POST $[[INDEX_PREFIX]]alert-rule/doc/builtin-cbp20n2anisjmu4gehc5
|
|||
"updated": "2022-08-09T08:52:44.633455664Z",
|
||||
"name": "Elasticsearch node left cluster",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -1037,6 +1053,10 @@ POST $[[INDEX_PREFIX]]alert-rule/doc/builtin-calavvp7h710dpnp32r3
|
|||
"updated": "2022-07-21T23:10:36.70696738Z",
|
||||
"name": "Index Health Change to Red",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -1131,6 +1151,10 @@ POST $[[INDEX_PREFIX]]alert-rule/doc/builtin-calaqnh7h710dpnp2bm8
|
|||
"updated": "2022-07-21T23:12:07.142532243Z",
|
||||
"name": "JVM utilization is Too High",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -1255,6 +1279,10 @@ POST $[[INDEX_PREFIX]]alert-rule/doc/builtin-cbp2e4ianisjmu4giqs7
|
|||
"updated": "2022-08-09T09:39:29.604751601Z",
|
||||
"name": "Search latency is great than 500ms",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -1377,6 +1405,10 @@ POST $[[INDEX_PREFIX]]alert-rule/doc/builtin-calgapp7h710dpnpbeb6
|
|||
"updated": "2022-07-22T00:03:34.044562893Z",
|
||||
"name": "Shard Storage >= 55G",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -1472,6 +1504,10 @@ POST $[[INDEX_PREFIX]]alert-rule/doc/cb34sfl6psfiqtovhpt4
|
|||
"updated": "2022-08-09T08:40:05.323148338Z",
|
||||
"name": "Too Many Deleted Documents",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
|
|
@ -630,6 +630,10 @@ POST $[[INDEX_PREFIX]]alert-rule/doc/builtin-calakp97h710dpnp1fa2
|
|||
"updated": "2022-07-21T23:12:51.111569117Z",
|
||||
"name": "CPU utilization is Too High",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -754,6 +758,10 @@ POST $[[INDEX_PREFIX]]alert-rule/doc/builtin-cal8n7p7h710dpnoaps0
|
|||
"updated": "2022-07-13T04:00:06.181994982Z",
|
||||
"name": "Cluster Health Change to Red",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -871,6 +879,10 @@ POST $[[INDEX_PREFIX]]alert-rule/doc/builtin-cal8n7p7h710dpnogps1
|
|||
"updated": "2022-07-22T00:06:26.498903821Z",
|
||||
"name": "Disk utilization is Too High",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -1000,6 +1012,10 @@ POST $[[INDEX_PREFIX]]alert-rule/doc/builtin-cbp20n2anisjmu4gehc5
|
|||
"updated": "2022-08-09T08:52:44.633455664Z",
|
||||
"name": "Elasticsearch node left cluster",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -1094,6 +1110,10 @@ POST $[[INDEX_PREFIX]]alert-rule/doc/builtin-calavvp7h710dpnp32r3
|
|||
"updated": "2022-07-21T23:10:36.70696738Z",
|
||||
"name": "Index Health Change to Red",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -1188,6 +1208,10 @@ POST $[[INDEX_PREFIX]]alert-rule/doc/builtin-calaqnh7h710dpnp2bm8
|
|||
"updated": "2022-07-21T23:12:07.142532243Z",
|
||||
"name": "JVM utilization is Too High",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -1312,6 +1336,10 @@ POST $[[INDEX_PREFIX]]alert-rule/doc/builtin-cbp2e4ianisjmu4giqs7
|
|||
"updated": "2022-08-09T09:39:29.604751601Z",
|
||||
"name": "Search latency is great than 500ms",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -1434,6 +1462,10 @@ POST $[[INDEX_PREFIX]]alert-rule/doc/builtin-calgapp7h710dpnpbeb6
|
|||
"updated": "2022-07-22T00:03:34.044562893Z",
|
||||
"name": "Shard Storage >= 55G",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
@ -1529,6 +1561,10 @@ POST $[[INDEX_PREFIX]]alert-rule/doc/cb34sfl6psfiqtovhpt4
|
|||
"updated": "2022-08-09T08:40:05.323148338Z",
|
||||
"name": "Too Many Deleted Documents",
|
||||
"enabled": false,
|
||||
"creator": {
|
||||
"name": "$[[USERNAME]]",
|
||||
"id": "$[[USER_ID]]"
|
||||
},
|
||||
"resource": {
|
||||
"resource_id": "$[[RESOURCE_ID]]",
|
||||
"resource_name": "$[[RESOURCE_NAME]]",
|
||||
|
|
|
@ -25,6 +25,10 @@ type Rule struct {
|
|||
LastEscalationTime time.Time `json:"-"` //标识最近一次告警升级发送通知的时间
|
||||
SearchText string `json:"-" elastic_mapping:"search_text:{type:text,index_prefixes:{},index_phrases:true, analyzer:suggest_text_search }"`
|
||||
Expression string `json:"-"`
|
||||
Creator struct {
|
||||
Name string `json:"name" elastic_mapping:"name: { type: keyword }"`
|
||||
Id string `json:"id" elastic_mapping:"id: { type: keyword }"`
|
||||
} `json:"creator" elastic_mapping:"creator:{type:object}"`
|
||||
}
|
||||
|
||||
func (rule *Rule) GetOrInitExpression() (string, error){
|
||||
|
|
|
@ -12,6 +12,7 @@ import (
|
|||
"infini.sh/console/model/alerting"
|
||||
alerting2 "infini.sh/console/service/alerting"
|
||||
_ "infini.sh/console/service/alerting/elasticsearch"
|
||||
"infini.sh/framework/core/api/rbac"
|
||||
httprouter "infini.sh/framework/core/api/router"
|
||||
"infini.sh/framework/core/elastic"
|
||||
"infini.sh/framework/core/event"
|
||||
|
@ -40,6 +41,12 @@ func (alertAPI *AlertAPI) createRule(w http.ResponseWriter, req *http.Request, p
|
|||
}, http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
user, err := rbac.FromUserContext(req.Context())
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
alertAPI.WriteError(w, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
var ids []string
|
||||
for _, rule := range rules {
|
||||
exists, err := checkResourceExists(&rule)
|
||||
|
@ -73,6 +80,10 @@ func (alertAPI *AlertAPI) createRule(w http.ResponseWriter, req *http.Request, p
|
|||
}
|
||||
}
|
||||
rule.Metrics.Groups = groups
|
||||
if user != nil {
|
||||
rule.Creator.Name = user.Username
|
||||
rule.Creator.Id = user.UserId
|
||||
}
|
||||
|
||||
err = orm.Save(nil, rule)
|
||||
if err != nil {
|
||||
|
|
|
@ -445,6 +445,10 @@ func (module *Module) initialize(w http.ResponseWriter, r *http.Request, ps http
|
|||
return w.Write([]byte(cfg.ID))
|
||||
case "RESOURCE_NAME":
|
||||
return w.Write([]byte(cfg.Name))
|
||||
case "USER_ID":
|
||||
return w.Write([]byte("default_user_" + request.BootstrapUsername))
|
||||
case "USERNAME":
|
||||
return w.Write([]byte(request.BootstrapUsername))
|
||||
}
|
||||
panic(errors.Errorf("unknown tag: %v", tag))
|
||||
})
|
||||
|
|
|
@ -10,6 +10,7 @@ import (
|
|||
"fmt"
|
||||
"github.com/Knetic/govaluate"
|
||||
log "github.com/cihub/seelog"
|
||||
"infini.sh/console/model"
|
||||
"infini.sh/console/model/alerting"
|
||||
alerting2 "infini.sh/console/service/alerting"
|
||||
"infini.sh/console/service/alerting/action"
|
||||
|
@ -720,6 +721,23 @@ func (engine *Engine) Do(rule *alerting.Rule) error {
|
|||
if err != nil {
|
||||
return fmt.Errorf("save alert message error: %w", err)
|
||||
}
|
||||
userID := rule.Creator.Id
|
||||
if userID == "" {
|
||||
userID = "*"
|
||||
}
|
||||
notification := &model.Notification{
|
||||
UserId: util.ToString(userID),
|
||||
Type: model.NotificationTypeNotification,
|
||||
MessageType: model.MessageTypeAlerting,
|
||||
Status: model.NotificationStatusNew,
|
||||
Title: alertItem.Title,
|
||||
Body: alertItem.Message,
|
||||
Link: "/alerting/message",
|
||||
}
|
||||
err = orm.Create(nil, notification)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to create notification, err: %w", err)
|
||||
}
|
||||
}else{
|
||||
alertMessage.Title = alertItem.Title
|
||||
alertMessage.Message = alertItem.Message
|
||||
|
|
Loading…
Reference in New Issue