Java API for Advanced Faults Management
Java API for Advanced Faults Management
Management
Abstract
The paper proposes an alternative for modeling managed resources using Java and
Telecommunication Network Management standards. It emphasizes functions related
to Fault Management, namely: diagnostic testing and performance monitoring. Based
on Java Management Extension (JMXTM), specific extensions are proposed to
facilitate diagnostic testing and performance measurements implementation. The new
API also called Java Fault Management Extension (JFMX) consists of managed
objects that model real resources being tested or monitored and support objects
defined for the need of diagnostic testing and performance measurements. The paper
discusses four Java implementations of a 3-tier client/server scenario focusing on the
“SystemUnderTest” package of the new API to instrument a minimalist Managed
System scenario. These implementations are respectively built on top of the
following Java based communication infrastructures: JMX/JFMX, RMI,
CORBA/Java, and VoyagerTM. The paper extends the Voyager implementation with
JMX/JFMX and uses their dynamic and advanced features to provide a highly
efficient Solution. The later implementation also uses Mobile Agent paradigm to
overcome well-known limitations of the RPC based implementations.
Keywords
Diagnostic Test, Performance Monitoring, JMX, JFMX, Mobile Agent, CORBA,
RMI, Voyager.
1 Introduction
Java is a widely used programming language that matured and became a robust
platform for advanced Enterprise Applications development. In addition to the
distributed computing capabilities provided by Remote Method Invocation [16] and
CORBA implementation [14], several other players enrich the Java Core Platform
[17, 3]. Significant contributions to Network and Systems Management are provided
by the Java Dynamic Management Kit (JDMKTM) [18] former Java Management API
(JMAPI), and the Java Management Extension (JMXTM) [19]. JMX is a Sun
Microsystems trademark that provides a standard for the instrumentation of
creation, conductors and agents coordination, test results correlation and fault
diagnostic). The package also supports a dynamic Class Loader that allows any Fault
Management Application to load at runtime new Agent, Test Session, or Test Object
class.
Test Agent Server: This package is composed of MBeans defined to facilitate
the implementation of advanced dynamic and mobile test/performance agents. It
allows dynamic Tests/Monitoring MBeans creation, registration, and roaming, test
lifecycle management (start, stop, suspend and resume), test results collection, and
events notification. Test Object MBean is defined to model individual test activity.
Sessions aggregate one or several Test/Monitoring Objects. The Performer Agent
implements set of dynamic functionality to control test and monitoring activities.
Fault Detection Agent is defined to detect faults and perform lower level alarms
filtering and correlation. Detection and Performer agents are built with dynamic and
migration capability [4, 12] to allow them to travel the nearest possible to the
managed resources and perform their duties. This package utilizes event-driven
approach to model communication between agents and managers. It also defines
Diagnostic Test Results, scheduling Conflicts and test-related events as JMX
notifications. Tests/Monitoring scheduling is achieved using JMX Timer. A Test
Action Request Receiver (TARR) MBean is defined to implement test and
monitoring service interface as specified in the X.745 [7].
System under Test: This package is composed of MBeans modeling real
resources under test and/or monitoring. It includes tested/monitored resources
(Managed Object, Managed Object under Test, Manageable Component and
Manageable Relation), tests access views and logical test units (Associated Object)
representing test resources connected or embedded into real resources, and vendor
specific test/monitoring resources (Remote Testing Resource). The package includes
an abstract Support Object class from which all classes defined for the need of testing
and monitoring (Session, Test Object, Test Schedule and Monitoring Schedule) are
derived. The package also defines additional utility classes such as Users Contact
Information, Object Reference, Managed Object States/Status, and XML
configurations Parser.
In the JMX terminology, a JMX manageable resource (MBean) is a resource that
has been instrumented in accordance to the JMX Instrumentation Level Specification
and tested against the Instrumentation Level Compatibility Test Suite [19]. A
manageable resource is a software application, a hardware device, or a software
implementation of a service. In order to be instrumented, a resource can be fully
written in Java (one or several MBeans) or just offer a Java wrapper. While Java
provides portability and ease of prototyping, JMX ensure flexibility, inter-
operability, and dynamic management capabilities required by current service-driven
networks. JMX agent and manager levels provide flexible, distributed, and dynamic
management infrastructure to be implemented in Java.
Depending on the managed environment, several protocols (SNMP, CMIP, TL1,
and ASCII) can be used to synchronize real resources with Managed Beans and
instrument them (see lower part of Figure 1). JMX/JDMK provided an SNMP API to
allow the instrumentation of SNMP manageable Resources [19]. Outback provided
jSNMP [15] a cross-platform and higher level SNMP API. AdventNet implemented
487 Java API for Advanced Faults Management 487
on top of JDMK a dynamic SNMP Access solution [1, 19]. Future releases of JMX
are expected to support CMIP/Q3 manageable telecommunication resources.
Alternatives to access Telecommunication NEs are available via Bellcore TL1
protocol. A Java based TL1 Translator developed by Advanced Network Solutions is
proposed in [20]. ASCII based protocols such as MML (Man Machine Language)
may also be used in a Java Environment to access NEs such as Wireless Switches.
Detailed descriptions of the main Managed Object MBeans are presented below.
Managed Object MBean: Any class that defines a manageable resource may extend
this basic Managed Object class (MO). This class represents objects that provide
JMX compliant software management view of physical or logical managed resources
[8, 19]. It implements limited testing and monitoring capabilities (e.g., simple ping
test).
488 Session Thirteen Fault Management I 488
Mana gedObje ct
tested _b y
terminate_at
mapped_to
Managed Object under Test MBean: This is an advanced Managed Object that
represents managed resource which functionality is to be tested [7, 8, 19]. It is
derived from the basic Managed Object MBean and extends its diagnostic testing and
performance monitoring capabilities. Managed Object under Test MBean (MOT)
models either a simple resource or an aggregated resource. It has self-monitoring
capabilities and several interfaces to allow managers and agents to perform advanced
testing, collect detailed performance measurements, detect and diagnose faults
occurring in the target managed resource down to its Manageable Components.
Manageable Component MBean: This class also derived from the basic Managed
Object class defines a lower level of granularity for the decomposition of managed
resources. Manageable Components (MC) represent the leaf of any diagnostic tree of
their aggregated parent object (i.e., MOT). They may have dependency relations with
other Manageable Components or Managed Objects (e.g., terminate_at, mapped_to,
and served_by). In order to model complex managed resources or change the
representation of existing Managed Objects in a management information model,
Voyager Facet mechanism [5, 13] is used to dynamically add both Manageable
Components and Relations at run time
Associated Object MBean: This MBean class is a MO that models a view of testing
resource or test access points used for testing and monitoring of MOTs. Examples of
Associated Objects (AO) include Mediation Device, Test Unit, SNMP/CMIP Agent,
Monitoring Agent, and Embedded Probes.
Remote Testing Resource MBean: Remote Testing Resources (RTR) are derived
from AO. They are designed with remote test/monitoring management capability and
may in turn be specialized to vendor specific resources with advanced test/monitoring
features and technologies.
489 Java API for Advanced Faults Management 489
Support Objects
The support objects classes defined in Figure 3 (a) represent objects needed for the
purpose of test and performance management. They do not represent real resources.
Co ntac tIn fo
S c hedule S es s ion
O bjec tInfo
Te stS es s ion
M onitoringS es s ion S t ate
1+
S tatus
Tes tS c hedule reques ted_for Tes tO bjec t
1+
M onitoringS c hedule reques ted_for P erform anc eM eas ures XMLP ar s er
( a) (b)
Support Object MBean: This class defines an abstract support object containing
common information needed for test and performance management purpose.
Monitoring Schedule MBean: This is a Support Object that contains monitoring
schedule data. It is used to keep information such as Operation State, Availability
Status of the resources on which monitoring activities are scheduled. It is used to
notify available performance measurements, monitoring test results to pre-registered
users. Indeed, a user may be granted passive monitoring of ongoing tests scheduled
by other users. These grants are configured in the monitoring schedule.
Testing Schedule MBean: This is a Support Object that contains tests scheduling
information. It contains data such as start time, stop time, scheduling status, used
AOs, and tested MOTs. At a given time two conflicting schedules may be requested
for the same MOT or AO. It is the role of the manager and agents to resolve the
conflicts by either rejecting the test request or proposing an alternative available time
490 Session Thirteen Fault Management I 490
interval. It is also the test managers and agents responsibility to reject further
schedules when testing resources reach their maximum capacity.
The remaining Support Objects illustrated in Figure 3 (a) are not covered here. They
are part of other JFMX packages (Manager and Agent layer). These support objects
are Session, Test Session, and Monitoring Session. The later are respectively defined
as aggregation of Test Objects and Performance Measurements. Each Test Object
(respectively Performance Measurement) is associated with a predefined Test
Schedule MBean (respectively Monitoring Schedule MBean) indicating the time at
which it should start, the expected termination time and other relevant information.
Utilities Objects
Several utility classes are defined in JFMX and used by the “SystemUnderTest”
package. The utility classes described below are depicted in Figure 3 (b).
UserInfo MBean: This class defines information on tests and monitoring services
subscribers. It contains authentication data such as login and password and carry
detailed information related to user accounts (name, group, and category), and
number of ongoing tests/monitoring activities initiated by the user. Complete user
contact information is defined as an aggregated class (ContactInfo). UserInfo MBean
is used to page or send e-mail to the user at the occurrence of a fault, when critical
test results are available, or when diagnostic agents require help to complete a task.
This MBean is able to prompt the user on a web interface, paint an applet or a dialog
window, and ask for helps and information updates.
ObjectInfo MBean: This class defines a reference to a managed object or to a
support object. It is used to store information on objects defined in the JFMX
package. It is generally used to reference objects in a relation or in a list.
Other utility classes are defined and used in JFMX. These definitions cover
Managed Object and Support Objects State/Status, and also XML configuration file
parsers. The JFMX core package defines Sate/Status attributes that are used to detect
real resources manageable behaviors relevant for fault management. The state
characteristics define current behavioral information on the resource carried by
attributes such as Operational, Administrative, Usage or User defined State. Status
characterizes continual behaviors like Connectivity (bandwidth sharing), Service
(Quality Of Service), Synchronization (accurate view of the real resource), or a User
defined Status. Associated Object, Managed Object Under Test and Manageable
Components inherit the basic State/Status properties of their parent Managed Object.
Additional status characteristics are defined to track diagnostic test and monitoring
activities in MORTs (Testing/Monitoring Status), AOs (Testing/monitoring Status),
and Support Objects (Schedule, Session, and Test Object Availability Status).
Manageable Components are defined with two useful properties that allow localizing
and measuring the impact of a faulty component in the MORT: “Location in MORT”
and “Health Status”.
The remaining of the paper focuses only on the use of JFMX, specifically that of
a reduced set of MBeans defined in the “SystemUnderTest” package to model and
instrument real manageable systems.
491 Java API for Advanced Faults Management 491
Manager Agent
Java
Middle Tier
Monitor
Client TC AO Schedule
S T TP
HTML A TC A MO
Server Orb-1 MO
Applet XML R Controller R
TC R TP Test
/HTTP R MORT
Schedule
MC MC MC
Other MBeans MBeans
Client
Orb-2
Client Tier
Test Access
Managed System Tier
Server
MANAGED
RESOURCES
UNDER TEST
W eb B row ser
JF M X A ccessServer M ORT
M ORT
HTM L ADAPTOR
M beans S erver
RTR
MC MC MC
W eb B row ser
HTTP MO
T est S chedu le
over T C P IP AO M on ito r S ch ed ule
MO T est S chedu le
W eb B row ser
AO MO
MO
MO
PR O X Y PR O X Y
Step 4: Creation of System Under Test scenario: the last step proceeds with
administrative tasks by using the interface provided by the HTML Adapter (or any
similar service in a customized MBeans Server). An HTML adapter is created when
the BaseAgent is started in step 3. This can be used as a web interface to create,
register and remove MBeans instances. When the MBeans needed to run the Test
Server scenario are successfully created, the user can then browse the MBeans by
defining a selection criteria (filtering scope), view each MBean attribute, invoke
MBeans test and monitoring operations, and experiment with the MBeans. The
experimentation consist to get and set MBeans attributes, perform operations on
these MBeans (e.g., testing and collection of monitoring data), create new instances
of MBeans, register as event listener and receive notifications generated by the
MBeans.
Host B
RMI/CORBA Managed System
Objects/Agents MORT
Factory AO
MC MC MC
Mbeans Server
Mobile moveTO
Test Schedule
Test Agent Monitor Schedule
Test Schedule Mobile Monitor Schedule
Voyager:9000
AO
Test Agent Test Schedule
AO MO Test Schedule
MO MO Voyager:8000
MO
MO MO
We used the previous dynamic features to enhance the traditional RPC based
implementations presented in the previous sections. In particular, we implemented
the Test and Monitoring Access Server with Mobile Agents [4, 9, 10] using Voyager
[5, 13] and JFMX [6]. In Voyager any serializable object can be easily moved
between programs at runtime as illustrated in the Figure 6. A proxy mechanism is
used to forward a message sent from an object's old location. The proxy is
automatically updated with the new location and messages are resent. Mobile
autonomous agents that move themselves between programs and continue to execute
upon arrival are easily created using Voyager facet mechanism.
The steps involved in the full Mobile Agent based implementation of the generic
scenario presented in section 4.1 are as follow:
Step 1: Definition and Implementation of Test/Monitoring Access Server: one of the
RPC implementations (i.e., JFMX, RMI, CORBA, or Voyager) can be used. The
Test Access Server should be started on Host A.
Step 2: Implementation of a mobile Object/Agent: an object that will be downloaded
the nearest possible to the Access Server implemented in step 1 should be
implemented with test/monitoring performer capability. With the current JFMX, one
of the following test agents may be directly used: Associated Object, Remote Test
Resource, Test Performer, or Diagnostic/Monitoring Agent.
496 Session Thirteen Fault Management I 496
6 Conclusion
Based on the Java Management Extension (JMX), we have proposed a Fault
management API, the Java Fault Management Extension (JFMX). The API is
composed of three main packages mapped to the JMX architecture: Instrumentation
layer (jfmx.SystemUnderTest), Agent layer (jfmx.TestAgentServer), and Manager
layer (jfmx.DiagnosticTestsServer). The paper presented a simple test and monitoring
Client/Server scenario and discussed four implementations of this scenario based on
JMX/JFMX, RMI, CORBA and Voyager. The objective was to propose extensions
for Fault Management (JFMX), show the practical usefulness of some advanced and
dynamic features provided by JDMK/JMX, then combine these features with
mobility and agency using Voyager. The performance of the integrated alternative
revealed to be significantly better than that of basic RPC implementation with
Voyager, RMI, CORBA, JMX and JFMX.
Through these implementations, we showed how a manageable system can be
easily and rapidly instrumented using JFMX with a focus on testing and monitoring.
We also showed how to use Mobile Agents to test and monitor Managed Resources
instrumented in JFMX. Agency and mobility features are added at run-time. Neither
additional efforts, nor development delay were added, and the scenario was
successfully implemented with Mobile Agent mechanism without any change to the
RPC based implementations.
The new Java Fault Management Extension (JFMX) will facilitate the
automation of diagnostic tests, performance measurements and other fault
management functions implementation using a fully distributed environment. Using
Voyager objects/agents mobility and other dynamic features of JMX, the proposed
API enhances significantly existing development environments by providing
flexibility, scalability, efficiency, robustness, and lower operation cost.
7 References
[1] AdventNet, AdventNet SNMP Release 3.0, http://www.adventnet.com/
[2] M. Baldi, S. Gai and G.P. Pico, Exploiting Code Mobility in Decentralized and
Flexible Network Management, Proceedings of the First Intl. Workshop on
Mobile Agents, Berlin, Germany, April 1997.
[3] NicholasKassem, Designing Enterprise Applications with Java2 Platform,
Enterprise Edition. Addition Wesley, June 2000.
[4] M. El-Darieby, A. Bieszczad, Intelligent Mobile Agent: Toward Network Fault
Management Automation, in Integrated Network Management VI, Distributed
Management for the Networked Millenium, Boston, USA, May 1999.
[5] Graham Glass, Reducing Development Effort using ObjectSpace Orb, CTO
ObjectSpace, 1999.
[6] Guiagoussou Mahamat, Michel Kadoch, Java Fault Management Extension
(JFMX), Technical Report, June 2000.
[7] ITU-T Recommendation X.745, Diagnostic and Confidence Tests Categories,
Geneva 1992.
498 Session Thirteen Fault Management I 498