Как специалист по обслуживанию веб-сайта, вы, вероятно, захотите узнать, когда веб-сайт не работает, прежде чем любой пользователь. Некоторые инструменты, такие как 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, во всем мире. Вы молодцы!
Все, что могут сделать мужчины… Остальное ты знаешь.