Как стать автором
Обновить

Мониторинг сайта с помощью Google Docs

Время на прочтение2 мин
Количество просмотров13K


Автор блога 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);
}
Теги:
Хабы:
+94
Комментарии32

Публикации