Простая и эффективная программа на Go для мониторинга доступности веб-сервисов с современным веб-интерфейсом.
- 🔍 Мониторинг в реальном времени - проверка доступности по HTTP запросам (статус 200 OK)
- 🎨 Современный веб-интерфейс - интуитивно понятный дизайн
- 🚨 Визуальные индикаторы - зеленый (доступен) / красный (недоступен) с морганием для проблемных сервисов
- 📝 Раздельные интерфейсы - отдельные страницы для мониторинга и редактирования
- ➕ Управление сервисами - добавление и удаление через веб-интерфейс
- 💾 Автосохранение - данные сохраняются в
services.json - ⚡ Автообновление - обновление каждые 10 секунд с обратным отсчетом
- 🐳 Docker Ready - готовые конфигурации для контейнеризации
# Клонирование репозитория
git clone https://github.com/jf17/simple-web-monitoring.git
cd simple-web-monitoring
# Запуск на порту 8080
go run main.go -port=8080
# Или используя Makefile
make run# Сборка и запуск одной командой
make docker-build
make docker-up PORT=8080
# Открыть в браузере
open http://localhost:8080Сфокусирована на мониторинге:
- Отображение только названий сервисов (без URL)
- Цветовые индикаторы статуса
- Моргание красным для недоступных сервисов
- Автообновление каждые 10 секунд
- Ручное обновление по кнопке
Управление списком сервисов:
- Полная информация о сервисах (название + адрес)
- Добавление новых сервисов
- Удаление существующих сервисов
- Открывается в новом окне
- Без автообновления (сфокусирована на редактировании)
make help # Показать все доступные команды
make run # Запуск на порту 8080
make run-port PORT=3000 # Запуск на указанном порту
make build # Сборка приложения
make clean # Очистка файловmake test # Тестирование API на порту 8080
make test-port PORT=3000 # Тестирование на указанном порту
make add-test-service # Добавить тестовый сервис
make remove-service # Удалить сервис по индексу 0make docker-build # Сборка Docker образа
make docker-compose PORT=8080 # Создание docker-compose.yml
make docker-up PORT=8080 # Запуск через Docker Compose
make docker-down # Остановка контейнера
make docker-clean # Полная очистка Docker ресурсовsimple-web-monitoring/
├── 📄 main.go # Основной файл приложения
├── 📄 go.mod # Go модуль
├── 📄 Makefile # Команды для сборки и запуска
├── 📄 Dockerfile # Docker конфигурация
├── 📄 LICENSE # Лицензия MIT
├── 📄 README.md # Документация
├── 📄 services.json # Список сервисов (создается автоматически)
├── 📁 data/ # Директория для Docker volume
└── 📄 docker-compose.yml # Docker Compose (создается через Makefile)
| Метод | Путь | Описание |
|---|---|---|
GET |
/ |
Главная страница мониторинга |
GET |
/edit |
Страница редактирования сервисов |
GET |
/api/services |
Получить список всех сервисов |
POST |
/api/add |
Добавить новый сервис |
POST |
/api/remove |
Удалить сервис по индексу |
# Получить список сервисов
curl http://localhost:8080/api/services
# Добавить новый сервис
curl -X POST -H "Content-Type: application/json" \
-d '{"name":"GitHub","url":"https://github.com"}' \
http://localhost:8080/api/add
# Удалить сервис (индекс 0)
curl -X POST -H "Content-Type: application/json" \
-d '{"index":0}' \
http://localhost:8080/api/remove- ✅ Автоматическое определение Docker окружения
- 💾 Данные сохраняются в
/app/data/services.json - 🔄 Volume
./data:/app/dataдля сохранности данных - 🏗️ Многоэтапная сборка для минимального размера образа
- 🔒 Запуск от непривилегированного пользователя
- 🌍 Настройка часового пояса (Europe/Moscow)
# Сборка образа
docker build -t web-monitor:latest .
# Создание директории для данных
mkdir -p ./data
# Запуск контейнера
docker run -d \
--name web-monitor \
-p 8080:8080 \
-v $(pwd)/data:/app/data \
web-monitor:latest -port=8080- Fork репозитория
- Создайте feature branch (
git checkout -b feature/amazing-feature) - Commit изменения (
git commit -m 'Add amazing feature') - Push в branch (
git push origin feature/amazing-feature) - Откройте Pull Request
Этот проект распространяется под лицензией Apache 2.0. Подробности в файле LICENSE.
Если у вас возникли вопросы или проблемы:
- Проверьте Issues на наличие похожих проблем
- Создайте новый Issue с подробным описанием
- Используйте команду
make helpдля справки по командам
Сделано с ❤️ на Go