Основное требование - не использовать готовых решений доя мониторинга сайтов.
Git репозиторий приветствуется.
Частичное решение задачи допускается.
На задачу даются одни сутки. Задача выдается в любое удобное для вас время и результат мы ждем на почту через сутки.
Нужно написать мониторинг, он должен следить за указанным ресурсом, и считать корректным ответ 200
В случае кода ответа отличного от корректного отправлять уведомление по смс или по электронной почте.
Плюсом будет возможность настройки.
Уведомления нужно отправлять:
- первое сообщение отправлять после 3х минут состояния ошибки
- второе после 10 минут
- третье после 50
- затем 100
- и 500 минут.
- Позже уведомлять не стоит.
- При выходе ресурса из некорретного состояния отправить сообщение о том, что ресурс восстановился
Реализация задания выполнена на чистом ruby без фреймворков, с минимальным набором gems в течении 24 часов с момента отправки
- ruby >= 2.0.0
- склонировать репозиторий
- запустить консоль в папке проекта
- установка гема для осуществления запросов и получения статуса сайта
gem install httparty
- установка гема для отправки почты
gem install pony
(требуется настройка в модуле Send, методе sending_errors_mail) - ввести команду ruby main.rb
- ввести название сайта (строго в указанном формате, пример https://www.artec3d.com/ru)
- обновление статуса сайта настроено ровно на 1 минуту
Так как приложение сделано за 24 часа, в дальнейшем можно перенести логику приложения на Rails, подключить базу данных для записи состояний сайтов, реализовать отправку сообщений через ActionMailer и ActionJob, отложенную отправку либо отправку через определенное время можно поручить gem Whenever. Очередь отправки и проверки доступности сайта реализовать через gem sidekiq.Так же при расширении логика приложения, необходимо выносить часть функционала в модульность:
– Хранилище
, где будет хранится история запросов.
– Отправка уведомлений
, который будет на основе данных из хранилища отправлять уведомления.
– Проверяльщик
– который будет пинговать сайты и возвращать результат.
– Основной цикл программы
.