|
|
@ -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", |
|
|
|