Блог

Мониторинг доступности сайта

Каждому владельцу сайта важно быть уверенным, что в данный момент его онлайн ресурс доступен и нормально работает. Ну, а если, вдруг, случится проблема, то владелец сайта должен узнать о ней раньше всех остальных.

Есть огромное число платных и условно бесплатных сервисов, которые готовы оказать услугу по круглосуточному мониторингу веб ресурсов. И, в случае их недоступности, немедленно проинформировать об этом заинтересованную сторону.

Однако, есть очень простой способ запустить эту проверку самому, в удобном для себя режиме и совершенно бесплатно.

Идея проста: используя Google Apps Script мы отправляем запрос на указанный url и анализируем код ответа. Если код ответа равен 200 - ничего не предпринимает. Ну, а если нет - отправляем на свой емейл сообщение об ошибке.

Скрипт, реализующий эту задачу, находится ниже:

function locator() {
  let sites = ['https://it4each.com/', 
               ];

  let myEmail = YourEmail;
  let subject = "Site not working!!!";
  let errors = [];
  
  // request sending and processing loop
  for (const site of sites) {
    try {
      let response = UrlFetchApp.fetch(site);
      if (response.getResponseCode() != 200 ) errors.push(site);
    } catch (e) {
      let error_messege = e.name + ': for website ' + site + '\n';
      console.error(error_messege);
      errors.push(site)
    };
  };

  // send email
  if (errors.length > 0) {
    let message = "";
    for (let error of errors) {
      message += 'Website ' + error + " doesn't working!\n";
    };
    message += '\n' + 'Remaining Daily Quota: ' + MailApp.getRemainingDailyQuota();

    MailApp.sendEmail(myEmail, subject, message)
  };
}

За работу сайтов наблюдает функция locator(). Предварительно, в эту функцию должны быть переданы следующие исходные данные:

  • Список сайтов sites;
  • Адрес почты, куда следует отправлять сообщение об ошибке myEmail;
  • Тему (заголовок) электронного сообщения subject.

Далее идёт цикл отправки и обработки запросов. Это делается с помощью стандартного метода fetch(url) класса UrlFetchApp.

Если ресурс в принципе доступен, но его код ответа изменился и более не равен 200, то имя проблемного ресурса добавляется в список ошибок errors в той же строке.

Но если ресурс вообще недоступен, то UrlFetchApp.fetch(site) даст ошибки, которая может привести к остановке программы. Чтобы этого не произошло, вариант подобной ошибки мы обработаем через try - catch(e). И добавление "битого" сайта произойдёт на этот раз в блоке catch.

Обработка результата будет проиcходить ниже, в блоке send email.

Если список ошибок не пустой, то в цикле будет сформировано сообщение message, где будут перечислены все неработающие сайты. Дополнительно будет добавлена информация о том, сколько подобных сообщений ещё можно создать на сегодня, чтобы не превысить квоту: MailApp.getRemainingDailyQuota().

Скрипт готов. Но для того, чтобы осуществлять полноценный мониторинг, необходимо запускать этот скрипт регулярно и круглосуточно. Помочь нам в этом сможет установка триггера.

Узнать о том, как создать и настроить триггер, а также получить дополнительную информация о работе данного скрипта, вы сможете из этого видео:

Читать дальше >>

Список тэгов

    Apps Script      Arrays Java Script      asynchronous code      asyncio      coroutine      Django      Dropdown List      Drop Shipping      Exceptions      GitHub      Google API      Google Apps Script      Google Docs      Google Drive      Google Sheets      multiprocessing      Parsing      Python      regex      Scraping      ssh      Test Driven Development (TDD)      threading      website monitoring      zip