Я задолбался пропускать падения моих сервисов и написал HealthCheck-бота
Пишешь боту имя своего домена и бот проверяет его раз в минуту.
К идее создания бота я пришёл при запуске другого продукта для проверки резюме на английском -
В день запуска всё пошло не так😎
Ошибка #1
Большинство сервисов работали на одном сервере, а это
Запускал я довольно требовательный сервис к ресурсам - используется OCR (распознавание символов на pdf файле), алгоритм категоризации, нейронная сеть для определения насколько резюме соответствует профессии найденной по ключевым словам. В общем жирный сервис, который ест много ресурсов процессора и при превышении лимитов - он зависает намертво вместе с сервером.
Ошибка #2
После запуска я не особо следил за сервисом, занимался своими делами.
В итоге проблему с виртуальной машиной, где крутятся все мои сервисы я заметил только по комментариям от пользователей на ProductHunt.
А завис не только сервис, а вообще всё!
Приходилось перезагружать сервер и поднимать все сервисы, чтобы они ожили. Спасибо боту @IsBotDownBot - я понимал когда падали мои боты😂
Ошибка #3
В сервисе не было ограничений на количество загрузок резюме - в итоге кто-то отчаянно пытался получить высокий балл от https://checkcv.info/ и загружал резюме около сотни раз, это нагружало сервер и тоже приводило к падению сервера.
Решение
После 5 падений сервиса (довольно позорно, но что поделать) я начал искать быстрое решение для мониторинга, желательно бесплатное.
Небольшой ресерч не дал простого и быстрого решения, чтобы проверять свои сервисы по доменному имени, поэтому я написал своё решение - https://t.me/YourDomainHealthCheckBot
Просто отправляешь боту свой домен - например checkcv.info - бот сам определяет доступен ли сервис по HTTPS или HTTP и начинает его пинговать раз в минуту.
В случае ошибки или недоступности сайта - бот отправит сообщение об ошибке.
Как только сервис вернется к жизни - бот сообщит и об этом.
Вот в общем-то и все, так же можно редактировать свой список сайтов.
Ещё можно пингануть сайт один раз.
Кто-то подсказал, что этим ботом можно поднимать свои Heroku-сервисы к жизни.
С тех пор как запустил бота сервис пока не падал, но если упадёт узнаю об этом в течение минуты (если не упадёт сервер с ботом😏).
Буду рад услышать фидбек или предложения по улучшению -
Как бы вот https://uptimerobot.com/ В бесплатном режиме вроде 50 сайтов и пинг раз в 5 минут. Плюс вебхуки (для Слака например). Если раз в минуту - 7$/месяц (плюсом проверка ssl и т.д.) Скрин из Слака
+1 - есть несколько десятков таких сервисов, наиболее продвинутые из них умеют проверять текст ответа, время ответа и т.д.
Есть хорошая бесплатная selfhosted альтернатива - Uptime Kuma.
Мне важна была частота раз в минуту, про вебхуки хорошая затея, спасибо!
А для поклонников отечественного https://effro.ru , почти тоже только еще и в телегу шлют алерты
Есть же нормальные решения по мониторингу, зачем бот?
сейчас боты в моде просто.
а так да, их примерно миллион.
задолбался просто
Ну основная задача - быстро уведомить ответственных, что нужно их внимание.
Что может подойти лучше, чем мессенджер? Слак и прочие рабочие мессенджеры используются в рабочее время.
Почта - ну вы понели.
СМС - сложнее, надо дополнительно проверять баланс, да и многие уже смс игнорируют.
Звонить - то же самое.
Из мессенджеров которые используют айти специалисты - это телеграм без вариантов.
Так что как ни посмотри, алерт в телеге - это самый простой и быстрый способ.
Есть конечно, но тут не надо париться с настройкой, регистрацией и т.п., отправил сайт, который хочешь чекать и всё
Автор, тема мониторинга работоспособности обширна и огромна, то что вы сделали это метрика из серии 'средней температуры по больнице'.
Если делать по-серьезному - нужно учитывать редиректы, зеркала, анти-DDOS системы вроде Cloudflare, нужно делать проверки из разных ЦОДв на разных континентах: из одной точки сайт может работать а из другой - нет.
Нужно сам контент проверяемой страницы уметь обрабатывать на предмет ошибок, тк очень во многих случаях ваша пинговалка будет получать 200 ОК а сам сайт работать не будет.
вы всё это ожидаете в бесплатном боте в телеге?)
Просто ответ 200 еще не гарантия, что сервис работает. Продвинутые инструменты обычно предлагают проверять отдаваемый контент по паттерну или искать определённое слово.
Для сервисов выставленных наружу - в большинстве кейсов 200-го кода будет достаточно, чтобы понять работает ли веб сервер
В том и дело, что изнутри смотреть надо. Тем более на энетерпрайзе. Там вообще можно творить чудеса с Prometeus, ELK (да-да по аномалиям логов можно многое интересное видеть).
Хотите я вам паранои добавлю.
Пользователям вашего бота нужно еще пингать и бота в том числе.
Всегда можно добавить моего бота в @IsBotDownBot 😂
Автору было лень сходить в Гугл, но не лень изобрести велосипед в 2021 )
Тут бы построить локальную систему мониторинга и автоперезапуска + прикрутить асинхронные очереди, чтобы не перегружать систему большим числом параллельных OCRов. Но мысль полетела в другом направлении...
Тут бы построить локальную систему мониторинга и автоперезапуска + прикрутить асинхронные очереди — и через 10 лет что-то запустить?)
Hetrix
Это сервис мониторинга?
а потом из 10 минутных тасков в итоге накапливается месяц...?
Комментарий недоступен
А в чём проблема использовать Zabbix? Нормальные графики, эвенты
Комментарий недоступен
Время ответа уже добавил:) спасибо за фидбек
Kubernetes и хелс пробы
Мне страшно пользоваться для мониторинга вашим сервисом, после того как вы рассказали, как вы сервисы запускаете. А по существу - выглядит как 3-колесный велосипед, в мире где существует Тесла. Нормальный мониторинг сервиса нормального сервиса на порядок сложнее.
тесла стоит дорого, у вас есть тесла?)
Zabbix всё это позволяет. С уведомлениями там тоже более всё чем в порядке, тот же телеграм.
А если в заббиксе вдруг нет какого-то подходящего для вас шаблона, всегда можно написать свой скрипт и подключить его.
Ну и естественно что система мониторинга должна быть на отдельной машине
Но я же вот взял и написал свой скрипт, обернутый немного в бота. Это правда не супер много кода
Комментарий недоступен
Ну, тут и устанавливать ничего не надо)
Комментарии не читал.
А почему бы просто не поднять какой-то Zabbix или Grafana + Prometheus и мониторить не только сайты, но и вообще любые другие сервисы, в том числе и бота? Я задаю вопрос скорее в контексте проблем автора, а не нужности юзерам.
А если серверов 15 и ещё шаред хостингов в 3 раза больше? Спросите сеошников, они расскажут, какие у них проблемы. Они и слов таких не знают, как Прометеус
Я не такой большой, чтобы поднимать себе свой заббикс)
"Я задолбался" - старо как мир, креативнее, товарищи, креативнее
вроде всего 4-5 месяцев популярен заголовок)
Вижу "я задолбался" в заголовке и автоматом ставлю диз. Автору пора сменить шаблон своих заголовков.
Да, пусть уходит отсюда и учится использовать свой невыдающийся талант на женщинах, расширяя окружность их познаний и углубляя их внутренний мир! Ему многое предстоит открыть и познать. Но ему не дадут овладеть.
чем вас не устраивает заголовок?)
Норм, мы такую штуку называли Пингер)
Хорошо, что развертывать теперь не надо ничего для такой мелочи) Спасибо)
Приятно слышать, пользуйтесь:)
Есть приложение «Net Status», которое пингует вообще что угодно какими угодно (сетевыми) протоколами.
И поддерживать не надо.
Но приложение же нужно где-то держать запущенным и оно наверное под определённую ОС заточено
Чувак, если у тебя падают серваки, то может тебе попросить специалиста, чтобы оптимизировал код? Мало ли что ты там накалякал)
что "накалякал" сам и исправлю)
Я правильно понимаю, что вместо решения проблем из-за которых сервис постоянно падает, автор запилил мониторинг и рад?)
Спасибо, сервис уже не падает) сервис мониторинга сделал уже после, но я и правда рад)
Пролистал ветку... можно то, можно это... Из разряда очень интересно, но ничего не понял.
Я - это ЦА вашего бота. Нихера не понимаю в серверах, но пользуюсь ими на уровне интуиции. Ваш бот - то, что нужно. Никаких новых сервисов, инструкций, аккаунтов, вечеров в гугле.
Добавил сайт и спишь спокойно. Спасибо за сервис! Надеюсь проживет долго.
спасибо большое за отзыв! Да, я тоже добавил все свои сайты и сплю спокойно :)
Prometheus + blackbox exporter
Помимо простого сайта, можно хоть умный чайник мониторить, отличное решение
но эта настройка будет прибита к сконфигурированным мной хостам только, чтобы добавить сайт нужно будет ручками лазить конфиг менять
https://healthchecks.io
Гениальная вещь для мониторинга чего угодно. Открытый исходный код, возможность установки на свои сервера.
только эта штука так устроена, что это приложение должно отправлять каждый раз туда запрос. Что делать, если сайт упал, а запрос на этот сервис улетел?