Files
info-user/README.md
T

160 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# InfoUser Monitor
Мониторинг состояния ПК (Windows/Linux/macOS). Агент на каждом компьютере отправляет метрики на сервер раз в час, а веб-интерфейс показывает список машин, пользователей, IP, CPU/RAM, диски и процессы.
## Возможности
- **Дашборд** с фильтрами по статусу, пользователю и поиском по хосту/IP/OS
- **Графики** CPU/RAM за 24 часа на странице ПК
- **Уведомления** об офлайн-ПК (in-app + webhook + Telegram)
- **Экспорт** списка ПК в CSV
- **JWT-авторизация** с ролями admin/viewer
## Структура
```
info-user/
├── server/ # FastAPI + веб-интерфейс
│ ├── routes/
│ ├── templates/
│ ├── static/
│ ├── Dockerfile
│ └── main.py
├── agent/ # Python-агент
│ ├── agent.py
│ ├── config.json
│ └── install.sh
├── data/ # SQLite БД (создаётся при запуске)
├── docker-compose.yml
├── nginx.conf
└── README.md
```
## Быстрый старт
1. **Клонировать/скопировать проект** и перейти в папку:
```bash
cd /home/user/moder/info-user
```
2. **Создать файл окружения** (опционально, но рекомендуется):
```bash
cat > .env <<EOF
SECRET_KEY=your-very-secret-key-here
AGENT_TOKEN=your-agent-token-here
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin
HTTP_PORT=80
OFFLINE_THRESHOLD_MINUTES=130
NOTIFICATION_WEBHOOK_URL=
NOTIFICATION_TELEGRAM_BOT_TOKEN=
NOTIFICATION_TELEGRAM_CHAT_ID=
EOF
```
3. **Запустить сервер**:
```bash
docker compose up -d --build
```
4. **Открыть веб-интерфейс**:
```
http://localhost
```
Логин/пароль по умолчанию: `admin` / `admin`.
5. **Установить агент** на клиентский ПК (Linux):
```bash
cd agent
sudo bash install.sh
```
Не забудьте отредактировать `agent/config.json`, указав `server_url` и `agent_token`.
## Настройка агента
Файл `agent/config.json`:
```json
{
"server_url": "http://your-server-ip",
"agent_token": "your-agent-token-here",
"interval_minutes": 60,
"send_public_ip": false
}
```
## Собираемые данные
- Имя хоста, текущий пользователь, локальный IP
- Операционная система
- Uptime
- Загрузка CPU и RAM
- Информация по дискам
- Температура CPU (если доступна)
- Top-10 процессов по CPU
## API
- `POST /api/heartbeat` — приём данных от агента
- `GET /api/computers` — список компьютеров (с фильтрами `status`, `user`, `search`, `sort`, `order`)
- `GET /api/computers/export/csv` — экспорт в CSV
- `GET /api/computers/{id}` — детали ПК с историей
- `GET /api/notifications` — уведомления
- `POST /api/notifications/{id}/read` — отметить прочитанным
- `POST /api/notifications/read-all` — отметить все прочитанными
- `POST /api/auth/login` — вход в веб-интерфейс
- `POST /api/auth/register` — регистрация нового пользователя (viewer)
## Уведомления об офлайн-ПК
ПК считается офлайн, если не присылал heartbeat в течение `OFFLINE_THRESHOLD_MINUTES` минут.
Доступные каналы:
- **In-app** — всегда, список уведомлений в веб-интерфейсе
- **Webhook** — отправка POST JSON на `NOTIFICATION_WEBHOOK_URL`
- **Telegram** — отправка сообщения в чат, если указаны `NOTIFICATION_TELEGRAM_BOT_TOKEN` и `NOTIFICATION_TELEGRAM_CHAT_ID`
## Безопасность
- Смените `SECRET_KEY` и `AGENT_TOKEN` в `.env`.
- Используйте HTTPS в production (nginx + certbot).
- Ограничьте доступ к `/api/heartbeat` по IP или сети.
- Пользователи с ролью `viewer` могут только смотреть дашборд.
## Требования
- Docker + Docker Compose
- Python 3.11+ (для локального запуска без Docker)
- Linux на клиентских ПК для systemd-таймера (для Windows можно запускать через Task Scheduler)
## Планы (TODO)
- [X] Дашборд с фильтрами и сортировкой
- [X] Уведомления об офлайн-ПК (in-app + webhook + Telegram)
- [X] Экспорт в CSV
- [X] JWT-авторизация
- [ ] Email-уведомления (SMTP)
- [ ] Интеграция с Telegram-ботом (двусторонняя)
- [ ] Ролевая модель для уведомлений (какие роли получают какие типы уведомлений)
- [ ] Автоматические ежедневные/еженедельные отчёты (сводка по всем ПК)
- [ ] Поддержка PostgreSQL как альтернативы SQLite
- [ ] Агент для Windows (инсталлятор .msi или NSIS)
- [ ] Агент для macOS (launchd plist)
- [ ] Локализация веб-интерфейса (en/ru)
- [ ] График истории за произвольный период
- [ ] Сравнение нескольких ПК на одном графике
- [ ] Отправка алертов по CPU/RAM/диску (превышение порога)
- [ ] HTTPS из коробки (автоматический Let's Encrypt)
## Лицензия
MIT / как есть.