Occasionally - very occasionally - we may have a problem on our public facing web server that's hosted in some network operation centre or other. It could be a software glitch, or it could be an internet connectivity issue. And we need to know about it quickly!
The problem is than none of us might actually be using the server. I could be giving a
private course in Kent, Lisa may be in the office confirming a
public course booking, and Chris could be at home in
Calne. We have some excellent customers who have been known to alert us by email (thanks, customer Chris, the other day!) but really it should not be necessary for that - in fact, we should find the problem before it gets widely noticed.
I had a bit of a rant the other day about someone who's running a script that pulls a page off our site every five minutes to see if we're still running (
see here) but it also set me thinking that we could monitor our own server in a similar way - it's a very different matter to monitor yourself that to monitor someone else uninvited, after all! And we do have a second (backup) server.
So ... here's what we are now doing:
a) I have installed a PHP program that runs stand alone on our backup server which checks with our main server and emails all three of us "techies" if the main server does not respond. (
source code)
b) We have a regular times (crontab) job running 4 times an hour ... running this program. The crontab line is in the source code as a comment / example
And it can be that easy!
I have chosen to go one stage further - the page I am calling up on the public server is actually a status line generator, so that our backup server can do more that just say "live" or "dead" - it can also say "live but looking a bit sick" if it needs to. The status script is actually called up from within my
Ajax Demonstation too, and you can see the source code
here if you wish.
((As an extra, I should have our main server heartbeating our backup server in an equal and opposite arrangement so that we'll be notified if either one falls over))
(written 2009-01-16)
Associated topics are indexed under
H307 - PHP - Web2 and caching [3458] On this day ... one PHP script with three uses - (2011-09-26)
[3186] How to add a customised twitter feed to your site - (2011-02-27)
[3094] Setting your user_agent in PHP - telling back servers who you are - (2010-12-18)
[3029] PHP data sources - other web servers, large data flows, and the client (browser) - (2010-11-04)
[2545] Scraping content for your own page via PHP - (2009-12-21)
[2321] Uploading and Downloading files - changing names (Perl and PHP) - (2009-08-04)
[2196] New Example - cacheing results in PHP for faster loading - (2009-05-24)
[1926] Flash (client) to PHP (server) - example - (2008-12-06)
[1814] Javascript/HTML example, dynamic server monitor - (2008-09-28)
[1813] Ajax - going Asyncronous and what it means - (2008-09-28)
[1812] Starting Ajax - easy example of browser calling up server data - (2008-09-27)
[1733] memcached - overview, installation, example of use in PHP - (2008-08-02)
[1647] Exchange Rates - PHP with your prices in your users currency - (2008-05-19)
[1633] Changing a screen saver from a web page (PHP, Perl, OSX) - (2008-05-06)
A690 - Web Application Deployment - Clustering and load balancing [3339] Simplest ever proxy configuration? - (2011-06-28)
[3293] Distributing the server load - yet ensuring that each user return to the same system (Apache httpd and Tomcat) - (2011-05-18)
[2483] Clustering on Tomcat - (2009-10-30)
[2482] Load balancing with sticky sessions (httpd / Tomcat) - (2009-10-29)
[2059] Sharing the load between servers - httpd and Tomcat - (2009-02-28)
[1993] Load Balancing - Hardware or Software? - (2009-01-15)
[1771] More HowTo diagrams - MySQL, Tomcat and Java - (2008-08-24)
[1121] Sharing the load with Apache httpd and perhaps Tomcat - (2007-03-29)
[934] Clustering, load balancing, mod_rewrite and mod_proxy - (2006-11-21)
Some other Articles
How low can you sink?Text on a background imageTravelling to a course - station pickupsAdvise before my Apache / Tomcat courseAutomated server heartbeat and health checktomcat-users.xml; what a difference a space madeA good time to travelRules for a KingSpeaking all the languages