fix docs
This commit is contained in:
parent
3edf138e43
commit
58001aaffe
|
|
@ -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 для приёма метрик
|
||||
|
|
|
|||
42
INSTALL.md
42
INSTALL.md
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
```bash
|
||||
git clone <repository-url>
|
||||
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
|
||||
|
||||
### Отправка метрик
|
||||
|
|
|
|||
23
README.md
23
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 <<EOF
|
||||
CREATE DATABASE monitoring_system CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
CREATE USER 'mon_user'@'localhost' IDENTIFIED BY 'mon_password_123';
|
||||
CREATE USER 'mon_user'@'localhost' IDENTIFIED BY 'your_db_password';
|
||||
GRANT ALL PRIVILEGES ON monitoring_system.* TO 'mon_user'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
EOF
|
||||
|
||||
# Загружаем миграции
|
||||
cp .env.example .env
|
||||
# Укажите в .env актуальные DB_HOST / DB_USERNAME / DB_PASSWORD
|
||||
|
||||
for f in docker/migrations/*.sql; do
|
||||
mysql -u mon_user -pmon_password_123 monitoring_system < "$f"
|
||||
mysql -u mon_user -pyour_db_password monitoring_system < "$f"
|
||||
done
|
||||
```
|
||||
|
||||
#### 3. Настройка .env
|
||||
#### 3. Настройка `.env`
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
|
|
@ -117,7 +119,7 @@ server {
|
|||
`http://your-server/login`
|
||||
|
||||
- Логин: `admin`
|
||||
- Пароль: `mirvmon2026` (смените сразу!)
|
||||
- Пароль: `mirvmon2026` (создаётся миграцией `007_seed_admin_user.sql`, смените сразу)
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -242,6 +244,15 @@ docker compose logs app
|
|||
docker compose down && docker compose up -d --build
|
||||
```
|
||||
|
||||
### Графики за 7/30 дней показывают не всю историю
|
||||
|
||||
Для длинных периодов страница сервера использует агрегированные данные из `server_metrics_trends`.
|
||||
Если history только что мигрировала или trends ещё не заполнены, выполните backfill:
|
||||
|
||||
```bash
|
||||
php /var/www/mon/cron/backfill_trends.php 30
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Документация
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
- **Интерфейс:** **Полностью на русском языке** (все надписи, кнопки, формы, меню)
|
||||
- **Безопасность:** Prepared Statements для всех SQL-запросов, хеши паролей (`password_hash`), **токены агентов хранятся только как SHA-256 хеши**.
|
||||
|
||||
## 2. Структура базы данных (8 таблиц)
|
||||
## 2. Структура базы данных
|
||||
| Таблица | Поля (ключевые) | Назначение |
|
||||
| ------------------------------ | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
|
||||
| **users** | `id, username (unique), password_hash, email, role(admin/user), created_at` | Управление доступом |
|
||||
|
|
@ -61,12 +61,18 @@
|
|||
4. Создает systemd-сервис для автостарта.
|
||||
- **Python-агент:** собирает CPU, RAM, Disk, Network, Temperature раз в **60 секунд**, отправляет на `/api/v1/metrics`.
|
||||
|
||||
### 3.6. Страница сервера (`/server/{id}`)
|
||||
- **Текущие значения** всех метрик.
|
||||
- **Графики Chart.js** для метрик:
|
||||
- По умолчанию — **последние 24 часа**.
|
||||
- Кнопки выбора периода: **24 часа, 7 дней, 30 дней** (через параметр `?period=7d`).
|
||||
- **Управление порогами:** форма настройки `warning_threshold` и `duration` для каждой метрики этого сервера (сохраняет в `metric_thresholds`).
|
||||
### 3.6. Страница сервера (`/servers/{id}`)
|
||||
- Основной маршрут: `/servers/{id}` (`/server/{id}` оставлен как legacy redirect).
|
||||
- **Текущие значения** ключевых метрик.
|
||||
- **Графики Chart.js**:
|
||||
- CPU и RAM — отдельные линейные графики.
|
||||
- Network — отдельный график на каждый интерфейс (In/Out).
|
||||
- Temperature — один общий график по всем выбранным `temp_*`.
|
||||
- Disk — donut-графики по разделам.
|
||||
- `uptime` показывается текстом, без графика.
|
||||
- Кнопки выбора периода: **1 час, 6 часов, 24 часа, 7 дней, 30 дней**.
|
||||
- Для периодов больше 24 часов используются агрегаты из `server_metrics_trends`.
|
||||
- **Управление порогами:** форма настройки `warning_threshold`, `critical_threshold` и `duration`.
|
||||
|
||||
### 3.7. Система алертов
|
||||
- **Автоматическое создание** при превышении порога.
|
||||
|
|
@ -89,12 +95,12 @@
|
|||
|
||||
### Этап 1: Ядро системы
|
||||
- **Цель:** Slim Framework + Twig + Bootstrap работают.
|
||||
- **Результат:** Открываю `http://localhost:8080/test` → вижу «Система мониторинга».
|
||||
- **Результат:** Открываю `http://localhost:8082/test` → вижу «Система мониторинга».
|
||||
- ✅ **Выполнен**
|
||||
|
||||
### Этап 2: База данных
|
||||
- **Цель:** Все 8 таблиц созданы.
|
||||
- **Результат:** Импорт `schema.sql` → в MySQL есть все таблицы, включая `metric_names` с записями «cpu_load», «ram_used».
|
||||
- **Цель:** Базовая схема и справочник метрик созданы.
|
||||
- **Результат:** Импорт `schema.sql` и миграций → в MySQL есть основные таблицы, включая `metric_names` с записями `cpu_load`, `ram_used`.
|
||||
- ✅ **Выполнен**
|
||||
|
||||
### Этап 3: Аутентификация + CRUD групп
|
||||
|
|
@ -132,7 +138,7 @@
|
|||
### Этап 7: Детали сервера + графики
|
||||
- **Цель:** Страница с графиками и выбором периода.
|
||||
- **Результат:**
|
||||
1. Кликаю на карточку сервера → открывается `/server/1`.
|
||||
1. Кликаю на карточку сервера → открывается `/servers/1`.
|
||||
2. Вижу график CPU за 24 часа.
|
||||
3. Нажимаю «7 дней» → график перерисовывается за неделю.
|
||||
- ✅ **Выполнен**
|
||||
|
|
@ -159,7 +165,7 @@
|
|||
|
||||
### Выполненные этапы:
|
||||
- ✅ Этап 1: Ядро системы (Slim Framework 4, Twig, Bootstrap 5, Font Awesome 6)
|
||||
- ✅ Этап 2: База данных (схема создана, 8 таблиц, стандартные метрики)
|
||||
- ✅ Этап 2: База данных (схема создана, миграции и стандартные метрики применены)
|
||||
- ✅ Этап 3: Аутентификация и авторизация (middleware, формы входа/выхода, CRUD групп)
|
||||
- ✅ Этап 4: CRUD серверов (добавление/редактирование/удаление, генерация токенов)
|
||||
- ✅ Этап 5: API для агентов (прием метрик, проверка токенов, обновление статусов)
|
||||
|
|
@ -171,7 +177,7 @@
|
|||
### Архитектура:
|
||||
- **Frontend:** Bootstrap 5, Font Awesome 6, Chart.js (через CDN)
|
||||
- **Backend:** Slim Framework 4, Twig templates, PSR-7
|
||||
- **Database:** MySQL/MariaDB с 8 таблицами
|
||||
- **Database:** MySQL/MariaDB с базовой схемой и последующими миграциями
|
||||
- **Security:** Password hashing, SHA-256 token hashes, prepared statements
|
||||
- **Language:** Полный перевод интерфейса на русский язык
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue