Browse Source

update 重新处理历史告警判断

dev
lucas 1 week ago
parent
commit
91a1eba2cf
  1. 47
      consumers/consumerAxySkAlarm.go

47
consumers/consumerAxySkAlarm.go

@ -207,22 +207,9 @@ func (the *consumerAxySkAlarm) judgeSK() string {
trigger.StructId, trigger.FactorId, level)
onceTriggerStationAlarmMap[sid] = conditionStr
//判断历史有没有
hisK := fmt.Sprintf("%s_%s", sid, fmt.Sprintf("3077000%d", level))
if hv, ok := the.historyStationAlarmMap[hisK]; ok {
if hv.AlarmLevel < level { //低等级告警过滤
log.Printf("测点[%s]本次触发 level=[%d] > 历史有效等级%d,不再重复触发", sid, level, hv.AlarmLevel)
continue
}
if !alarmTime.After(hv.Time) {
log.Printf("测点[%s]本次触发时刻[%s]level=%d 对比历史有效时刻[%s]level=%d 非新", sid,
alarmTime.Format("2006-01-02 15:04:05"),
level,
hv.Time.Format("2006-01-02 15:04:05"),
hv.AlarmLevel,
)
continue
}
isHisAlarm, hisK := the.isHistoryAlarm(sid, level, alarmTime)
if isHisAlarm {
continue
}
//纪录历史告警
log.Printf("trigger.Id=%d, 测点[%s]本次触发双控,%s,时刻[%s]level=%d", trigger.Id, sid, hisK, alarmTime.Format("2006-01-02 15:04:05"), level)
@ -252,6 +239,34 @@ func (the *consumerAxySkAlarm) judgeSK() string {
return ""
}
func (the *consumerAxySkAlarm) isHistoryAlarm(sourceId string, level int, alarmTime time.Time) (bool, string) {
//特别注意 告警进程:产生一级后,后续触发二级 也会算到一级头上,所有双控产生二级 如果二级不存在 要往上高等级判断
rawK := fmt.Sprintf("%s_%s", sourceId, fmt.Sprintf("3077000%d", level))
for i := level; i >= 1; i-- {
hisK := fmt.Sprintf("%s_%s", sourceId, fmt.Sprintf("3077000%d", i))
if hv, ok := the.historyStationAlarmMap[hisK]; ok {
if !alarmTime.After(hv.Time) {
log.Printf("测点[%s]本次触发时刻[%s]%s(实际es=%s) 对比历史有效时刻[%s] 非新",
sourceId,
alarmTime.Format("2006-01-02 15:04:05"),
rawK,
hisK,
hv.Time.Format("2006-01-02 15:04:05"),
)
continue
}
if hv.AlarmLevel < level { //低等级告警过滤
log.Printf("测点[%s]本次触发 %s(实际es=%s) > 历史有效等级%d,不再重复触发", sourceId, rawK, hisK, hv.AlarmLevel)
continue
}
return true, hisK
}
}
return false, rawK
}
func (the *consumerAxySkAlarm) skAlarmInfo(alarmInfoTemplate *models.EsAlarm, level int, detail string, alarmTime time.Time, triggerTypeCodes []string) []byte {
alarmMsg := models.KafkaAlarm{
MessageMode: "AlarmGeneration",

Loading…
Cancel
Save