evo-container-apps-dns-checker

0

Описание

Языки

  • Go82,9%
  • Vue11%
  • HTML2,2%
  • JavaScript1,5%
  • Shell1,4%
  • Dockerfile1%
README.md

DNS Monitor

Веб-приложение для мониторинга состояния DNS записей с использованием Go 1.25 и Vue.js 3.5.27.

Особенности

  • Backend: Go 1.25 с Gin framework
  • Frontend: Vue.js 3.5.27 с Vue Router
  • База данных: SQLite
  • Мониторинг: Фоновая проверка DNS записей каждую секунду
  • Интерфейс: Responsive SPA с автообновлением
  • Развертывание: Docker и Docker Compose

Структура проекта

├── backend/ │ ├── main.go # Основное приложение │ ├── go.mod # Go модули │ ├── models/ # Модели данных │ ├── handlers/ # HTTP обработчики │ ├── services/ # Бизнес-логика │ └── database/ # Работа с БД ├── frontend/ │ ├── src/ │ │ ├── components/ # Vue компоненты │ │ ├── views/ # Vue страницы │ │ ├── router/ # Vue Router │ │ └── services/ # API сервисы │ ├── public/ # Статические файлы │ └── package.json # NPM зависимости ├── Dockerfile # Docker конфигурация ├── docker-compose.yml # Docker Compose └── README.md # Этот файл

Быстрый старт

С помощью Docker Compose (рекомендуется)

  1. Клонируйте репозиторий:
  1. Запустите приложение:
  1. Откройте http://localhost:8080 в браузере

Ручной запуск

Backend

  1. Перейдите в директорию backend:
  1. Установите зависимости:
  1. Запустите сервер:

Frontend

  1. Перейдите в директорию frontend:
  1. Установите зависимости:
  1. Запустите dev сервер:
  1. Откройте http://localhost:3000 в браузере

API Эндпоинты

DNS Проверки

  • POST /api/dns-checks
    - Создать новую DNS проверку
  • GET /api/dns-checks
    - Получить список всех проверок
  • GET /api/dns-checks/:id
    - Получить детальную информацию о проверке
  • DELETE /api/dns-checks/:id
    - Удалить DNS проверку

Примеры запросов

Создание DNS проверки

Получение списка проверок

База данных

Приложение использует SQLite базу данных с двумя таблицами:

dns_checks

  • id
    - Уникальный идентификатор
  • name
    - Название проверки
  • description
    - Описание
  • dns_record
    - DNS запись для проверки
  • resolver_ips
    - JSON массив IP адресов DNS серверов
  • created_at
    - Время создания
  • updated_at
    - Время обновления
  • is_active
    - Флаг активности

dns_check_results

  • id
    - Уникальный идентификатор
  • dns_check_id
    - ID связанной проверки
  • resolver_ip
    - IP адрес DNS сервера
  • status
    - Статус проверки (success/timeout/error)
  • response_time_ms
    - Время ответа в миллисекундах
  • error_message
    - Сообщение об ошибке
  • checked_at
    - Время проверки

Мониторинг

Приложение выполняет фоновую проверку DNS записей каждую секунду:

  1. Получает все активные DNS проверки из базы данных
  2. Для каждой проверки выполняет DNS запрос к указанным серверам
  3. Сохраняет результаты в базу данных
  4. Логирует ошибки при необходимости

Развертывание

Docker

Сборка образа:

Запуск контейнера:

Docker Compose

Cloud.ru Container Apps

Для развертывания в Cloud.ru Container Apps используйте готовый Docker образ:

Текущая версия:

nvkorolkov.cr.cloud.ru/dns-checker:v0.0.8

Подробная инструкция по деплою доступна в файле

Конфигурация

Переменные окружения:

  • GIN_MODE
    - Режим работы Gin (debug/release)
  • Порт приложения: 8080 (можно изменить в main.go)

Разработка

Настройка VS Code

Для эффективной разработки с использованием Kilo Code плагина, добавьте следующие настройки в VS Code:

Эти настройки уже добавлены в файл

.vscode/settings.json
в проекте. Они обеспечивают:

  • Автоматическую загрузку подсказок из папки
    .kilocode
  • Применение правил для git commit из файла
    .kilocode/git_commit_hints.md
  • Использование инструкций для развертывания из
    .kilocode/containerapps_deployment_hints.md

Git Commit Guidelines

Проект использует Conventional Commits формат для сообщений коммитов. Подробные инструкции доступны в файле

.

Основные правила:

  • Использовать английский язык для сообщений
  • Формат:
    <type>[optional scope]: <description>
  • Типы:
    feat
    ,
    fix
    ,
    docs
    ,
    style
    ,
    refactor
    ,
    test
    ,
    chore

Примеры:

feat(dns): add DNS monitoring service fix(handler): resolve null pointer exception docs: update API documentation

Backend

  • Использует Go 1.25
  • Gin framework для HTTP сервера
  • GORM для работы с SQLite
  • Стандартная библиотека net для DNS запросов

Frontend

  • Vue.js 3.5.27
  • Vue Router для навигации
  • Axios для HTTP запросов
  • CSS без фреймворков для простоты

Лицензия

MIT License