178 lines
6.5 KiB
Markdown
178 lines
6.5 KiB
Markdown
# 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
|
||
├── agent-deb/ # Исходники .deb пакета (dpkg-deb --build)
|
||
├── 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):
|
||
|
||
### Debian/Ubuntu/Astra Linux (рекомендуется)
|
||
|
||
```bash
|
||
# Установить .deb пакет
|
||
sudo dpkg -i info-user-agent_1.0.0_all.deb
|
||
|
||
# Настроить сервер и токен (интерактивно)
|
||
sudo info-user-agent-setup
|
||
|
||
# Или вручную:
|
||
sudo nano /opt/info-user-agent/config.json
|
||
```
|
||
|
||
Либо через репозиторий (добавив его в `/etc/apt/sources.list.d/`).
|
||
|
||
### Вручную (любой 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 / как есть.
|