← Все проекты

Кейс · Go-бэкенд

Пульс: монитор доступности

Монитор доступности: HTTP и TCP проверки по расписанию, аптайм, p50/p95, детектор инцидентов, живой дашборд на SSE и публичная статус-страница. Go + SQLite без CGO.

  • Go
  • SQLite
  • SSE
  • REST API
  • Docker

01 · Как выглядит

Скриншоты

Скриншот проекта «Пульс: монитор доступности» на экране 1280 пикселей
Десктоп, 1280 px
Скриншот проекта «Пульс: монитор доступности» на экране телефона, 390 пикселей
Телефон, 390 px

02 · О проекте

Что это и зачем

Монитор доступности «Пульс»: по расписанию проверяет HTTP-адреса и TCP-порты, хранит историю в SQLite, считает аптайм и задержки p50/p95 и открывает инцидент после серии падений подряд.

Результаты видны в живом дашборде (обновления по SSE) и на публичной статус-странице, которая не раскрывает адреса и тексты ошибок. Go без внешних зависимостей кроме SQLite без CGO, фронтенд на ванильном JS встроен в бинарник.

Ограничения

История в демо-режиме сгенерирована для наглядности графиков, всё появившееся после запуска измерено по-настоящему.

Одна нода и один токен, уведомлений нет, проверки идут только с машины сервиса. Аптайм считается по числу проверок, тело ответа HTTP не анализируется.

Что внутри

  • Отдельная горутина-воркер на каждую проверку: свой интервал и таймаут, запуски одного адреса не накладываются
  • HTTP GET (ожидаемый код, до 5 редиректов) и TCP connect
  • Аптайм за 24 ч, 7 и 30 дней, p50/p95 задержки за 24 ч
  • Детектор инцидентов: открытие после N падений подряд, закрытие первой успешной проверкой, переживает перезапуск
  • REST API под Bearer-токеном, SSE-поток событий, graceful shutdown, логи slog
  • Тесты (планировщик, детектор, статистика, API, SSE) и Docker

03 · Как запустить

Запуск одной командой

git clone <репозиторий по запросу> uptime-monitor
cd uptime-monitor
SEED_DEMO=1 go run ./cmd/server   # http://localhost:8084, токен demo

04 · Код

Репозиторий приватный

Исходники лежат в приватном репозитории. Открою доступ по запросу: напишите, и пришлю приглашение.

Запросить код