JPinTO wrote:As for the complaints about the fahlog errors by Stanford, does anyone care to shed some light on the specifics so that I am cognizant of them? I don't think I'll even use the unitinfo.txt file at all and just stick to the logfiles.
A couple of things need to be mentioned:
- Each value you pull out of the logs or derive from it needs a bounds check. If it falls out of bounds then do not use it, create an estimate or warn about the possibly false value. For example, ETAs should not point into the past, percentages should range between 0 and 100, check for zeros before you do divisions, etc.
- Make your application rely on as little as possible, just like the FAH clients. FahMon requires the user to set the timezone while the clients work fine without it - this is unnecessary. Avoid user interactions with your application, pull the information automatically from the OS or create estimates. The last thing one wants is to care about 30 clients + 1 monitoring application.
- Use as little resources as possible. You do not want to steal too much time from the OS while you may be running a client on the same machine as your application. For instance, do not monitor anything while your apps window is not visible (minimized) and pick up monitoring as soon as it becomes visible. Do not iterate every 10 seconds over the log files when you could just poll for a file change event. (I know, network file systems are tricky however.)
- Have an option to send out an email in case a client is estimated to miss its deadlines or anything else bad has occurred.
And you can take this further:
Build a client/server architecture with a simple daemon/service on the client machines and without relying on network file systems. Have the user setup up the monitoring daemon/service instead of a network file system. Implement support for SNMP, ... And there is more than monitoring. There is control, too. Implement control functions for setting affinity locks and priorities with day&night time / weekend schedules, ... Implement a web proxy so one can run the FAH clients through your monitoring application and to monitor network events and traffic.
Last but not least, do not implement everything people tell you to but only what you would like to see, too.
I am looking forward to what you can do and do not forget to post your progress in here