Most company owners use website / Internet monitoring services to track
the downtime and uptime of their sites / Internet.
These service offer free plans but you often have to upgrade for
unlimited email / SMS alerts or if you would like to monitor a large number of websites.
Good news is that you can now use Google Docs to monitor your website(s) and,
unlike the commercial services, Google imposes no restrictions. You can track
any number of websites with Google Docs and it will send email /text alerts in
case of any issues. In addition, this DIY website monitoring tool is absolutely free.
Here’s how you quickly configure Google Docs to monitor the
uptime /downtime of your website(s). This has to done just once and Google Docs
will continuously monitor all your sites in the background.
Let’s get started:
- Sign-in to your Google account and then click here to copy this Google sheet into your Google Drive. You may use your Google Apps account as well.
- Put your website URLs in cell B2 (comma separated) and your email address in cell B3. If you wish to be alerted by text messages, just replace No with Yes in cell B4.
- You’ll find a new Website Monitor menu in your Google Docs toolbar. Click Initialize and you’ll get a pop-up asking for authorization. Grant the necessary access.
- Go to the Website Monitor menu again and choose “Start” to begin the monitoring process. Close the Google Sheet.
That’s it. The Google Docs sheet will monitor your website
in the background at 5-minute intervals and will send alerts whenever it has
trouble accessing the website. If the issue is resolved, you’ll get another
notification saying “all’s well.”
The uptime and downtime times get logged in the same Google
Docs sheet so you can use that data to analyse the performance of your web
hosting company.
Internally, there’s a simple Google Script attached to the
Google Docs sheet that does the monitoring.
The script invokes itself every 5 minutes, with the magic of
Script Triggers, and then tries to fetch your website using URLFetchApp.fetch
(a Google function similar to wget or curl). If the HTTP response code is
anything other than 200, it indicates that there’s an issue with the underlying
website.
Google Apps Script can send email messages but the script
employs a workaround for sending text messages.
It creates a regular event in your Google Calendar but with
an SMS reminder - the event is set to
expire in 30 seconds and thus you get an instant text alert on your mobile. If
you aren’t getting text alerts on your phone, please ensure that your phone
number is associated with Google Calendar as detailed in this tutorial.
Google Apps Script:
/*
Website Monitor
===============
*/
function init() {
if (ScriptApp.getScriptTriggers().length == 0) {
// Set up a monitor that triggers every 5 minutes
ScriptApp.newTrigger("websiteMonitor")
.timeBased().everyMinutes(5).create();
}
}
function websiteMonitor()
{
var response, error, code, urls;
// The script can monitor multiple website URLs (comma separated)
urls = SpreadsheetApp.getActiveSheet().getRange("B2").getValue();
urls = urls.replace(/\s/g, "").split(",");
for (var i=0; i<urls.length; i++) {
var url = urls[i];
if (!ScriptProperties.getProperty(url)) {
ScriptProperties.setProperty(url, 200);
}
// Trying to connect to the website URL
try {
response = UrlFetchApp.fetch(url);
} catch(error) {
// If URLFetchApp fails, the site is probably down
updateLog(url, -1);
continue;
}
code = response.getResponseCode();
updateLog(url, code);
}
}
function updateLog(url, code) {
if (ScriptProperties.getProperty(url) == code)
return;
ScriptProperties.setProperty(url, code);
var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getLastRow() + 1;
var time = new Date();
var msg = "Down";
if (code == 200)
msg = "Up";
msg = "Website is " + msg + " " + url;
sheet.getRange(row,1).setValue(time);
sheet.getRange(row,2).setValue(msg);
// Send an email notification when the site status changes
var email = sheet.getRange("B3").getValue();
MailApp.sendEmail(email, msg, url);
var now = new Date(time.getTime() + 10000);
// Create an event in Google Calendar with an SMS reminder
if (sheet.getRange("B4").getValue().toLowerCase() == "yes")
CalendarApp.createEvent(msg, now, now).addSmsReminder(0);
}
if (ScriptApp.getScriptTriggers().length == 0) {
// Set up a monitor that triggers every 5 minutes
ScriptApp.newTrigger("websiteMonitor")
.timeBased().everyMinutes(5).create();
}
}
function websiteMonitor()
{
var response, error, code, urls;
// The script can monitor multiple website URLs (comma separated)
urls = SpreadsheetApp.getActiveSheet().getRange("B2").getValue();
urls = urls.replace(/\s/g, "").split(",");
for (var i=0; i<urls.length; i++) {
var url = urls[i];
if (!ScriptProperties.getProperty(url)) {
ScriptProperties.setProperty(url, 200);
}
// Trying to connect to the website URL
try {
response = UrlFetchApp.fetch(url);
} catch(error) {
// If URLFetchApp fails, the site is probably down
updateLog(url, -1);
continue;
}
code = response.getResponseCode();
updateLog(url, code);
}
}
function updateLog(url, code) {
if (ScriptProperties.getProperty(url) == code)
return;
ScriptProperties.setProperty(url, code);
var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getLastRow() + 1;
var time = new Date();
var msg = "Down";
if (code == 200)
msg = "Up";
msg = "Website is " + msg + " " + url;
sheet.getRange(row,1).setValue(time);
sheet.getRange(row,2).setValue(msg);
// Send an email notification when the site status changes
var email = sheet.getRange("B3").getValue();
MailApp.sendEmail(email, msg, url);
var now = new Date(time.getTime() + 10000);
// Create an event in Google Calendar with an SMS reminder
if (sheet.getRange("B4").getValue().toLowerCase() == "yes")
CalendarApp.createEvent(msg, now, now).addSmsReminder(0);
}
Reference:
1. Monitor your Website’s Uptime with Google Docs
No comments:
Post a Comment