Just a very quick update I have setup a Git Repository for my SysInfoRM project.
It can be found at http://github.com/mtdavidson/SysInfoRM/
Oversimplifying
Just a very quick update I have setup a Git Repository for my SysInfoRM project.
It can be found at http://github.com/mtdavidson/SysInfoRM/
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.
Server Density
The Good
- iPhone Application
- Push Notifications for iPhone Application
- Easy to Deploy Agent
The Bad
- Costs Per Server for Full Version
- Limited Services it can monitor.
Cloudkick
The Good
- 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.
The Bad
- Limited to monitoring of supported providers.
- Need to hand over API key for it to work.
- In my opinion incredibly expensive.
Cacti
The Good
- SNMP Integration
- Great Interface
- Very good metric support
- Cost – Free
The Bad
- 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.
Nagios
The Good
- Highly Configurable
- Support for Custom Monitoring Scripts
- Great Alerting Configuration
- Cost – Free
The Bad
- 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
Future Planned Features for SysInfoRM
Python Libraries
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.
Cacti is a front end to RRDTool, the purpose of which to provide an effective network graphing solution for monitoring devices within a Network. It can be used with SNMP to monitor various statistics about a device including but not limited to Load Average, Bandwidth, Disk Usage and Processes.
The following are the steps to install Cacti under Gentoo
USE="symlink mmx sse sse2 bash-completion vhosts xml sockets snmp"
sudo emerge apache php cacti webapp-config
Once completed if everything has installed correctly procede to the next step if you get an error saying “Could not read settings from webapp-config” I found the easiest way to solve this was to unmerege webapp-config and reinstalled it.
sudo etc-update
sudo webapp-config -I -h yourdomain.com -d cacti cacti 0.8.7e-r1
mysqladmin -p --user=root create cacti mysql -p --user=root cacti < /var/www/yourdomain.com/htdocs/cacti/cacti.sql # Remember to change this to reflect the path to your cacti install. mysql -p --user=root mysql GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'somepassword'; # Just a note I like to use apg to generate my passwords. flush privileges;
*/5 * * * * apache /usr/bin/php /var/www/yourdomain.com/htdocs/cacti/poller.php > /dev/null 2>&1
Thats all for now in the next post I will cover setting up net-snmpd on a host and then configuring Cacti to monitor it.