diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 8e9958d..3e2e79c 100755 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -95,7 +95,7 @@ --- -## 🗄️ База данных (8 таблиц) +## 🗄️ База данных ### Схема ``` @@ -153,7 +153,7 @@ alerts # Алерты ### SQL инъекции - Prepared statements (PDO) во всех запросах -- Базовый класс `Model` предоставляет методы `fetchAll()`, `fetchOne()`, `insert()`, `update()` +- Базовый класс `Model` даёт единый доступ к PDO через `DatabaseConfig` --- @@ -172,7 +172,8 @@ alerts # Алерты | Метод | Путь | Контроллер | Описание | |-------|------|------------|----------| | GET | `/` | `DashboardController` | Дашборд (карточки серверов) | -| GET | `/server/{id}` | `ServerDetailController` | Детали сервера + графики | +| GET | `/server/{id}` | redirect | Legacy redirect на `/servers/{id}` | +| GET | `/servers/{id}` | `ServerDetailController` | Детали сервера + графики | | GET/POST | `/servers/create` | `ServerController` | Добавить сервер | | GET/POST | `/servers/{id}/edit` | `ServerController` | Редактировать сервер | | GET/POST | `/servers/{id}/delete` | `ServerController` | Удалить сервер | @@ -198,6 +199,7 @@ alerts # Алерты - `net_in_{iface}`, `net_out_{iface}` - трафик (% от скорости интерфейса) - `temp_*` - температуры (°C) - `top_cpu_proc`, `top_ram_proc` - топ-5 процессов (JSON) +- `uptime` - аптайм в секундах **Интервал сбора:** 60 секунд @@ -241,9 +243,9 @@ alerts # Алерты - `alerts/*.twig` — список алертов ### JavaScript -- Chart.js для графиков (CPU/RAM/Disk за 24ч/7д/30д) +- Chart.js для графиков CPU/RAM/Network/Temperature/Disk - Автообновление дашборда через `setTimeout` -- Внешний tooltip handler для загрузки данных процессов +- Внешний tooltip handler для загрузки данных процессов и деталей RAM --- @@ -311,7 +313,8 @@ certbot --nginx -d mon.mirv.top ### Период сбора - **Агент:** каждые 60 секунд - **Дашборд:** автообновление каждые 30 секунд -- **Графики:** 24 часа / 7 дней / 30 дней +- **Графики:** 1 час / 6 часов / 24 часа / 7 дней / 30 дней +- **Длинные периоды:** данные берутся из `server_metrics_trends` --- @@ -341,9 +344,9 @@ certbot --nginx -d mon.mirv.top ## 📝 Changelog -### v1.0 (Февраль 2026) +### v1.1 (Апрель 2026) - ✅ Ядро системы (Slim 4 + Twig + Bootstrap 5) -- ✅ 8 таблиц базы данных +- ✅ Базовая схема и последующие миграции для trends, сервисов и offline-логики - ✅ Аутентификация и авторизация - ✅ CRUD серверов и групп - ✅ API для приёма метрик diff --git a/INSTALL.md b/INSTALL.md index 5a66e7d..9ca0e47 100755 --- a/INSTALL.md +++ b/INSTALL.md @@ -13,7 +13,7 @@ ```bash git clone -cd monitoring-system +cd mon ``` ### 2. Установка зависимостей @@ -78,15 +78,22 @@ server { } ``` -### 5. Настройка конфигурации базы данных +### 5. Настройка окружения -Отредактируйте файл `config/DatabaseConfig.php` для указания параметров подключения к базе данных: +Скопируйте `.env.example` в `.env` и укажите параметры подключения к базе данных: -```php -private $host = 'localhost'; -private $db_name = 'monitoring_system'; -private $username = 'your_db_username'; -private $password = 'your_db_password'; +```bash +cp .env.example .env +``` + +Ключевые переменные: + +```dotenv +DB_HOST=localhost +DB_NAME=monitoring_system +DB_USERNAME=mon_user +DB_PASSWORD=your_db_password +APP_PORT=8082 ``` ## Использование @@ -95,14 +102,10 @@ private $password = 'your_db_password'; Перейдите на `http://mon.mirv.top/login` и войдите в систему. -Для первоначальной настройки создайте администратора через SQL: +По умолчанию миграция `007_seed_admin_user.sql` создаёт пользователя: -```sql -INSERT INTO users (username, password_hash, email, role) -VALUES ('admin', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'admin@example.com', 'admin'); -``` - -Пароль: `password` +- логин: `admin` +- пароль: `mirvmon2026` ### 2. Добавление серверов @@ -124,6 +127,15 @@ chmod +x install.sh Агент будет установлен как systemd-сервис и начнет отправлять метрики на сервер мониторинга. +## Trends и длинные периоды + +Для графиков за периоды больше 24 часов используются агрегированные данные из `server_metrics_trends`. +Если после установки или миграции нужно дозаполнить историю: + +```bash +php /var/www/mon/cron/backfill_trends.php 30 +``` + ## API ### Отправка метрик @@ -160,4 +172,4 @@ GET /agent/install.bat?token= - Все пароли хешируются с помощью `password_hash()` - Токены агентов хранятся в виде SHA-256 хешей - Все SQL-запросы используют подготовленные выражения -- Вход на все страницы требует аутентификации (кроме API и страницы входа) \ No newline at end of file +- Вход на все страницы требует аутентификации (кроме API и страницы входа) diff --git a/README.md b/README.md index 11b48c8..f112970 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ cd mirvmon cd docker && bash deploy.sh # 3. Открываем браузер -# http://localhost:8080 +# http://localhost:8082 # Логин: admin # Пароль: mirvmon2026 (смените сразу!) ``` @@ -73,18 +73,20 @@ composer install ```bash mysql -u root -p <