Table of Contents

Alarms - The Basics

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


Scheduling of Alarms

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.


Self Assessment