Architecture Overview

This chapter describes the overall software architecture of the Flightdeck-UI monitoring application components. The user interface aspects of Flightdeck-UI are covered in the previous chapter and, more generally, in the Flightdeck-UI whitepaper [Bel03].

The most common approach is to build a separate client-server infrastructure to support the monitoring operation. Servers gather the data, and clients receive it for display to the operators. the Flightdeck-UI monitoring subsystem avoids this approach, in favor of using the existing infrastructure to carry the monitoring data.

The current version of Flightdeck-UI consists of a library (version 0.1.5) and the Multi-Variable Monitor (MVM) application (version 0.1.2); both written in Python. The latter includes a graphical editor for creating control files to configure the built-in monitoring client. MVM uses plug-in modules to gather data. Each Flightdeck-UI element in an MVM panel can use a different module; this is configured via the editor.

MVM expects a getoutput function in each plug-in module. To this function, it passes a command (a string), and then filters the output through a regular and a numerical expression to arrive at the final monitored result. The standard Python commands module can be used directly by MVM.

To create a flexible monitoring client, an MVM plug-in module (called MVMurllibCmd) that uses the standard urllib is used. As MVM samples, each retrieved URL is passed through a regular expression filter, and a numerical expression is applied to the result. This fits well into the overall MVM architecture, with the URL playing the role of the command name.

The results of the above approach is that many monitoring tasks are immediately possible. Any value of interest that can be accessed from any website around the world can be monitored by MVM in minutes (knowledge of regular expressions is required, but otherwise the configuration is extremely simple through the MVM graphical editor). As an example, MVM 0.1.2 includes a pair of control files to monitor weather conditions via the NOAA website.

To provide more information for MVM to monitor, it is useful to create a program to generate digests of server logs and other information. This work is planned as the next stage of the Flightdeck-UI monitoring project (see Project Stages). The digest generator can be run by a simple cron job, triggered from a CGI script, etc. If a web server is being monitored, the resulting digest can be served directly as plain text, or secured by purely conventional means. The following section further describes the reason for the Flightdeck-UI monitor design.

Why Do It This Way?

The simple solution behind Flightdeck-UI monitoring has a large number of advantages over the more typical separate-server approach. These are described in the following list.