Distributed Real-Time Server Monitor

A picture would be worth a 1,000 words here.. This is a combination of several different technologies including native C++, Microsoft Visual C++, Java, MySQL, and PHP. The servers monitored provided limited status information of a session that typically lasted for 30 minutes or until completed.

The status server is written in Java and resides near the MySQL database, it maintains indexed caches of all the active sessions and keeps track of the participants. The status server makes updates to the MySQL database and manages the monitoring load distribution across one or more clients.

One or more client daemons written in C++ connect to the status server and get a working list of servers to monitor. It caches the current state and only sends updates to the status server if something changes or upon request. Client daemons can be started and stopped and the status server would automatically spread the load across the clients.

A website would access the database and display near real-time information on the status of the multiple servers. A Window's application could be downloaded that used a custom protocol handler to allow web-site users to connect to a server that looked interesting.

This application was developed over about three months including the web-site. Several hundred servers would be monitored but only about 300 would be active at any given time. The status server executed about 60 transactions a second and maintained a 10 day history of about 200 MB of session information.

I include the project details here just because it was a fun application to write, and had to be carefully written to provide the information in real-time without affecting the servers being monitored.