Aqua Phoenix

Title: NetMon (Network Monitor)
Short Description: NetMon monitors a series of machines for users, processes, and system boots.
Tools used: Java 1.2.2 (Swing), Perl
Platforms: Any Java and Perl compliant platform that supports process status via the UNIX command ps
Date: September 2000 - December 2000

NetMon is a graphical System Administration tool intended to monitor workstation usage and state. It was first used at the Gateway Lab, School of Engineering and Applied Science, Columbia University, a laboratory of Silicon Graphics workstations.

The criteria for monitoring are a list of selected processes that are running on each workstation, the number and IDs of users logged into every workstation, and a (remote) log of when workstations were rebooted/powered-off. The list of processes to be monitored is provided in a configuration file. Every line of this file defines a process by its name, its typical "ps -ef" output, and a graphical icon which is to be displayed in the NetMon frame.

The system is divided into 2 parts:

  1. a Perl script that runs on every monitored machine:
    • is invoked on start of the workstation (/etc/rc2.d/S99nmclient) with one or more IPs of the NetMon server
    • is invoked on boot/power-off of the workstation by trapping the TERM signal
    • communicates via a pre-defined port with the NetMonServer to signal that the machine is UP or DOWN
    • sends to the server a list of processes (ps -ef) upon request
    • keeps a list of NetMon servers that are allowed to contact the client
    • expands/collapses the list of NetMon servers, if a legitimate NetMon Server requests so
    • restarts itself if a legitimate NetMon server requests so

  2. a NetMon server that runs on one or more machines:
    • graphically displays all monitored machines
    • graphically displays a list of monitored processes for any machine
    • keeps a log for every machine with information on when reboots/power-offs/power-ons occured
    • is able to send a restart command to every client, which restarts the NetMon Client script
    • can be used to add additional NetMonServers to all clients
    • saves/loads lists of clients, including their position on the tabbed pane