OpenArm

Welcome to OpenArm

An open source implementation of the Open Groups' ARM (Application Response Measurement) 4.0 Java
interfaces. OpenArm can be configured to send ARM transaction data to a log, to a messaging queue, a
datastore, a JMX notification or to an SNMP trap.

"The ... Application Response Measurement (ARM) API function calls ...
can be used to instrument an application or other
software for transaction monitoring. The ARM API provides a way to monitor business
transactions, by embedding simple calls in the software which can be captured by an agent
supporting the ARM API. The calls are used to capture data that allows software to be
monitored for availability, service levels, and capacity."

ARM is a standard, owned and managed by the
OpenGroup.
It defines essentially two elements:

the abstract API, used for instrumenting your application

the concept of, and very vague guidelines for implementing, an ARM agent

The first of these, the abstract API, is represented in ARM 4.0 for Java as a collection
of Java interfaces. The interfaces themselves are only distributed by the Open Group in
source code format. OpenArm includes these interfaces in compiled format as part of the
binary distribution. OpenArm also contains concrete implementations of these interfaces,
although it would be unusual, and potentially an error, for an application programmer
to be aware of these classes or need to use them directly. Typically, one programs to
the interfaces provided by the OpenGroup.

The second element, the ARM agent, is also provided by OpenArm. In effect, OpenArm turns your
instrumented application into a lightweight agent. Via configuration, you direct OpenArm's
agent functionality to delegate handling of ARM transaction events to one of several possible
"mediators" -- log4j, JMX, SNMP traps, a database, or JMS.