Active Monitor (AMon)

It is important that enterprise-class infrastructure software systems, like the Apache ActiveMQ message broker, provide system administrators with a mechanism through which they can monitor the overall health and performance of that system. Without a monitoring system in-place, the reliability, high-availability, and performance of the system, as a whole, are compromised.

TTM's Active Monitor, or AMon for short, is an enterprise-class monitoring system that is specifically designed for the Apache ActiveMQ message broker. AMon comprises two primary modules: Monlet Framework and SNMP Agent. The following are some snippets from the AMon User Guide that describe these two modules.

Monlet Framework

AMon does not perform the actual monitoring of an ActiveMQ message broker. What AMon provides is a framework that facilitates the rapid development and deployment of one or more user-defined ActiveMQ monitoring agents, or "Monlets" as they are referred to in this document. The AMon framework and the Monlets that it hosts are embedded within an ActiveMQ message broker process. The framework and its Monlets combine to provide a powerful and flexible monitoring system for ActiveMQ.

A Monlet is an end-user defined component that comprises one or more conditional expressions and their corresponding actions; the Monlet invokes the actions if and when the conditional expressions are TRUE. You can also view the conditional expressions as predicate functions that accept one or more variables with the variables representing the runtime state of the message broker.

In general, the conditions are designed to test the runtime or operational state of those objects that comprise the ActiveMQ message broker. Unlike ActiveMQ's default advisory system, the AMon framework gives its Monlets direct access to all of the message broker's runtime object hierarchies. The broker comprises many objects and their properties; therefore, there are also many conditions that can be defined and monitored. Here are just a few examples of the types of Monlets and the objects that they can monitor.

  • Resource Monlet: one that tests whether a particular object, which represents a resource (e.g., memory, queue, etc.), has breached a threshold and invokes an action if the threshold is breached. The action can be invoking a script, firing off an email, or raising an SNMP notification.
  • Audit Monlet: one that tests whether a message that is being routed through the broker meets some sort of condition (e.g., includes some user-defined property that has been assigned a particular value), and if the condition is met the contents of the message can be written to an audit log.
  • Log Monlet: one that captures ActiveMQ messages that are written to the ActiveMQ log file with a severity of WARN or higher. The Monlet can then express the log message through a SNMP notification or trap.

AMon also allows Monlets to test conditions associated with the broker's hosting Java Virtual Machine (JVM). For example, a Monlet can test whether the number of active threads within the JVM or its memory heap size has breached a certain threshold.

So unlike ActiveMQ's default Advisory system, AMon is a framework that:

  • Allows end-users to define their own monitoring agents (Monlets)
  • Gives the monitoring agents the ability to monitor all aspects of the ActiveMQ message broker's runtime state
  • Gives them the capability to perform a myriad of different actions in response to one or more conditional expressions returning TRUE.

AMon maintains a clean separation between the Monlets and the broker objects that they are monitoring. This separation is provided by a combination of the following:

  • Event messages that are published by the AMon plugin module, which is the AMon core component or engine.
  • AMon's default monitoring expression language (MEL)
  • The Apache Camel integration framework's routing Domain Specific Language (DSL).

The above items all combine to make developing Monlets relatively straightforward and allows the AMon system as a whole to be extensible and flexible. The following three sections describe the above three items in more detail.

Along with the Java programming language, the Monlet developer will need to have a basic understanding of Apache Camel and the Unified Expression Language (UEL).

SNMP Agent and MIB

AMon also includes an embedded SNMP v2 Agent and accompanying Management Information Base (MIB). These components allow ActiveMQ to be monitored by SNMP-capable management systems. The MIB, which is included in the AMon product archive file, lists and describes all the ActiveMQ attributes that can be monitored via AMon's SNMP agent.

AMon's SNMP agent also generates SNMP notifications (a.k.a., traps) and gives Monlets the capability to generate their own notifications via a Camel SNMP endpoint that AMon makes available to Monlets. See the SNMP Camel Endpoint section of the AMon user guide for examples of how Monlets can take advantage of this Camel SNMP endpoint (component) to generate SNMP v2 notifications.

Send us an email if you would like to sign up for the upcoming AMon early adopter program.

Apache ActiveMQ Monitor
An enterprise class monitoring system for ActiveMQ.
Apache ActiveMQ5 Reference Guide v2.0
An ActiveMQ Reference Guide to help you get started with ActiveMQ.
Apache ActiveMQ LDAP & JDBC Security Plugin
Dynamically reconfigurable ActiveMQ security plugins.
Foundation Guide for ActiveMQ
An introduction to messaging and ActiveMQ.
Remote access to data sources via J2EE web service.