CMS Features

Problem Specification

Original Problem

This is the original specification given to us when we started the project. The i-scream central monitoring system meets this specification, and aims to extend it further. This is, however, where it all began.

Centralised Machine Monitoring

The Computer Science department has a number of different machines running a variety of different operating systems. One of the tasks of the systems administrators is to make sure that the machines don't run out of resources. This involves watching processor loads, available disk space, swap space, etc.

It isn't practicle to monitor a large number of machines by logging on and running commands such as 'uptime' on the unix machines, or by using performance monitor for NT servers. Thus this project is to write monitoring software for each platform supported which reports resource usage back to one centralised location. System Administrators would then be able to monitor all machines from this centralised location.

Once this basic functionality is implemented it could usefully be expanded to include logging of resource usage to identify longterm trends/problems, alerter services which can directly contact sysadmins (or even the general public) to bring attention to problem areas. Ideally it should be possible to run multiple instances of the reporting tool (with all instances being updated in realtime) and to to be able to run the reporting tool as both as stand alone application and embeded in a web page.

This project will require you to write code for the unix and Win32 APIs using C and knowledge of how the underlying operating systems manage resources. It will also require some network/distributed systems code and a GUI front end for the reporting tool. It is important for students undertaking this project to understand the importance of writing efficient and small code as the end product will really be most useful when machines start run out of processing power/memory/disk.

John Cinnamond (email jc) whose idea this is, will provide technical support for the project.


Key Features of The System

  • A centrally stored, dynamically reloaded, system wide configuration system
  • A totally extendable monitoring system, nothing except the Host (which generates the data) and the Clients (which view it) know any details about the data being sent, allowing data to be modified without changes to the server architecture.
  • Central server and reporting tools all Java based for multi-platform portability
  • Distribution of core server components over CORBA to allow appropriate components to run independently and to allow new components to be written to conform with the CORBA interfaces.
  • Use of CORBA to create a hierarchical set of data entry points to the system allowing the system to handle event storms and remote office locations.
  • One location for all system messages, despite being distributed.
  • XML data protocol used to make data processing and analysing easily extendable
  • A stateless server which can be moved and restarted at will, while Hosts, Clients, and reporting tools are unaffected and simply reconnect when the server is available again.
  • Simple and open end protocols to allow easy extension and platform porting of Hosts and Clients.
  • Self monitoring, as all data queues within the system can be monitored and raise alerts to warn of event storms and impending failures (should any occur).
  • A variety of web based information displays based on Java/SQL reporting and PHP on-the-fly page generation to show the latest alerts and data
  • Large overhead monitor Helpdesk style displays for latest Alerting information

An Overview of the i-scream Central Monitoring System

The i-scream system monitors status and performance information obtained from machines feeding data into it and then displays this information in a variety of ways.

This data is obtained through the running of small applications on the reporting machines. These applications are known as "Hosts". The i-scream system provides a range of hosts which are designed to be small and lightweight in their configuration and operation. See the website and appropriate documentation to locate currently available Host applications. These hosts are simply told where to contact the server at which point they are totally autonomous. They are able to obtain configuration from the server, detect changes in their configuration, send data packets (via UDP) containing monitoring information, and send so called "Heartbeat" packets (via TCP) periodically to indicate to the server that they are still alive.

It is then fed into the i-scream server. The server then splits the data two ways. First it places the data in a database system, typically MySQL based, for later extraction and processing by the i-scream report generation tools. It then passes it onto to real-time "Clients" which handle the data as it enters the system. The system itself has an internal real-time client called the "Local Client" which has a series of Monitors running which can analyse the data. One of these Monitors also feeds the data off to a file repository, which is updated as new data comes in for each machine, this data is then read and displayed by the i-scream web services to provide a web interface to the data. The system also allows TCP connections by non-local clients (such as the i-scream supplied Conient), these applications provide a real-time view of the data as it flows through the system.

The final section of the system links the Local Client Monitors to an alerting system. These Monitors can be configured to detect changes in the data past threshold levels. When a threshold is breached an alert is raised. This alert is then escalated as the alert persists through four live levels, NOTICE, WARNING, CAUTION and CRITICAL. The alerting system keeps an eye on the level and when a certain level is reached, certain alerting mechanisms fire through whatever medium they are configured to send.