Skip to content

Commit 761bc64

Browse files
authored
Merge pull request #457 from wppzxc/master
告警路由中的@人增加按天轮询的功能
2 parents 120f0f3 + 9129da0 commit 761bc64

File tree

5 files changed

+68
-9
lines changed

5 files changed

+68
-9
lines changed

controllers/WebAlertRouter.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ type AlertRouterJson struct {
5151
RouterTplId string
5252
RouterPurl string
5353
RouterPat string
54+
RouterPatRR bool
5455
RouterSendResolved bool
5556
Rules []LabelMap
5657
}
@@ -73,11 +74,11 @@ func (c *MainController) AddRouter() {
7374
rules, err := json.Marshal(WebAlertRouterJson.Rules)
7475
if WebAlertRouterJson.RouterId == "" {
7576
tpl_id_int, _ := strconv.Atoi(WebAlertRouterJson.RouterTplId)
76-
err = models.AddAlertRouter(0, tpl_id_int, WebAlertRouterJson.RouterName, string(rules), WebAlertRouterJson.RouterPurl, WebAlertRouterJson.RouterPat, WebAlertRouterJson.RouterSendResolved)
77+
err = models.AddAlertRouter(0, tpl_id_int, WebAlertRouterJson.RouterName, string(rules), WebAlertRouterJson.RouterPurl, WebAlertRouterJson.RouterPat, WebAlertRouterJson.RouterPatRR, WebAlertRouterJson.RouterSendResolved)
7778
} else {
7879
id, _ := strconv.Atoi(WebAlertRouterJson.RouterId)
7980
tpl_id_int, _ := strconv.Atoi(WebAlertRouterJson.RouterTplId)
80-
err = models.UpdateAlertRouter(id, tpl_id_int, WebAlertRouterJson.RouterName, string(rules), WebAlertRouterJson.RouterPurl, WebAlertRouterJson.RouterPat, WebAlertRouterJson.RouterSendResolved)
81+
err = models.UpdateAlertRouter(id, tpl_id_int, WebAlertRouterJson.RouterName, string(rules), WebAlertRouterJson.RouterPurl, WebAlertRouterJson.RouterPat, WebAlertRouterJson.RouterPatRR, WebAlertRouterJson.RouterSendResolved)
8182
}
8283
var resp interface{}
8384
resp = err

controllers/prometheusalert.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -267,18 +267,30 @@ func AlertRouterSet(xalert map[string]interface{}, PMsg PrometheusAlertMsg, Tpl
267267
if rules_num == rules_num_match {
268268
PMsg.Type = router_value.Tpl.Tpltype
269269
PMsg.Tpl = router_value.Tpl.Tpl
270+
atSomeOne := router_value.AtSomeOne
271+
if router_value.AtSomeOneRR {
272+
openIds := strings.Split(router_value.AtSomeOne, ",")
273+
if len(openIds) > 1 {
274+
// 用自1970年1月1日以来的天数取余计算
275+
duration := time.Since(time.Unix(0, 0))
276+
days := duration.Hours() / 24
277+
i := int(days) % len(openIds)
278+
atSomeOne = openIds[i]
279+
}
280+
}
281+
270282
switch router_value.Tpl.Tpltype {
271283
case "wx":
272284
PMsg.Wxurl = router_value.UrlOrPhone
273-
PMsg.AtSomeOne = router_value.AtSomeOne
285+
PMsg.AtSomeOne = atSomeOne
274286
//钉钉渠道
275287
case "dd":
276288
PMsg.Ddurl = router_value.UrlOrPhone
277-
PMsg.AtSomeOne = router_value.AtSomeOne
289+
PMsg.AtSomeOne = atSomeOne
278290
//飞书渠道
279291
case "fs":
280292
PMsg.Fsurl = router_value.UrlOrPhone
281-
PMsg.AtSomeOne = router_value.AtSomeOne
293+
PMsg.AtSomeOne = atSomeOne
282294
//Webhook渠道
283295
case "webhook":
284296
PMsg.WebHookUrl = router_value.UrlOrPhone

models/AlertRouter.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ type AlertRouter struct {
1212
Rules string
1313
UrlOrPhone string
1414
AtSomeOne string
15+
AtSomeOneRR bool
1516
SendResolved bool
1617
Created time.Time
1718
}
@@ -21,7 +22,7 @@ type AlertRouterQuery struct {
2122
Webhook string
2223
}
2324

24-
func AddAlertRouter(id int, tplid int, name, rules, url_or_phone, at_some_one string, sendResolved bool) error {
25+
func AddAlertRouter(id int, tplid int, name, rules, url_or_phone, at_some_one string, at_some_one_rr bool, sendResolved bool) error {
2526
tpl, _ := GetTpl(tplid)
2627
o := orm.NewOrm()
2728
AlertRouter_table := &AlertRouter{
@@ -31,6 +32,7 @@ func AddAlertRouter(id int, tplid int, name, rules, url_or_phone, at_some_one st
3132
Rules: rules,
3233
UrlOrPhone: url_or_phone,
3334
AtSomeOne: at_some_one,
35+
AtSomeOneRR: at_some_one_rr,
3436
SendResolved: sendResolved,
3537
Created: time.Now(),
3638
}
@@ -39,7 +41,7 @@ func AddAlertRouter(id int, tplid int, name, rules, url_or_phone, at_some_one st
3941
return err
4042
}
4143

42-
func UpdateAlertRouter(id int, tplid int, name, rules, url_or_phone, at_some_one string, sendResolved bool) error {
44+
func UpdateAlertRouter(id int, tplid int, name, rules, url_or_phone, at_some_one string, at_some_one_rr bool, sendResolved bool) error {
4345
tpl, _ := GetTpl(tplid)
4446
o := orm.NewOrm()
4547
router_update := &AlertRouter{Id: id}
@@ -51,6 +53,7 @@ func UpdateAlertRouter(id int, tplid int, name, rules, url_or_phone, at_some_one
5153
router_update.Rules = rules
5254
router_update.UrlOrPhone = url_or_phone
5355
router_update.AtSomeOne = at_some_one
56+
router_update.AtSomeOneRR = at_some_one_rr
5457
router_update.SendResolved = sendResolved
5558
router_update.Created = time.Now()
5659
_, err := o.Update(router_update)

views/alertrouter_add.html

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ <h3 class="card-title"></h3>
154154
</div>
155155
</div>
156156

157-
<div id="Pat" class="col-sm-6">
157+
<div id="Pat" class="col-sm-5">
158158
<!-- text input -->
159159
<div class="form-group">
160160
<label id="typestr">@某人</label>
@@ -163,6 +163,13 @@ <h3 class="card-title"></h3>
163163
</div>
164164
</div>
165165

166+
<div id="Patrr" class="col-sm-1">
167+
<div class="form-check">
168+
<input id="patrr" class="form-check-input" name="patrr" type="checkbox">
169+
<label class="form-check-label">轮询@某人</label>
170+
</div>
171+
</div>
172+
166173
<div id="Party" class="col-sm-6" style="display:none">
167174
<!-- text input -->
168175
<div class="form-group">
@@ -236,48 +243,56 @@ <h3 class="card-title"></h3>
236243
typeStr.innerText="钉钉机器人地址(多个请以,隔开)";
237244
document.getElementById("Purl").style.display="";
238245
document.getElementById("Pat").style.display="";
246+
document.getElementById("Patrr").style.display="";
239247
document.getElementById("Party").style.display="none";
240248
document.getElementById("Tag").style.display="none";
241249
} else if(tpltype.value=="wx"){
242250
typeStr.innerText="微信机器人地址(多个请以,隔开)";
243251
document.getElementById("Purl").style.display="";
244252
document.getElementById("Pat").style.display="";
253+
document.getElementById("Patrr").style.display="";
245254
document.getElementById("Party").style.display="none";
246255
document.getElementById("Tag").style.display="none";
247256
} else if(tpltype.value=="fs"){
248257
typeStr.innerText="飞书机器人地址(多个请以,隔开)";
249258
document.getElementById("Purl").style.display="";
250259
document.getElementById("Pat").style.display="";
260+
document.getElementById("Patrr").style.display="";
251261
document.getElementById("Party").style.display="none";
252262
document.getElementById("Tag").style.display="none";
253263
} else if(tpltype.value=="fsapp"){
254264
typeStr.innerText="飞书 用户open_id、user_id、union_ids、部门open_department_id";
255265
document.getElementById("Purl").style.display="none";
256266
document.getElementById("Pat").style.display="";
267+
document.getElementById("Patrr").style.display="";
257268
document.getElementById("Party").style.display="none";
258269
document.getElementById("Tag").style.display="none";
259270
} else if(tpltype.value=="voice"){
260271
typeStr.innerText="";
261272
document.getElementById("Purl").style.display="none";
262273
document.getElementById("Pat").style.display="none";
274+
document.getElementById("Patrr").style.display="none";
263275
document.getElementById("Party").style.display="none";
264276
document.getElementById("Tag").style.display="none";
265277
} else if(tpltype.value=="webhook"){
266278
typeStr.innerText="webhook地址(多个请以,隔开)";
267279
document.getElementById("Purl").style.display="";
268280
document.getElementById("Pat").style.display="none";
281+
document.getElementById("Patrr").style.display="none";
269282
document.getElementById("Party").style.display="none";
270283
document.getElementById("Tag").style.display="none";
271284
} else if(tpltype.value=="email"){
272285
typeStr.innerText="邮箱(多个请以,隔开)";
273286
document.getElementById("Purl").style.display="";
274287
document.getElementById("Pat").style.display="none";
288+
document.getElementById("Patrr").style.display="none";
275289
document.getElementById("Party").style.display="none";
276290
document.getElementById("Tag").style.display="none";
277291
} else if(tpltype.value=="rl"){
278292
typeStr.innerText="百度Hi(如流)群id";
279293
document.getElementById("Purl").style.display="";
280294
document.getElementById("Pat").style.display="none";
295+
document.getElementById("Patrr").style.display="none";
281296
document.getElementById("Party").style.display="none";
282297
document.getElementById("Tag").style.display="none";
283298
} else if(tpltype.value=="workwechat"){
@@ -291,6 +306,7 @@ <h3 class="card-title"></h3>
291306
typeStr.innerText="手机号(多个请以,隔开)";
292307
document.getElementById("Purl").style.display="";
293308
document.getElementById("Pat").style.display="none";
309+
document.getElementById("Patrr").style.display="none";
294310
document.getElementById("Party").style.display="none";
295311
document.getElementById("Tag").style.display="none";
296312
}
@@ -328,6 +344,7 @@ <h3 class="card-title"></h3>
328344
RouterTplId: $('#tpl_id').val(),
329345
RouterPurl: $('#purl').val(),
330346
RouterPat: $('#pat').val(),
347+
RouterPatRR: $("#patrr").is(":checked"),
331348
RouterSendResolved: send_resolved,
332349
Rules: RouterRules
333350
};

views/alertrouter_edit.html

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ <h3 class="card-title"></h3>
118118
</div>
119119
</div>
120120

121-
<div id="Pat" class="col-sm-6">
121+
<div id="Pat" class="col-sm-5">
122122
<!-- text input -->
123123
<div class="form-group">
124124
<label id="typestr">@某人</label>
@@ -127,6 +127,13 @@ <h3 class="card-title"></h3>
127127
</div>
128128
</div>
129129

130+
<div id="Patrr" class="col-sm-1">
131+
<div class="form-check">
132+
<input id="patrr" class="form-check-input" name="patrr" type="checkbox">
133+
<label class="form-check-label">轮询@某人</label>
134+
</div>
135+
</div>
136+
130137
<div id="Party" class="col-sm-6" style="display:none">
131138
<!-- text input -->
132139
<div class="form-group">
@@ -173,6 +180,7 @@ <h3 class="card-title"></h3>
173180
typeChange();
174181
loadRules();
175182
loadSendResolved();
183+
loadAtSomeOneRR();
176184
$('#labeladd').click(function(){
177185
var labeldiv='<div class="row"> <div class="col-3"> <div class="form-group"> <label>Label Name</label> <input type="text" id="rules" class="form-control" name="rules" value="" placeholder="规则如 app=nginx,env=test"> </div> </div> <div class="col-3"> <div class="form-group"> <label>Label Value</label> <input type="text" id="rulesvalue" class="form-control" name="rulesvalue" value="" placeholder="规则如 app=nginx,env=test"> </div> </div> <div class="col-1 d-flex align-items-center"> <div class="form-check"> <input id="rulesregex" class="form-check-input" name="rulesregex" type="checkbox"> <label class="form-check-label">Regex</label> </div> </div> <div class="col-sm-1 d-flex align-items-center"> <div class="form-group"> <button id="labeldel" type="button" class="btn btn-danger btn-flat"><i class="fa fa-trash"></i></button> </div> </div></div> <br />';
178186
$('#labelx').append(labeldiv)
@@ -212,6 +220,14 @@ <h3 class="card-title"></h3>
212220

213221
}
214222

223+
function loadAtSomeOneRR(){
224+
var checkbox = document.getElementById('patrr');
225+
var atSomeOneRR={{.AlertRouter.AtSomeOneRR}};
226+
if (atSomeOneRR === true) {
227+
checkbox.checked = true
228+
}
229+
}
230+
215231
function typeChange(){
216232
var tpl_id = document.getElementById("tpl_id");
217233
var tpltype = document.getElementById("tpltype");
@@ -222,48 +238,56 @@ <h3 class="card-title"></h3>
222238
typeStr.innerText="钉钉机器人地址(多个请以,隔开)";
223239
document.getElementById("Purl").style.display="";
224240
document.getElementById("Pat").style.display="";
241+
document.getElementById("Patrr").style.display="";
225242
document.getElementById("Party").style.display="none";
226243
document.getElementById("Tag").style.display="none";
227244
} else if(tpltype.value=="wx"){
228245
typeStr.innerText="微信机器人地址(多个请以,隔开)";
229246
document.getElementById("Purl").style.display="";
230247
document.getElementById("Pat").style.display="";
248+
document.getElementById("Patrr").style.display="";
231249
document.getElementById("Party").style.display="none";
232250
document.getElementById("Tag").style.display="none";
233251
} else if(tpltype.value=="fs"){
234252
typeStr.innerText="飞书机器人地址(多个请以,隔开)";
235253
document.getElementById("Purl").style.display="";
236254
document.getElementById("Pat").style.display="";
255+
document.getElementById("Patrr").style.display="";
237256
document.getElementById("Party").style.display="none";
238257
document.getElementById("Tag").style.display="none";
239258
} else if(tpltype.value=="fsapp"){
240259
typeStr.innerText="飞书 用户open_id、user_id、union_ids、部门open_department_id";
241260
document.getElementById("Purl").style.display="none";
242261
document.getElementById("Pat").style.display="";
262+
document.getElementById("Patrr").style.display="";
243263
document.getElementById("Party").style.display="none";
244264
document.getElementById("Tag").style.display="none";
245265
} else if(tpltype.value=="voice"){
246266
typeStr.innerText="";
247267
document.getElementById("Purl").style.display="none";
248268
document.getElementById("Pat").style.display="none";
269+
document.getElementById("Patrr").style.display="none";
249270
document.getElementById("Party").style.display="none";
250271
document.getElementById("Tag").style.display="none";
251272
} else if(tpltype.value=="webhook"){
252273
typeStr.innerText="webhook地址(多个请以,隔开)";
253274
document.getElementById("Purl").style.display="";
254275
document.getElementById("Pat").style.display="none";
276+
document.getElementById("Patrr").style.display="none";
255277
document.getElementById("Party").style.display="none";
256278
document.getElementById("Tag").style.display="none";
257279
} else if(tpltype.value=="email"){
258280
typeStr.innerText="邮箱(多个请以,隔开)";
259281
document.getElementById("Purl").style.display="";
260282
document.getElementById("Pat").style.display="none";
283+
document.getElementById("Patrr").style.display="none";
261284
document.getElementById("Party").style.display="none";
262285
document.getElementById("Tag").style.display="none";
263286
} else if(tpltype.value=="rl"){
264287
typeStr.innerText="百度Hi(如流)群id";
265288
document.getElementById("Purl").style.display="";
266289
document.getElementById("Pat").style.display="none";
290+
document.getElementById("Patrr").style.display="none";
267291
document.getElementById("Party").style.display="none";
268292
document.getElementById("Tag").style.display="none";
269293
} else if(tpltype.value=="workwechat"){
@@ -277,6 +301,7 @@ <h3 class="card-title"></h3>
277301
typeStr.innerText="手机号(多个请以,隔开)";
278302
document.getElementById("Purl").style.display="";
279303
document.getElementById("Pat").style.display="none";
304+
document.getElementById("Patrr").style.display="none";
280305
document.getElementById("Party").style.display="none";
281306
document.getElementById("Tag").style.display="none";
282307
}
@@ -314,6 +339,7 @@ <h3 class="card-title"></h3>
314339
RouterTplId: $('#tpl_id').val(),
315340
RouterPurl: $('#purl').val(),
316341
RouterPat: $('#pat').val(),
342+
RouterPatRR: $("#patrr").is(":checked"),
317343
RouterSendResolved: send_resolved,
318344
Rules: RouterRules
319345
};

0 commit comments

Comments
 (0)