Каждому владельцу сайта важно быть уверенным, что в данный момент его онлайн ресурс доступен и нормально работает. Ну, а если, вдруг, случится проблема, то владелец сайта должен узнать о ней раньше всех остальных.
Есть огромное число платных и условно бесплатных сервисов, которые готовы оказать услугу по круглосуточному мониторингу веб ресурсов. И, в случае их недоступности, немедленно проинформировать об этом заинтересованную сторону.
Однако, есть очень простой способ запустить эту проверку самому, в удобном для себя режиме и совершенно бесплатно.
Идея проста: используя 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(). Предварительно, в эту функцию должны быть переданы следующие исходные данные:
Далее идёт цикл отправки и обработки запросов. Это делается с помощью стандартного метода fetch(url) класса UrlFetchApp.
Если ресурс в принципе доступен, но его код ответа изменился и более не равен 200, то имя проблемного ресурса добавляется в список ошибок errors в той же строке.
Но если ресурс вообще недоступен, то UrlFetchApp.fetch(site) даст ошибки, которая может привести к остановке программы. Чтобы этого не произошло, вариант подобной ошибки мы обработаем через try - catch(e). И добавление "битого" сайта произойдёт на этот раз в блоке catch.
Обработка результата будет проиcходить ниже, в блоке send email.
Если список ошибок не пустой, то в цикле будет сформировано сообщение message, где будут перечислены все неработающие сайты. Дополнительно будет добавлена информация о том, сколько подобных сообщений ещё можно создать на сегодня, чтобы не превысить квоту: MailApp.getRemainingDailyQuota().
Скрипт готов. Но для того, чтобы осуществлять полноценный мониторинг, необходимо запускать этот скрипт регулярно и круглосуточно. Помочь нам в этом сможет установка триггера.
Узнать о том, как создать и настроить триггер, а также получить дополнительную информация о работе данного скрипта, вы сможете из этого видео: