DEV Community

Cover image for 🚀 Snuffer: Как я превратил Android-смартфоны в распределенную сеть мониторинга (и спас свои нервы)
ArcaneGaming
ArcaneGaming

Posted on

🚀 Snuffer: Как я превратил Android-смартфоны в распределенную сеть мониторинга (и спас свои нервы)

Меня зовут Виталий (ну или просто "тот парень, который не любит, когда его сервер падает"), я из команды Arcane Gaming.
Сегодня я хочу рассказать вам о своем пет-проекте, который немного вышел из-под контроля и превратился в полноценный продукт. Встречайте - Snuffer !

😫 С чего всё началось?
Знаете это чувство, когда вам пишет клиент (или, что еще хуже, мама):

"А почему сайт не открывается?"
И ты такой:
"Да ладно, у меня всё работает!"
А потом оказывается, что сервер упал 3 часа назад, база данных ушла в дедлок, а ты в это время спокойно пил кофе и смотрел мемы.

Я перепробовал кучу сервисов: UptimeRobot, Pingdom, Better Uptime. Они крутые, спору нет.
Но:

  • Дорого , если нужно много проверок.
  • Ограниченные локации . Иногда нужно проверить доступность именно из конкретной сети или региона.
  • Скучно . Где веселье в том, чтобы просто заплатить денег?

И тут я посмотрел на ящик своего стола. Там лежали они... Герои прошлых лет. Samsung Galaxy S7, какой-то старый Xiaomi с треснутым экраном и Pixel первого поколения. Они смотрели на меня своими пыльными камерами и шептали: "Мы еще можем быть полезны..." .

И меня осенило! 💡

А что, если использовать эти устройства как узлы мониторинга?
Ведь смартфон - это мощный компьютер с Wi-Fi и GSM модулем. Он может пинговать, делать HTTP-запросы, проверять порты. И если раздать такие телефоны друзьям в разных городах (или просто подключить к разным провайдерам), получится настоящая распределенная сеть мониторинга .
Так родился Snuffer .

📱 Что такое Snuffer?
Если говорить умными словами, это распределенная система мониторинга доступности сервисов с использованием мобильных агентов .

"Давай короче, что это такое?":

  1. Вы регистрируетесь в админке .
  2. Скачиваете Android-приложение .
  3. Сканируете QR-код.
  4. БУМ! Ваш телефон превращается в "Снуффера" (нюхача), который постоянно проверяет, живы ли ваши сайты.

🛠 Что он умеет?

  • HTTP / Keyword Monitor : Проверяет, отдает ли сайт 200 OK и есть ли на странице нужное слово (например, "Success"). Если нет - бьет тревогу.
  • Ping / Port Monitor : Пингует серверы и проверяет открытые порты (полезно для баз данных или кастомных сервисов).
  • DNS Monitor : Следит, чтобы ваши домены резолвились куда надо (а не на фишинговые заглушки).
  • Vulnerability Scanner : В админке есть встроенный сканер уязвимостей! (Но я пока его еще не сделал, но обязательно доделаю, честно!)
  • Telegram Бот : Уведомления прилетают мгновенно. Потому что почту мы читаем редко, а телегу - каждые 5 минут.

🤓 Немного "под капотом"
Я люблю, когда всё работает быстро и четко. Поэтому стек выбрал проверенный и надежный:

  • Backend : Node.js + Express (старая добрая классика).
  • Database : PostgreSQL + Prisma (потому что писать SQL руками в 2025 — это моветон, хотя я умею!).
  • Frontend : React + Tailwind CSS (чтобы было красиво и адаптивно).
  • Mobile : React Native / Expo (одна кодовая база, минимум боли).

Самое интересное - это архитектура .
Сервер раздает "задачи" (tasks) подключенным устройствам через WebSocket. Устройства выполняют проверки и шлют отчеты обратно.
Если устройство говорит "Сайт лежит", сервер не верит ему на слово (вдруг у телефона просто Wi-Fi отвалился?). Он ждет подтверждения от других узлов или от самого сервера. Это минимизирует ложные срабатывания.

🌍 Почему это круто?

  1. Вторая жизнь вещам . Ваши старые гаджеты не загрязняют природу, а приносят пользу. Экологично! 🌱
  2. Полный контроль . Вы сами выбираете, откуда мониторить. Хотите проверить доступность из офиса конкурента? Просто подбросьте им телефон с Snuffer (шутка... или нет?).
  3. Бесплатно (почти). Вы платите только за электричество для зарядки телефона.

Немного забавных моментов разработки😂
Конечно, не обошлось без факапов.

  • Однажды я случайно заставил все подключенные телефоны (около 20 штук) одновременно пинговать один несчастный сервер с интервалом в 1 секунду. Получился такой мини-DDoS своими руками. Сервер выстоял, но админы хостинга, наверное, напряглись.
  • Борьба с режимом энергосбережения Android - это отдельная война. Android очень любит "убивать" фоновые процессы, чтобы сэкономить 1% батареи. Пришлось попотеть, чтобы объяснить системе: "Эй, этот процесс ВАЖЕН, не трогай его!".

🚀 Что дальше?
Проект живет и развивается. Сейчас я выкатил версию v4.15.11 (да,я часто обновляю его!).
В планах:

  • iOS версия (Apple, пустите в AppStore, ну пожалуйста!).
  • Больше типов проверок (например, скриншоты сайтов).
  • Публичное API.

Если вам интересно попробовать или просто потыкать палочкой — залетайте:

👉 Лендинг
👉 Админка

Буду рад любому фидбеку, критике или просто мемам в комментариях!

Спасибо, что дочитали! Пусть ваш аптайм всегда будет 99.999%! 💚

P.S.: Ни один старый смартфон не пострадал при разработке этого приложения (кроме того Xiaomi, он упал со стола, но это другая история).
P.S.S.: Один минус забыл указать, что бы это работало, нужно что бы прила была запущена и горел экран, в фоне работать не будет, есть ограничения ОС.

Top comments (0)