Replace the Sybase 'Database_Error_Log_Details' rule Conditions (Critical and Fatal) with the following text respectively:
Database_Error_Log_Details_Critical:
-----------------------------
// calculate lasttime of cleared alarms(this topology)
alarmSvc = server.get("AlarmService");
def today = new Date() ;
def prevAlarmlastTime = today ;
currentAlarms = alarmSvc.getAlarms(today.minus(30) , today,scope.getUniqueId());
msgTimes = [] ;
for (alarm in currentAlarms) {
if(alarm.getIsCleared()) {
msg = alarm.getMessage() ;
msgA = msg.split("Error time is:") ;
try {
if(msgA.size() > 1 ) {
msgdate = new Date().parse("MMM d yyyy hh:mmaa", msgA[1].trim() );
msgTimes.add( msgdate ) ;
}
} catch (e1) { }
}
}
prevAlarmlastTime = msgTimes.max();
def date2compare = new Date( today.time - 30*60*1000 )
if(date2compare < prevAlarmlastTime ) date2compare = prevAlarmlastTime
checkObservationAlarms(#Sybase_MDA_DatabaseErrorlogDetails for 1 ms#,
{entry ->
if ( new Date().parse("MMM d yyyy hh:mmaa",entry.get("error_time").trim() ) <= date2compare ) { return 0 }
if (entry.get("error_severity") >= 17 && entry.get("error_severity") < 22) {
return 2;
}
return 0;
},
{entry, error_severity -> switch(error_severity) {
case 2:
return "17-21";
case 0:
return "";
default:
return "";
}
}
,
).size() > 0;
-------------------------------
Database_Error_Log_Details_Fatal:
------------------------------
// calculate lasttime of cleared alarms(this topology)
alarmSvc = server.get("AlarmService");
def today = new Date() ;
def prevAlarmlastTime = today ;
currentAlarms = alarmSvc.getAlarms(today.minus(30) , today,scope.getUniqueId());
msgTimes = [] ;
for (alarm in currentAlarms) {
if(alarm.getIsCleared()) {
msg = alarm.getMessage() ;
msgA = msg.split("Error time is:") ;
try {
if(msgA.size() > 1 ) {
msgdate = new Date().parse("MMM d yyyy hh:mmaa", msgA[1].trim() );
msgTimes.add( msgdate ) ;
}
} catch (e1) { }
}
}
prevAlarmlastTime = msgTimes.max();
def date2compare = new Date( today.time - 30*60*1000 )
if(date2compare < prevAlarmlastTime ) date2compare = prevAlarmlastTime
checkObservationAlarms(#Sybase_MDA_DatabaseErrorlogDetails for 1000 ms#,
{entry ->
if ( new Date().parse("MMM d yyyy hh:mmaa",entry.get("error_time").trim() ) <= date2compare ) { return 0 }
if (entry.get("error_severity") >= 22) {
return 2;
}
if (entry.get("error_message").contains( "Space available in the log segment has fallen critically" ) ) {
return 44 ;
}
return 0;
},
{entry, error_severity -> switch(error_severity) {
case 2:
return "22";
case 44:
return "44";
case 0:
return "";
default:
return "";
}
}
,
).size() > 0;
-------------------------------------------------