{"id":14275,"url":"\/distributions\/14275\/click?bit=1&hash=bccbaeb320d3784aa2d1badbee38ca8d11406e8938daaca7e74be177682eb28b","title":"\u041d\u0430 \u0447\u0451\u043c \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u044b \u0430\u0432\u0442\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f72066c6-8459-501b-aea6-770cd3ac60a6"}

Я задолбался пропускать падения моих сервисов и написал HealthCheck-бота

Пишешь боту имя своего домена и бот проверяет его раз в минуту.

К идее создания бота я пришёл при запуске другого продукта для проверки резюме на английском -

В день запуска всё пошло не так😎

Ошибка #1

Большинство сервисов работали на одном сервере, а это

Запускал я довольно требовательный сервис к ресурсам - используется OCR (распознавание символов на pdf файле), алгоритм категоризации, нейронная сеть для определения насколько резюме соответствует профессии найденной по ключевым словам. В общем жирный сервис, который ест много ресурсов процессора и при превышении лимитов - он зависает намертво вместе с сервером.

Не кладите яйца в одну корзину

Ошибка #2

После запуска я не особо следил за сервисом, занимался своими делами.

В итоге проблему с виртуальной машиной, где крутятся все мои сервисы я заметил только по комментариям от пользователей на ProductHunt.

А завис не только сервис, а вообще всё!

Приходилось перезагружать сервер и поднимать все сервисы, чтобы они ожили. Спасибо боту @IsBotDownBot - я понимал когда падали мои боты😂

Кот из дома - мыши в пляс!

Ошибка #3

В сервисе не было ограничений на количество загрузок резюме - в итоге кто-то отчаянно пытался получить высокий балл от https://checkcv.info/ и загружал резюме около сотни раз, это нагружало сервер и тоже приводило к падению сервера.

Берегись козла спереди, лошади сзади, а лихого человека со всех сторон.

Решение

После 5 падений сервиса (довольно позорно, но что поделать) я начал искать быстрое решение для мониторинга, желательно бесплатное.

Небольшой ресерч не дал простого и быстрого решения, чтобы проверять свои сервисы по доменному имени, поэтому я написал своё решение - https://t.me/YourDomainHealthCheckBot

Просто отправляешь боту свой домен - например checkcv.info - бот сам определяет доступен ли сервис по HTTPS или HTTP и начинает его пинговать раз в минуту.

В случае ошибки или недоступности сайта - бот отправит сообщение об ошибке.

Как только сервис вернется к жизни - бот сообщит и об этом.

Вот в общем-то и все, так же можно редактировать свой список сайтов.

Ещё можно пингануть сайт один раз.

Кто-то подсказал, что этим ботом можно поднимать свои Heroku-сервисы к жизни.

С тех пор как запустил бота сервис пока не падал, но если упадёт узнаю об этом в течение минуты (если не упадёт сервер с ботом😏).

Буду рад услышать фидбек или предложения по улучшению -

0
190 комментариев
Написать комментарий...
Konstantin T.

Автору было лень сходить в Гугл, но не лень изобрести велосипед в 2021 )

Тут бы построить локальную систему мониторинга и автоперезапуска + прикрутить асинхронные очереди, чтобы не перегружать систему большим числом параллельных OCRов. Но мысль полетела в другом направлении...

Ответить
Развернуть ветку
Alex Fedorov
Автор

Тут бы построить локальную систему мониторинга и автоперезапуска + прикрутить асинхронные очереди — и через 10 лет что-то запустить?)

Ответить
Развернуть ветку
Евгений

prometheus + grafana все это в docker. за вечер два можно поставить разобраться

Ответить
Развернуть ветку
Alex Fedorov
Автор

Я уже ставил и разбирался не раз с ними, они мне нотификации не дадут, только графички

Ответить
Развернуть ветку
himik genuine

Прометей разве не шлет весточки о проблемах?

Ответить
Развернуть ветку
Alex Fedorov
Автор

ну я про связку прометея и графаны, прометеус через алерт менеджер умеет слать алерты через вебхуки в слак, например. Но это надо прописывать все обычно к конкретным хостам, мне нужна была простая возможность добавить/удалить хост. А пинг по http можно типа так сделать https://github.com/prometheus/blackbox_exporter/blob/master/example.yml

Ответить
Развернуть ветку
Alex Fedorov
Автор

в общем за звонкую монету можно и прометеус и графану, все это в кубере с ELK поднять

Ответить
Развернуть ветку
187 комментариев
Раскрывать всегда