Skip to content

stepkagrigoriev/uptime_monitor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

uptime_monitor

Небольшой пет-проект, распределенная система для мониторинга доступности сайтов, состоящая из 2 сервисов: API для управления списком сайтов и Worker для фонового мониторинга

Стек

  • Golang, GORM, Gorilla Mux, Zap
  • PostgreSQL, Docker/Docker Compose

Структура

  • cmd/api - API для управления списком сайтов
  • cmd/worker - сервис, который проверяет доступность сайтов
  • internal/models - ORM модели
  • internal/storage - логика подключения к БД и миграции

Запуск

  1. Запустите базу данных:
    docker-compose up -d
  2. Запустите API (в отдельном терминале):
    cd cmd/api
    go run main.go
  3. Запустите Worker (в отдельном терминале):
    cd cmd/worker
    go run main.go

API

Управление сайтами

  • POST /sites — Добавить новый URL в систему
  • GET /sites — Получить список всех сайтов
  • DELETE /sites/{id} — Удалить сайт и всю его историю из базы
  • PATCH /sites/{id}/status — Поставить мониторинг на паузу или возобновить ({"is_active": false})

Статистика

  • GET /sites/{id}/stats — Получить последние 50 результатов проверок конкретного сайта
  • GET /sites/{id}/analytics — Сводная аналитика: % Uptime и среднее время ответа

Как работает

  1. API принимает запросы от пользователя и сохраняет URL в таблицу websites БД
  2. Worker раз в 30 секунд считывает список всех сайтов из базы
  3. Для каждого сайта Worker параллельно (через горутины) выполняет HTTP GET запрос
  4. Результат (статус-код и время ответа) сохраняется в таблицу ping_results
  5. При остановке Ctrl+C сервисы используют Context и SIGTERM для безопасного завершения работы без потери данных Ура!! Работает с кайфом

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages