Recently I have been checking out a number of different solutions for monitoring remote servers and alerting or warning depending on certain metrics. For this I have looked at a number of different solutions including Server Density, Cloudkick, Cacti, Nagios and some others. Each of these has various advantages and disadvantages.Which I will give a very brief run down of below.
- iPhone Application
- Push Notifications for iPhone Application
- Easy to Deploy Agent
- Costs Per Server for Full Version
- Limited Services it can monitor.
- Incredibly easy to setup monitoring of multiple hosts if your with one of the supported providers. I was using vps.net when I tried them out and it worked very well.
- Very good metric monitoring.
- Very nice interface.
- Limited to monitoring of supported providers.
- Need to hand over API key for it to work.
- In my opinion incredibly expensive.
- SNMP Integration
- Great Interface
- Very good metric support
- Cost – Free
- Not Really a Remote Monitoring Solution as does not provide alerting. I know that it was never designed to be but definitely has potential to be expanded on.
- Highly Configurable
- Support for Custom Monitoring Scripts
- Great Alerting Configuration
- Cost – Free
- Complicated to configure even for basic monitoring
- Runs on single host meaning all network monitoring lost of host goes down.
Since none of the above solutions exactly suite my needs I have decided to produce my own monitoring solution. To do this I am going to take advantage of the fact that phpSysInfo provides the majority of the statistics that I wish to monitor and I already run it on most of my servers. phpSysInfo can supply its data in XML form this is that data I can use for monitoring.
So I plan to develop my own solution in Python to read the XML data from multiple remote hosts and then take a defined action if a rule is matched. Since I needed a name for this project I decided to call it SysInfoRM or System Information Remote Monitor.
Here is the basic feature plans for now
Initial Release Features for SysInfoRM
- Parsing of 1 – n XML from either phpSysInfo or pySysInfo (Since it can supply data in same XML format and should be good for remote monitoring of non web hosts).
- Ability to define monitoring rules and actions for when they are matched.
- Easy / Understandable Configuration.
- Heart Beat Monitoring of Script Itself. Basically run the script in two locations if the Primary fails the other should take over the monitoring.
- Can be run as a Daemon or as interactive script.
Future Planned Features for SysInfoRM
- Curses interface for viewing and configuration.
- Web interface for viewing and configuration.
I am hoping to have something working in the next couple of days just need to get my Python skills up to scratch. I am going to attempt to incorporate all the best bits from the other currently available monitoring tools and as few of the bad bits as possible. I should also mention I was inspired by and am drawing on another good monitoring script from the tomubuntu blog. Tom has done a really good job with this script and I suggest people check it out its a good simple script that can monitor Load Average, Memory and other stats; it can then alert using sSMTP.
That is all for now please check back soon I’ll be providing updates on the progress of SysInfoRM as I develop it and will post the SVN or Git Repos once I get one set up.