This is a C# based application and service you can use to monitor remote computers.
I run BOINC, a cancer research grid run by IBM, on eight of my computers. You can see more information here World Community Grid. My team (my cousin Fabbio Arrizza in Italy and me) are #776 out of 482,967 members running on 1,380,381 computers worldwide.
My computers run 24x7, except when Microsoft Windows Update does an update and automatically reboots the machine. The machine shuts down and the calculations stop.
An additional problem is these computers do not have a monitor and keyboard attached and it is a major pain to use Remote Desktop Connection for more than one or two computers at a time. I wrote jMonitor to use as a dashboard. The idea is that from a single GUI application, you can see if a program is running on a set of remote computers.
The application jMonitor is run on your local machine to check what is happening on the remote machines. jMonitor communicates over a UDP socket to send a request to the remote computer in the form of a text line. The text has the name of the DLL to load and the parameters to send to the Run() function defined in the DLL.
jMonitorService receives the request, loads the DLL into a C# AppDomain, executes Run(), gets the result, unloads the DLL and sends the result back to jMonitor.
jMonitor invokes the DLL routine CheckResponse() to find out if the request succeeded. It then colors the entry for that computer Green if it succeeded. If it failed, the entry is colored Orange. If it located the machine but there was a problem with the response, it colors the entry Yellow. If it could not communicate with the machine at all, it colors the entry Red.
This screenshot shows the main screen with nine computers on it. The eight computers that have BOINC running on it, show up as green. The ninth "John1" is a linux box and is not currently running BOINC and therefore shows up as yellow.
The DLL ProcessCheck uses the C# Process.GetProcesses() function to get a list of running processes and to determine if any of their names match the incoming parameter.
The system is extensible. Add another DLL with Run() and CheckResponse() defined. Add entries in the configuration XML file that name the DLL and the parameters to send and jMonitor will automatically use it to check that computer.
This screen shot shows the configuration for computer john6. In this case, it is the same computer
that is running jMonitor and so the IP address is localhost (127.0.0.1). It uses port 5000 and
will search for two sets of processes, those starting with "boinc" and those starting with
"rysnc". (I use rsync/rsyncd for backing up my machines.) The checkbox UseIPAddress is useful when
the host name resolution does not work (e.g. on older windows machines from WinXP). Checking this
box will force the IP address to be used.
| Contact me about content on this page using john_web-at-arrizza-dot-com |
| For Web Master or site problems contact: webadmin-at-arrizza-dot-com |
| Copyright John Arrizza (c) 2001-2010 |