Como ya hemos comentado algunas veces, llevamos tiempo monitorizando páginas web de nuestros clientes con diversos servicios online externos a nuestros servidores para conocer en todo momento la disponibilidad de los mismos.
El servicio online que usamos habitualmente es el de Pingdom (que es el que mejor nos ha funcionado y nos encanta), pero también hemos usado bastante Servermojo y en menor medida Site24x7, Siteuptime y Watchmouse.
Ahora hemos descubierto un script realizado en Google Docs por Digital Inspiration que nos permite monitorizar una página web con una hoja de cálculo.
La configuración es muy sencilla:
- Si estamos logueados con una cuenta de Google, hay que realizar una copia de la hoja de cálculo que se encuentra aquí.
- Introducimos la web a monitorizar en la celda E3 (hay que incluir el http://) y la dirección de email en la que se quieren recibir los avisos en la celda E5.
- Entramos en Herramientas / Editor de secuencia de comandos / Resources / All your triggers, Add a New Trigger. Lo configuramos como «Time-driven» con «Minutes timer» y establecemos los minutos que queramos que se compruebe el acceso a la web.
- Guardamos y Google Docs nos mostrará una advertencia de seguridad para que autoricemos esa tarea automatizada. La autorizamos y a partir de ese momento ya se monitoriza la URL introducida.
Cada vez que la web se caiga y vuelva a estar disponible, se nos enviará un email a la dirección configurada, además de guardarlo en la hoja de cálculo. Esto es muy práctico, sobre todo porque podemos establecer el intervalo de monitorización en 1 minuto, que en los servicios online suele ser de pago.
Estamos ahora mismo investigando las repercusiones que tenga esta monitorización sobre las visitas con Google Analytics, en principio no debería de tener influencia, porque no se ejecuta el código Javascript del seguimiento; pero vamos a comparar los logs del servidor con los datos de Google Analytics para estar seguros de que no nos falsifica los datos estadísticos. Os mantendremos informados.
El código que hace el seguimiento es el siguiente:
/** Monitor your Site’s Uptime **/
function isMySiteDown()
{
// Get the URL of the Website to monitor
var url = SpreadsheetApp.getActiveSheet().getRange(«E3»).getValue();
// HTTP Response Code of the last server request
if (!ScriptProperties.getProperty(«status»)) {
ScriptProperties.setProperty(«status», 200);
}
var response, error;
try {
// Fetch the web page using UrlFetchApp
response = UrlFetchApp.fetch(url);
} catch(error)
{
insertData(error, -1, «Website down»);
return;
}
var code = response.getResponseCode();
// code = 200 means the fetch request was successful
if (code == 200)
insertData(«Up», code, «Website up»);
else
insertData(response.getContent()[0], code, «Website down»);
}
function insertData(error, code, msg) {
// Ignore if the error message is logged already
if (ScriptProperties.getProperty(«status») == code)
return;
// Log the server error in a Google Sheet
var sheet = SpreadsheetApp.getActiveSheet();
var email = sheet.getRange(«E5»).getValue();
var row = sheet.getLastRow() + 1;
sheet.getRange(row,1).setValue(new Date());
sheet.getRange(row,2).setValue(error);
sheet.getRange(row,3).setValue(code);
// Send an email alert for the downtime
ScriptProperties.setProperty(«status», code);
MailApp.sendEmail(email, msg, error);
}
OJO: Cuatro días después de haber instalado este script en Google Docs de algunos dominios para ver si funcionaba se nos ha notificado que:
Parece ser que Google Docs ha eliminado todos estos documentos.
Por tanto olvidaros de monitorizar las webs con Google Docs, y utilizar uno de los servicios que enlazábamos en el post.
Pues Google Docs no había eliminado todos los documentos, ya que tenemos dominios en los cuales el seguimiento a fecha de hoy sigue funcionando (la mitad de las cuentas donde se instaló el seguimiento para probarlo).
Seguiremos informando.