Files
info-user/README.md
T

141 lines
4.7 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)
## Лицензия
MIT / как есть.