LupsMON 0.2 (L3DGEWorld Uninterruptible Power Supply Monitoring) demonstrates the use of combining
L3DGEWorld with the Simple Network Monitoring Protocol (SNMP) to provide near real-time
visualisation of the condition of a number of Uninterruptible Power Supply (UPS) devices across
an enterprise network. LupsMON was initially designed for Swinburne University's Information Technology
Services Division to allow them to monitor all their SNMP enabled UPS devices across its five
main campuses. The UPS devices are represented within an interactive 3D environment by individual
entities (which are represented by a star model) floating in the 3D space. Each entity is uniquely
animated to represent different UPS conditions such as output load, battery time remaining,
and power source. In a typical scenario, a LupsMON server would provide the virtual world into which
a LupsMON client would connect to and view the condition of all the SNMP enabled UPS devices at one
time. Multiple LupsMON clients could simultaneously connect to a LupsMON server and independently move
around the virtual world.
LupsMON 0.2 is based around the LCMON 1.1
package, which is similar tool used to monitor and visualize the individual nodes on the
Swinburne's supercomputer cluster. At
the core of both LupsMON and LCMON is
L3DGEWorld, a software package
which is being developed as a network monitoring and control application based on
Open Arena (a game built on the GPL'd Quake III Arena engine).
LupsMON demonstrates how L3DGEWorld may be more broadly utilised to create interactive 3D virtual
worlds within which arbitrary real-time state information is represented.
Building on Open
Arena means that LupsMON (as well as L3DGEWorld and LCMON)
are easy to install (and rebuild if desired) under Windows, Mac OSX, FreeBSD and Linux.
The following screenshots capture the view seen by a single user after logging into a
LupsMON 0.2 server's virtual environment. When the user first logs into the
LupsMON server, they are placed inside the 3D world, floating above a series of five platforms.
Each platform logically represents each of the five different geographic locations of
Swinburne's five campuses it has across Victoria. Floating slightly above each platform is a cluster
of stars; each representing the individual UPS devices. Figure 1 shows a screenshot of LupsMON when a
user first logs in the server. Figure 2 shows a screenshot of LupsMON user shooting a entity to
retrieve more detailed information on the UPS device.
Different types of conditions existing on each UPS device, causes the correlating entities in
the 3D world to change their physical behaviour and appearance. An entity will change colour as
a function of its current power source and connectivity status. The spin rate will change in
relation to its current percentage output load. Its scale/size represents the remaining battery time.
And finally, if any critical errors or alarms occur, this will cause the entities to bounce on the spot,
brining attention of the problem to the user. If a user wants more detailed information on the
current condition of a UPS, if for instance an alarm has occurred, the user can 'shoot' the entity
with their gun. This will bring up a dialog box which will display the IP Address/hostname, the
device's location, the current power source, the output load as a percentage, how many minutes
the battery has remaining, and if there is an alarm present, the ID and name of the
most recent alarm and when it last occurred.
Figure 1: Viewing all UPS devices across Swinburne's five campuses
Figure 2: Snapshot of a user shooting an entity to retrieve more detailed information
As illustrated in Figure 3, the major components of a LupsMON 0.2 system are:
LupsMON Server
An instance of L3DGEWorld 2.2 server running a specific 'map' to represent the LupsMON 0.2 virtual world.
snmpPOLL daemon 0.2 - A utility which sends out
SNMP 'get' and 'getnext' requests to the UPS devices
using a set of OIDs to retrieve their current condition information.
snmpPOLL utilizing the Net-SNMP package
and API to form and interpret the SNMP packets used to communicate with
the UPS devices. snmpPOLL then parses the data obtained from the UPS devices and
transmits the relevant metrics to the L3DGEWorld/LupsMON server.
LupsMON Client
An instance of L3DGEWorld 2.2 client, allow users to interact with the LupsMON virtual world.
As of Feburary 2008, Swinburne's ITS division currently uses the LupsMON
package as a means to monitor the current condition of all Swinburne's UPS devices.
Swinburne's ITS runs the snmpPOLL.sh script is looped and executed every 30 seconds in order to send SNMP 'get requests'
to the UPS devices. (step 1). The state and condition of all UPS devices are sent back as SNMP
responses (step 2), which snmpPOLL then parses (step 3) to extract and format
relevant data (such as output load and power source). snmpPOLL then uses a
generalised interface to the L3DGEWorld 2.2 engine to update the visual characteristics of the entities/stars
which represent the UPS devices in the virtual world (step 4).
Multiple LupsMON clients running on different platforms may connect to the LupsMON
server to view the condition of the UPS devices (step 5).
Figure 3: Input/Output Diagram
For people familiar with Quake III Arena, LupsMON is essentially a
custom map running on a modified Quake III Arena game engine. The
client and dedicated server executables have both been modified to
enable L3DGEWorld 2.2 to communicate with external daemons. As with a
normal Quake III Arena game, one or more clients may be connected to a
single server, each one rendering a separately controlled view of the
virtual environment. Clients may connect and disconnect from the server at any time
without disrupting the server's virtual environment, and may do so from
where ever there is UDP/IP connectivity to the LupsMON Server.
LupsMON 0.2 may be used to monitor other UPS devices (or even
entirely different SNMP enabled devices) by modifying snmpPOLL and optionally
redesigning the Quake III Arena 'map' used
to represent the virtual environment shown in Figures 1 and 2.
LupsMON 0.2's underlying L3DGEWorld 2.2 core (both client and server
sides) has been verified to run on FreeBSD 6.2, Mac OS X 10.4.9, Linux
and Windows XP Platforms (with the addition of cygwin). snmpPOLL has only
been verified to run on
SUSE Linux Enterprise Desktop 10 (SLED 10)
(although we believe it should be portable to other platforms).
LupsMON Client Requirements:
Video card supporting OpenGL acceleration.
libSDL and libOpenAL are required on FreeBSD and Linux.
Dedicated LCMON Server Requirements:
Linux
BASH (Bourne Again Shell)
Net-SNMP
Net-SNMP Developer Libraries
libSDL and libOpenAL are only required if you run a dedicated server using
the ioquake3 binaries. This is because they contain both the client and server
components of L3DGEWorld, the ioq3ded binaries contain only the server
component which does not require SDL or OpenAL.
LupsMON 0.2 is based on LCMON 1.0 which was developed by Carl Javier and is also based on L3DGEWorld 2.1.
LCMON was developed under the supervision of Grenville Armitage.
We appreciate the co-operation and input from Rick Upward and Lachlan McDonald from Information Technology Services at Swinburne University.
Thanks to the OpenArena
team - their free textures and artwork on the Quake III Arena code base
made it possible for us to distribute LupsMON as a complete package.