site monitor - case study: vizzavi

home | software | site monitor | vizzavi case study

My friend Mel used to work for a company called Vizzavi in London, on the Strand (no longer trading). The company provides a multi-device-access information portal. Mel's role involved rostered 24x7 support of the production environment.

I volunteered to develop this application to provide:

  1. A degree of real-time monitoring
  2. Performance logging
  3. An audible alarm should the site have problems

Note that this application simulates a web-browser to do this. No inside knowledge of Vizzavi's application architecture is needed or used. The application I've developed could be used for almost any website.

I've put together a sample analysis report of logged data.

About the app

The application, written entirely in Java, repeatedly simulates a user logging in, checking their email, then logging out. It has been tested on JDK 1.3.1 and 1.4.0 under WinXP, Win2000 and Solaris.

The code has been implemented in a generic fashion, making it very simple to reconfigure and operate against another site with different services and session management tactics. Let me know if you have a site you'd like to test.

Starting the app

To get the application started, copy viztest.jar to your local machine and from a command prompt type:

java -jar viztest.jar

Under Win2000 & WinXP, it's possible to double-click the file in explorer. On some machines (for example those with WinZip installed), you may need to right click, select 'Open With >' and choose 'javaw'.

[the login dialog]

The user must provide login details for a valid account at www.vizzavi.co.uk. Credentials are not saved to the local machine.

['would you like to log data?' dialog]

Once these credentials are supplied, the user is asked whether performance data is to be logged. Logging can be enabled or disabled at any time via the menu bar.

[main execution window]

Let the program run for a while, and you'll see the above chart. The different data series represent the different steps in a sequence (Login, Check mail, Logout). Since the lines show how long it takes to perform a task on Vizzavi's servers, smaller numbers are better. Note that these values indicate the time taken to deliver web pages to the machine on which you are running the application. You can expect longer times on a 56K modem than on ADSL, and longer times in Australia than in Europe.

The current state is shown at the bottom of the window. Cookie is the value assigned via HTTP cookies, and is used by Vizzavi's web mail application. ResinId is the string used for session management via URL re-writing. The current stage in the sequence is shown (here, it is 'Check Mail'). The colour of which the stage's name corresponds to the line on the chart. Finally, the status of the operation is also shown (either Running, Paused of FAULT).

[the status menu]

The app can be paused and resumed using the Status menu. The current status is always displayed in the bottom right corner of the main window.

The Log File

# Log file for Vizzavi Site Test Application # Program by Drew Noakes 2002 Time,Login,Check Mail,Logout 11/04/2002 13:27:15,6099,1542,651 11/04/2002 13:27:20,2714,1782,851 11/04/2002 13:27:27,2664,2924,691 11/04/2002 13:27:33,2644,2374,611

The time taken to complete each step in the sequence is logged in in a CSV format to the specified file when logging is enabled (see above). The timestamp format (dd/MM/yyyy HH:mm:ss) is easily parsed by MS Excel. All time values are in milliseconds.

Error Reporting

In the instance of an error in communication with a Vizzavi server (such as a network timeout, connection refused or premature EOF), an alarm can be raised. The details of this error are currently displayed on the console (via System.err).

[the file menu]

As can be seen, the file menu allows the setting of an audible alarm in the instance of a networking error. The alarm will continue to sound for as long as the network error persists. The audio file played is bundled in the JAR file and can be changed if the JAR is unzipped.

The Graphics

[a small version of the main execution window]

The chart class is an extension of JPanel of mine. It expands gracefully, and y-axis markers are chosen in such a way that the screen is not cluttered.

[a large version of the main execution window]

The chart uses a special implementation of Graphics that I've created to draw smooth, anti-aliased lines. The implementation uses my variation on the well-known Wu algorithm. The class, called SmoothGraphics can be used with alpha blending (slower but nicer), or fixed-background-colour blending (shown).


[about the application]