Skip to content

About

Uptime Checker — высокопроизводительный сервис мониторинга доступности URL. Реализован на Java 21 с использованием Spring Boot и Virtual Threads для эффективного конкурентного опроса. Включает Event-Driven архитектуру, персистентность в PostgreSQL, интеграцию с Docker и систему алертинга.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

12 Commits

Folders and files

Repository files navigation

🚀 Uptime Checker (Система мониторинга доступности)

Java Spring Boot PostgreSQL Docker

📌 О проекте

Uptime Checker — это высокопроизводительный backend-сервис для автоматического мониторинга доступности веб-ресурсов (URL) с интегрированным информированием в Telegram. Проект создан для демонстрации навыков проектирования отказоустойчивых распределенных систем, работы с современным сетевым стеком Java и реализации принципов Clean Architecture.

Данный сервис решает важную инфраструктурную задачу: асинхронно опрашивает целевые ресурсы по индивидуальным расписаниям, изолирует сетевые сбои и мгновенно оповещает о падении или восстановлении узлов.


⚙️ Технический стек

  • Core: Java 21, Spring Boot 4.0.6 (Spring Data JPA, Web-MVC, Validation)
  • HTTP Client: Spring RestClient (с конфигурацией SimpleClientHttpRequestFactory)
  • Database: PostgreSQL 15, HikariCP
  • Infrastructure: Docker, Docker Compose
  • Tools: Maven, Lombok, Slf4j

🔥 Ключевые технические решения

  • Изоляция сбоев (Fault Tolerance) & Таймауты: По умолчанию HTTP-клиенты склонны к бесконечному ожиданию ответа. В проекте реализованы жесткие ограничения (ConnectTimeout и ReadTimeout), благодаря чему «зависшие» или мертвые целевые сайты не вызывают деградацию сервиса и не приводят к нехватке потоков (Thread Starvation).
  • Динамический шедулинг без блокировок: Встроенный планировщик задач (@Scheduled) опрашивает общую очередь каждую секунду, но выполняет сетевой запрос только для тех ресурсов, чей индивидуальный интервал (checkIntervalSeconds) из базы данных был исчерпан.
  • Безопасная обработка сторонних API: Интеграция с Telegram Bot API полностью изолирована. Сбои на стороне серверов Telegram или проблемы со связью перехватываются внутри TelegramService, логируются и не нарушают основной цикл мониторинга ресурсов.
  • Контейнеризация «Из коробки»: Полностью настроенная среда в docker-compose.yml связывает контейнер приложения и базу данных PostgreSQL в изолированную внутреннюю сеть Docker network, используя безопасный проброс секретов через переменные окружения.

🚀 Быстрый старт (Quick Start)

Предварительные требования:

  • Установленный Docker и Docker Compose
  • Установленный Maven и JDK 21 (для локального запуска без Docker)

Инструкция по запуску:

  1. Клонируйте репозиторий:

    git clone https://github.com/NoxiousDream/uptime_checker.git
    cd uptime_checker
  2. Настройте переменные окружения: Создайте файл .env в корневой папке проекта:

    TELEGRAM_BOT_TOKEN=ваш_токен_от_BotFather
    TELEGRAM_CHAT_ID=ваш_chat_id_или_канала
    
  3. Разверните проект в Docker:

docker-compose up -d --build

Приложение автоматически соберется и запустится на порту 8080, а база данных развернет таблицы благодаря автомиграциям Hibernate.


📖 Спецификация REST API (v1)

Метод Эндпоинт Описание Валидация
POST /api/v1/targets Добавить новый URL на мониторинг @Valid (Валидный URL, Not Blank)
GET /api/v1/targets Получить список всех ресурсов и их статусов —
PATCH /api/v1/targets/{id}/interval Изменить интервал проверки ресурса (?seconds=X) Проверка на положительное число
DELETE /api/v1/targets/{id} Удалить ресурс из системы Проверка существования ID

Пример запроса на добавление сайта (POST /api/v1/targets):

{
  "name": "Google",
  "url": "https://google.com",
  "checkIntervalSeconds": 5
}

📊 Мониторинг изнутри контейнера (CLI)

Для проверки состояния базы данных в реальном времени можно подключиться напрямую к PostgreSQL внутри Docker:

docker exec -it uptime_db psql -U user -d uptime_db

About

Uptime Checker — высокопроизводительный сервис мониторинга доступности URL. Реализован на Java 21 с использованием Spring Boot и Virtual Threads для эффективного конкурентного опроса. Включает Event-Driven архитектуру, персистентность в PostgreSQL, интеграцию с Docker и систему алертинга.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages