Как специалист по обслуживанию веб-сайта, вы, вероятно, захотите узнать, когда веб-сайт не работает, прежде чем любой пользователь. Некоторые инструменты, такие как Pingdom или Uptime Robot, могут помочь вам в этом, но их бесплатные планы включают только несколько функций с ограниченным использованием.

Вы можете создать свой собственный модульный сервис, который может выполнять ту же работу и получать уведомление всякий раз, когда один из ваших веб-сайтов выходит из строя, 💯% бесплатно.
Все, что вам нужно, это:
* Raspberry Pi (или любой другой чип или компьютер, который может работать круглосуточно и без выходных)
* Начальные знания NodeJS
* Учетная запись Bugsnag и учетные данные API (щелкните здесь, чтобы перейти к руководству)
* Немного кофе ☕️

Буду очень признателен, если вы назовете проект «Шури», как и я. Вы узнаете, почему, в конце этой статьи.

Шаг 1. Создайте проект

В Linux или Mac OS откройте консоль и воспроизведите эти шаги, чтобы создать проект.

Затем установите зависимости:

Шаг 2. Создайте index.js

Создайте index.js в папке проекта с кодом выше.

VSCode используется здесь как редактор кода, но вы также можете использовать Atom, Sublime Text, NotePad, Vim или что угодно.

index.js - это главный файл проекта. Он отвечает за рекурсивную загрузку веб-сайтов каждые fetchInterval миллисекунды. Каждый раз, когда он обнаруживает ошибку, он вызывает метод handle из модуля Bugsnag. Позже вы можете добавить другие модули и вызывать их отсюда.

Шаг 3. Создайте data / urls.json

Создайте папку data и файл urls.json внутри нее. Затем добавьте массив со списком всех URL-адресов веб-сайтов, которые вы хотите отслеживать.

Шаг 4: Создайте data / accept.json

Создайте файл в папке data, которую вы создали на предыдущем шаге, а затем создайте файл accept.json под ней.

Иногда веб-сайт, который вы загружаете, находится просто в режиме обслуживания или в другом состоянии, и вы не хотите вести журнал только потому, что возвращенный код состояния не равен 200, как ожидалось.

В accept.json вы можете создать список веб-сайтов, для которых вы можете принимать определенные коды статуса, например 503 для режима обслуживания.
Оставьте json пустым с помощью { }, если вы не хотите добавлять какой-либо приемлемый статус код. Код состояния 200 будет использоваться по умолчанию для URL-адресов в data/urls.json.

Шаг 5. Создайте модули / bugsnag.js

Теперь создайте папку modules, затем добавьте файл js с именем bugsnag.js.

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

По сути, этот модуль просто отправляет подробную ошибку каждый раз, когда служба не может правильно получить URL-адрес. Bugsnag отправит вам электронное письмо только в случае новых ошибок. Таким образом, если веб-сайт не работает в течение 45 минут, вы не будете получать уведомление по электронной почте каждую минуту. Не беспокойтесь об этом 😏.

Если вы хотите создать новый модуль, просто создайте еще один файл js в папке модулей, запросите его из index.js и вызовите его handle статический метод.

Шаг 6. Создайте credentials.json

Создайте файл credentials.json в корневой папке проекта.

Как только вы создадите этот файл, получите свой ключ api bugsnag и вставьте его между пустыми кавычками.

Шаг 7: конфигурация PM2

PM2 - это менеджер процессов для Node.JS. В нашем контексте нам это нужно, чтобы гарантировать, что наша служба работает с нулевым временем простоя (если служба, которая проверяет, не работает ли веб-сайт, выйдет из строя, это будет очень проблематично 😬).

Установить очень просто. Вам просто нужно запустить эту команду:

После установки pm2 вам нужно будет добавить файл конфигурации для pm2:

Заключение

Вы можете протестировать свой код, просто выполнив эту команду:

Браво! Оно работает! 🙈

Поскольку служба по сути является рекурсивной функцией, она не остановится сама по себе. Чтобы остановить это, просто выполните ctrl + C в той же консоли.

Вы можете запустить его с pm2 в качестве фонового процесса с помощью команды pm2 start ecosystem.config.json, а затем остановить его с помощью команды pm2 stop ecosystem.config.json.

Рекомендуется использовать pm2, чтобы запустить его на малине, чтобы вы были уверены, что он никогда не перестанет работать.

Бонус

Если вам интересно, почему я назвал его «Сюри»…

Я большой поклонник Marvel, я называю почти все свои проекты персонажами или королевствами MCU. А в фильме «Черная пантера» Шури - принцесса; крутая чернокожая техническая девушка, защищавшая королевство Ваканда. Она использовала свои технические навыки для выполнения своей работы и предупреждала Т'чаллу (также известного как Черная пантера) каждый раз, когда возникала проблема или угроза, которую он должен был исправить, чтобы он заранее знал, что делать.

Такое название для проекта - дань уважения всем женщинам, занимающимся STEM, во всем мире. Вы молодцы!
Все, что могут сделать мужчины… Остальное ты знаешь.