Author: John Rellis
Alarms are the backbone of the IDMS as they are used to drive ticket creation. The list of current active alarms in the system is available in the SnmpManager Node Monitor. Alarms are represented in the domain model as the ActiveAlarm.
/**
* This represents an uncleared trap in the system and will put a
* network into an alarm until the cleared flag is set. An active alarm
* will reference the trap that created it and the trap that cleared it (if it is cleared)
*/
class ActiveAlarm {
static optionals = ["networkElement", "clearedDate"]
static hasMany = [tickets: RemoteTicket]
static transients = ['foundGtsComponent','createNeutralJson']
//static searchable=true
NetworkElement networkElement
// The gts that created this alarm
GeneralTrapSummary creatingGTS
// The gts that cleared the alarm if the alarm is cleared
GeneralTrapSummary clearingGTS = null
// Boolean to determine if the alarm is cleared or not
boolean cleared = false
// This is an alarm type. It will also need archtecture info
// e.g. type=AIMOS_ALARM:3045
String type = "n/a"
// This is some kind of id that will connect a clearTrap with an original alarm
// e.g. context=AIMOS_PHILADELPHIA:72340
String context = "n/a"
// If the same alarm comes in multiple times for the same network element
// this counter will be set rather than start a new alarm
int repeatsReceived = 0;
// Date alarm is created
Date createdDate = new Date()
// If the alarm has changed status (e.g. repeat received, severity changed or cleared, this will update)
Date statusUpdatedDate = new Date();
Date clearedDate = null
// This reason is pulled from the clear trap or is set as "manual" if cleared manually
String clearedReason = "n/a"
// This is trap specific. This is used for the porposes of clearing so that networkElement-alarmIdentifier is
// a unique key to locate and clear an alarm
String alarmIdentifier = "n/a"
// This is usually something like "ok","minor", "major" "critical" etc
String status = "n/a"
// This was to store the previous status of the alarm so that after a "clear" you can see what it was originally
String previousStatus = "n/a"
boolean acknowledged = false
Date acknowledgedDate
transient Boolean createNeutralJson = false
transient GeneralTrapSummaryComponent foundGtsComponent = null
....
}
An understanding of the fields will reveal its behaviour inside the application, some obvious fields are left out, for example, cleared and clearedDate
Active Alarm creation is typically triggered from trap rules via the GeneralTrapSummaryWrapper#scheduleAlarmAndTicketForLaterWithForms method.
This will schedule an alarm and ticket to create after a certain amount of time.
It is possible to have a different time delay for the alarm and the ticket.
A typical set up is to wait 10 seconds to create an alarm and X number of minutes to create a ticket, the X number of minutes is typically decided by the severity of the alarm, the higher the severity, the shorter the time.
This is achieved via the SnmpManager Scheduler.
If a clear is received within these 10 seconds, the alarm is never created and is removed from the Scheduler.