diff --git a/README.md b/README.md index 9d4d175..5963c5c 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,34 @@ # InfoUser Monitor -Мониторинг состояния ПК (Windows/Linux/macOS). Агент на каждом компьютере отправляет метрики на сервер раз в час, а веб-интерфейс показывает список машин, пользователей, IP, CPU/RAM, диски и процессы. +Мониторинг состояния ПК (Windows/Linux/macOS). Агент на каждом компьютере отправляет метрики на сервер раз в час, а веб-интерфейс показывает список машин, пользователей, IP, CPU/RAM/swap, диски, процессы и активные пользовательские сессии. ## Возможности - **Дашборд** с фильтрами по статусу, пользователю и поиском по хосту/IP/OS -- **Графики** CPU/RAM за 24 часа на странице ПК +- **Детали ПК**: графики CPU/RAM/swap за 24 часа, активные сессии, топ процессов, история heartbeats +- **Активные сессии**: кто и с какого IP залогинен прямо сейчас - **Уведомления** об офлайн-ПК (in-app + webhook + Telegram) - **Экспорт** списка ПК в CSV - **JWT-авторизация** с ролями admin/viewer +- **RBAC и аудит-лог**: управление пользователями, запись действий админов +- **Настройки через веб**: токен агента, порог офлайна, уведомления, часовой пояс +- **Часовой пояс**: хранение в UTC, отображение в выбранном поясе +- **RAM и swap**: использование в GB и процентах ## Структура ``` info-user/ ├── server/ # FastAPI + веб-интерфейс -│ ├── routes/ -│ ├── templates/ -│ ├── static/ +│ ├── routes/ # API и веб-роуты +│ ├── templates/ # Jinja2-шаблоны +│ ├── static/ # CSS/JS +│ ├── database.py # SQLite и миграции +│ ├── models.py # SQLAlchemy-модели +│ ├── schemas.py # Pydantic-схемы │ ├── Dockerfile │ └── main.py -├── agent/ # Python-агент +├── agent/ # Python-агент (ручная установка) │ ├── agent.py │ ├── config.json │ └── install.sh @@ -28,6 +36,7 @@ info-user/ ├── data/ # SQLite БД (создаётся при запуске) ├── docker-compose.yml ├── nginx.conf +├── info-user-agent_*.deb └── README.md ``` @@ -75,7 +84,7 @@ http://localhost ```bash # Установить .deb пакет -sudo dpkg -i info-user-agent_1.0.0_all.deb +sudo dpkg -i info-user-agent_1.0.3_all.deb # Настроить сервер и токен (интерактивно) sudo info-user-agent-setup @@ -84,7 +93,7 @@ sudo info-user-agent-setup sudo nano /opt/info-user-agent/config.json ``` -Либо через репозиторий (добавив его в `/etc/apt/sources.list.d/`). +Либо через собственный apt-репозиторий, если он настроен на сервере. ### Вручную (любой Linux) @@ -113,10 +122,13 @@ sudo bash install.sh - Имя хоста, текущий пользователь, локальный IP - Операционная система - Uptime -- Загрузка CPU и RAM +- Загрузка CPU +- RAM: процент, использовано/доступно/всего в GB +- Swap: процент, использовано/свободно/всего в GB - Информация по дискам - Температура CPU (если доступна) -- Top-10 процессов по CPU +- Top-10 процессов по CPU/RAM +- Активные пользовательские сессии (`who -u`) ## API @@ -124,11 +136,31 @@ sudo bash install.sh - `GET /api/computers` — список компьютеров (с фильтрами `status`, `user`, `search`, `sort`, `order`) - `GET /api/computers/export/csv` — экспорт в CSV - `GET /api/computers/{id}` — детали ПК с историей +- `DELETE /api/computers/{id}` — удалить ПК (admin) - `GET /api/notifications` — уведомления - `POST /api/notifications/{id}/read` — отметить прочитанным - `POST /api/notifications/read-all` — отметить все прочитанными +- `GET /api/audit` — аудит-лог (admin) +- `GET /api/settings` — runtime-настройки (admin) +- `POST /api/settings` — изменить runtime-настройки (admin) - `POST /api/auth/login` — вход в веб-интерфейс -- `POST /api/auth/register` — регистрация нового пользователя (viewer) +- `POST /api/auth/register` — регистрация нового пользователя (только если ещё нет admin) +- `GET /api/auth/users` — список пользователей (admin) +- `POST /api/auth/users/{id}/role` — сменить роль (admin) +- `DELETE /api/auth/users/{id}` — удалить пользователя (admin) + +## Runtime-настройки + +Администратор может менять настройки прямо в веб-интерфейсе (`/admin/settings`): + +- `AGENT_TOKEN` — токен для агентов +- `OFFLINE_THRESHOLD_MINUTES` — через сколько минут без heartbeat ПК считается офлайн +- `NOTIFICATION_WEBHOOK_URL` — URL для webhook-уведомлений +- `NOTIFICATION_TELEGRAM_BOT_TOKEN` — токен Telegram-бота +- `NOTIFICATION_TELEGRAM_CHAT_ID` — ID чата для Telegram +- `TIMEZONE` — часовой пояс для отображения времени в веб-интерфейсе + +Значения из БД переопределяют `.env` во время работы сервера. ## Уведомления об офлайн-ПК @@ -159,6 +191,13 @@ sudo bash install.sh - [X] Уведомления об офлайн-ПК (in-app + webhook + Telegram) - [X] Экспорт в CSV - [X] JWT-авторизация +- [X] Ролевая модель admin/viewer +- [X] Аудит-лог +- [X] Runtime-настройки через веб +- [X] Активные пользовательские сессии +- [X] RAM и swap в GB/% +- [X] График swap +- [X] Часовой пояс в веб-интерфейсе - [ ] Email-уведомления (SMTP) - [ ] Интеграция с Telegram-ботом (двусторонняя) - [ ] Ролевая модель для уведомлений (какие роли получают какие типы уведомлений)