public final class AlertMonitor extends NotificationBroadcasterSupport implements AlertMonitorMXBean
 Manage the process of accumulating and logging abnormal events such as
 IOExceptions and measurements outside of expected thresholds. This class
 notifies agents by (a) writing log messages and (b) sending JMX
 Notifications.
 
 This mechanism is designed to organize events generated by background
 threads, sometimes very frequently. For example, if a disk fails, the
 JOURNAL_FLUSHER thread may receive many IOExceptions per second. These are
 treated as Events in this class, and log messages are written periodically
 but far less frequently. But in addition, this class is also capable of
 sending a Notification to a management client which may be
 useful in making the problem known in a timely fashion
 
 Events are collated by category names. For each category value there
 is a separate AlertMonitor.History of events pertaining to that category. By
 separately aggregating events of different categories this class avoids
 discarding important, but older events belonging to one category when
 receiving new events in a different category. For example, IOExceptions
 generated frequently by the JOURNAL_FLUSHER do not overwrite previous events
 indicating that the JOURNAL_COPIER has fallen behind.
 
| Modifier and Type | Class and Description | 
|---|---|
| static class  | AlertMonitor.AlertLevelSeverity of an event | 
| static class  | AlertMonitor.AlertRecord | 
| static class  | AlertMonitor.EventHolder for event data including the event arguments and the time the
 event was posted. | 
| class  | AlertMonitor.HistoryAggregation of  AlertMonitor.Events in a category. | 
| Modifier and Type | Field and Description | 
|---|---|
| protected static String | AGGREGATION_FORMAT | 
| protected static String | EVENT_FORMAT | 
| protected static String | EXTRA_FORMAT | 
CLEANUP_CATEGORY, EXTEND_VOLUME_CATEGORY, FLUSH_STATISTICS_CATEGORY, JOURNAL_CATEGORY, MANY_JOURNAL_FILES, MISSING_VOLUME_CATEGORY, MXBEAN_NAME, READ_PAGE_CATEGORY, WRITE_PAGE_CATEGORY| Modifier and Type | Method and Description | 
|---|---|
| String | getAlertLevel()Current maximum AlertLevel in this monitor as a String: one of NORMAL,
 WARN or ERROR | 
| AlertMonitor.AlertRecord[] | getAlertRecordArray()Generate a list of event data suitable for the Akiban Server in-memory
 tables implementation. | 
| String | getDetailedHistory(String select)Return a detailed description, including first and recent occurrences of
 events within the History for the specified category. | 
| long | getErrorLogTimeInterval() | 
| AlertMonitor.History | getHistory(String name) | 
| int | getHistoryLength() | 
| SortedMap<String,AlertMonitor.History> | getHistoryMap() | 
| MBeanNotificationInfo[] | getNotificationInfo() | 
| String | getSummary()Return a summary of this AlertMonitor's current state. | 
| long | getWarnLogTimeInterval() | 
| void | poll(boolean force)Called periodically to issue any pending log messages or notifications. | 
| void | post(AlertMonitor.Event event,
    String category)Post an event. | 
| void | reset()Restore this alert monitor to level  AlertMonitor.AlertLevel.NORMALwith and
 remove all histories for all categories. | 
| void | setErrorLogTimeInterval(long errorLogTimeInterval)Set the interval between successive log entries for this monitor when its
  AlertMonitor.AlertLevel.ERROR. | 
| void | setHistoryLength(int historyLength)Set the number of  Events per category to keep in theHistory. | 
| void | setWarnLogTimeInterval(long warnLogTimeInterval)Set the interval between successive log entries for this monitor when its
  AlertMonitor.AlertLevel.WARN. | 
| String | toString() | 
addNotificationListener, handleNotification, removeNotificationListener, removeNotificationListener, sendNotificationprotected static final String EVENT_FORMAT
protected static final String AGGREGATION_FORMAT
protected static final String EXTRA_FORMAT
public final void post(AlertMonitor.Event event, String category)
AlertMonitor.History for the specified
 category and then add the event to it. Subsequently, poll the
 History to cause any pending notifications or log messages
 to be emitted.event - A Event object describing what happenedcategory - A String describing the nature of the event. A separate
            event-history is maintained for each unique category.public void reset()
AlertMonitor.AlertLevel.NORMAL with and
 remove all histories for all categories. The logging time intervals and
 history length are not changed.reset in interface AlertMonitorMXBeanpublic long getWarnLogTimeInterval()
getWarnLogTimeInterval in interface AlertMonitorMXBeanAlertMonitor.AlertLevel.WARN.public void setWarnLogTimeInterval(long warnLogTimeInterval)
AlertMonitor.AlertLevel.WARN.setWarnLogTimeInterval in interface AlertMonitorMXBeanwarnLogTimeInterval - the interval in millisecondspublic long getErrorLogTimeInterval()
getErrorLogTimeInterval in interface AlertMonitorMXBeanAlertMonitor.AlertLevel.ERROR.public void setErrorLogTimeInterval(long errorLogTimeInterval)
AlertMonitor.AlertLevel.ERROR.setErrorLogTimeInterval in interface AlertMonitorMXBeanerrorLogTimeInterval - the interval in millisecondspublic int getHistoryLength()
getHistoryLength in interface AlertMonitorMXBeanHistory per
         category.setHistoryLength(int)public AlertMonitor.History getHistory(String name)
name - Category nameHistory for that category or null
         if the specified category has no History.public SortedMap<String,AlertMonitor.History> getHistoryMap()
public void setHistoryLength(int historyLength)
Events per category to keep in the
 History. Once the number of events exceeds this count,
 earlier events are removed when new events are added. (However, the first
 Event added is retained and get accessed via
 AlertMonitor.History.getFirstEvent() even when subsequent Events
 are removed.) The default value is 10.setHistoryLength in interface AlertMonitorMXBeanhistoryLength - the historyLength to setpublic AlertMonitor.AlertRecord[] getAlertRecordArray()
public void poll(boolean force)
poll in interface AlertMonitorMXBeanforce - Indicates whether to issue pending log messages and
            notifications prior to expiration of their respective
            notification time intervals.public String toString()
public String getSummary()
AlertMonitorMXBeangetSummary in interface AlertMonitorMXBeanHistory instances.toString()public String getDetailedHistory(String select)
AlertMonitorMXBeannull
 .getDetailedHistory in interface AlertMonitorMXBeanselect - The category name(s) to include, optionally with wildcards '*'
            and '?'public String getAlertLevel()
AlertMonitorMXBeangetAlertLevel in interface AlertMonitorMXBeanAlertMonitor.AlertLevel among
         all categories being maintainedpublic MBeanNotificationInfo[] getNotificationInfo()
getNotificationInfo in interface NotificationBroadcastergetNotificationInfo in class NotificationBroadcasterSupportCopyright © 2025 Open Identity Platform Community. All rights reserved.