repeated alarm message suppression
This commit is contained in:
22
dist/missingeventdetector.js
vendored
22
dist/missingeventdetector.js
vendored
@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const log = require("./log");
|
||||
const CallChain = require("./callchain");
|
||||
const Processor = require("./processor");
|
||||
const CHECK_PERIOD = 60; // seconds
|
||||
const config = require("./config");
|
||||
class ClientEntry {
|
||||
}
|
||||
class MissingEventProcessor extends Processor.AProcessor {
|
||||
@ -15,11 +15,18 @@ class MissingEventProcessor extends Processor.AProcessor {
|
||||
let currentTime = new Date().getTime();
|
||||
let elapsedTime = currentTime - value.lastEvent;
|
||||
log.info(`MissingEventProcessor: Checking ${key}, elapsed: ${elapsedTime / 1000}, avg. delay: ${value.avgDelay / 1000}`);
|
||||
if ((value.avgDelay != 0) && (elapsedTime > (value.avgDelay * 3))) {
|
||||
log.sendAlarmMail(`Missing Event Detected: ${key}, elapsed: ${elapsedTime / 1000}, avg. delay: ${value.avgDelay / 1000}`);
|
||||
if (value.alarmState && ((value.lastAlarmMessage + config.dict.alarmRepeatPeriod * 1000) < currentTime)) {
|
||||
value.lastAlarmMessage = currentTime;
|
||||
value.alarmMessageCounter += 1;
|
||||
log.sendAlarmMail('Repeated Alarm', `Missing Event Detected: ${key}, repeated: ${value.alarmMessageCounter}, elapsed: ${elapsedTime / 1000}, avg. delay: ${value.avgDelay / 1000}`);
|
||||
}
|
||||
if ((!value.alarmState) && ((value.avgDelay != 0) && (elapsedTime > (value.avgDelay * 3)))) {
|
||||
log.sendAlarmMail('Alarm', `Missing Event Detected: ${key}, elapsed: ${elapsedTime / 1000}, avg. delay: ${value.avgDelay / 1000}`);
|
||||
value.alarmState = true;
|
||||
value.lastAlarmMessage = currentTime;
|
||||
}
|
||||
});
|
||||
}, CHECK_PERIOD * 1000);
|
||||
}, config.dict.checkPeriod * 1000);
|
||||
}
|
||||
process(message) {
|
||||
let client = message.metadata.client;
|
||||
@ -35,6 +42,11 @@ class MissingEventProcessor extends Processor.AProcessor {
|
||||
clientEntry.delaySum += clientEntry.delay;
|
||||
clientEntry.avgDelay = clientEntry.delaySum / clientEntry.count;
|
||||
}
|
||||
if (clientEntry.alarmState) {
|
||||
log.sendAlarmMail('Release', `Event received again: ${client}`);
|
||||
clientEntry.alarmMessageCounter = 0;
|
||||
}
|
||||
clientEntry.alarmState = false;
|
||||
this.clientMap.set(client, clientEntry);
|
||||
log.info(`MissingEventProcessor: Entry for ${client} updated`);
|
||||
}
|
||||
@ -46,6 +58,8 @@ class MissingEventProcessor extends Processor.AProcessor {
|
||||
clientEntry.count = -1;
|
||||
clientEntry.delaySum = 0;
|
||||
clientEntry.avgDelay = 0;
|
||||
clientEntry.alarmState = false;
|
||||
clientEntry.alarmMessageCounter = 0;
|
||||
this.clientMap.set(client, clientEntry);
|
||||
log.info(`MissingEventProcessor: Entry for ${client} inserted`);
|
||||
}
|
||||
|
Reference in New Issue
Block a user