Автор блога Digital Inspirations Амид Агарвал (Amit Agarwal) опубликовал скрипт для Google Docs, который опрашивает статус сайта и заносит ответ в ячейку таблицы. Таким образом, можно сделать сервис мониторинга своими руками. Google Docs позволяет запускать скрипт с минутным интервалом и получать уведомления на email.
Инструкция такая: скопируйте себе этот документ, укажите URL для мониторинга в ячейке E3 и свой почтовый адрес в ячейке E5, затем установите минутный триггер на выполнение скрипта в меню Tools → Script Editor → Resources → Current Script’s Triggers.
При попытке сохранить триггер появится большое красное предупреждение с запросом на авторизацию.
/** 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);
}
Автор: alizar