InfoUser Monitor
Мониторинг состояния ПК (Windows/Linux/macOS). Агент на каждом компьютере отправляет метрики на сервер раз в час, а веб-интерфейс показывает список машин, пользователей, IP, CPU/RAM/swap, диски, процессы и активные пользовательские сессии.
Возможности
- Дашборд с фильтрами по статусу, пользователю и поиском по хосту/IP/OS
- Детали ПК: графики CPU/RAM/swap за 24 часа, активные сессии, топ процессов, история heartbeats
- Активные сессии: кто и с какого IP залогинен прямо сейчас
- Уведомления об офлайн-ПК (in-app + webhook + Telegram)
- Экспорт списка ПК в CSV
- JWT-авторизация с ролями admin/viewer
- RBAC и аудит-лог: управление пользователями, запись действий админов
- Настройки через веб: токен агента, порог офлайна, уведомления, часовой пояс
- Часовой пояс: хранение в UTC, отображение в выбранном поясе
- RAM и swap: использование в GB и процентах
Структура
info-user/
├── server/ # FastAPI + веб-интерфейс
│ ├── routes/ # API и веб-роуты
│ ├── templates/ # Jinja2-шаблоны
│ ├── static/ # CSS/JS
│ ├── database.py # SQLite и миграции
│ ├── models.py # SQLAlchemy-модели
│ ├── schemas.py # Pydantic-схемы
│ ├── Dockerfile
│ └── main.py
├── agent/ # Python-агент (ручная установка)
│ ├── agent.py
│ ├── config.json
│ └── install.sh
├── agent-deb/ # Исходники .deb пакета (dpkg-deb --build)
├── deploy/ # Массовый деплой агента по SSH
│ ├── deploy-agent.sh
│ ├── ip.txt.example
│ └── README.md
├── data/ # SQLite БД (создаётся при запуске)
├── docker-compose.yml
├── nginx.conf
├── info-user-agent_*.deb
└── README.md
Быстрый старт
- Клонировать/скопировать проект и перейти в папку:
cd /home/user/moder/info-user
- Создать файл окружения (опционально, но рекомендуется):
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
- Запустить сервер:
docker compose up -d --build
- Открыть веб-интерфейс:
http://localhost
Логин/пароль по умолчанию: admin / admin.
- Установить агент на клиентский ПК (Linux):
Debian/Ubuntu/Astra Linux (рекомендуется)
# Установить .deb пакет
sudo dpkg -i info-user-agent_1.0.3_all.deb
# Настроить сервер и токен (интерактивно)
sudo info-user-agent-setup
# Или вручную:
sudo nano /opt/info-user-agent/config.json
Либо через собственный apt-репозиторий, если он настроен на сервере.
Вручную (любой Linux)
cd agent
sudo bash install.sh
Не забудьте отредактировать agent/config.json, указав server_url и agent_token.
Массовый деплой на несколько ПК
Для установки/обновления агента сразу на множестве Linux-хостов используйте скрипт в папке deploy/:
cd deploy
# Подготовьте ip.txt (пример в ip.txt.example) и положите id_rsa рядом
./deploy-agent.sh
Скрипт подключается по SSH (ключ или пароль), устанавливает агент через apt с fallback на dpkg -i, настраивает config.json и запускает таймер. Подробности — в deploy/README.md.
Настройка агента
Файл agent/config.json:
{
"server_url": "http://your-server-ip",
"agent_token": "your-agent-token-here",
"interval_minutes": 60,
"send_public_ip": false
}
Собираемые данные
- Имя хоста, текущий пользователь, локальный IP
- Операционная система
- Uptime
- Загрузка CPU
- RAM: процент, использовано/доступно/всего в GB
- Swap: процент, использовано/свободно/всего в GB
- Информация по дискам
- Температура CPU (если доступна)
- Top-10 процессов по CPU/RAM
- Активные пользовательские сессии (
who -u)
API
POST /api/heartbeat— приём данных от агентаGET /api/computers— список компьютеров (с фильтрамиstatus,user,search,sort,order)GET /api/computers/export/csv— экспорт в CSVGET /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— регистрация нового пользователя (только если ещё нет 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 чата для TelegramTIMEZONE— часовой пояс для отображения времени в веб-интерфейсе
Значения из БД переопределяют .env во время работы сервера.
Уведомления об офлайн-ПК
ПК считается офлайн, если не присылал 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)
- Дашборд с фильтрами и сортировкой
- Уведомления об офлайн-ПК (in-app + webhook + Telegram)
- Экспорт в CSV
- JWT-авторизация
- Ролевая модель admin/viewer
- Аудит-лог
- Runtime-настройки через веб
- Активные пользовательские сессии
- RAM и swap в GB/%
- График swap
- Часовой пояс в веб-интерфейсе
- Email-уведомления (SMTP)
- Интеграция с Telegram-ботом (двусторонняя)
- Ролевая модель для уведомлений (какие роли получают какие типы уведомлений)
- Автоматические ежедневные/еженедельные отчёты (сводка по всем ПК)
- Поддержка PostgreSQL как альтернативы SQLite
- Агент для Windows (инсталлятор .msi или NSIS)
- Агент для macOS (launchd plist)
- Локализация веб-интерфейса (en/ru)
- График истории за произвольный период
- Сравнение нескольких ПК на одном графике
- Отправка алертов по CPU/RAM/диску (превышение порога)
- HTTPS из коробки (автоматический Let's Encrypt)
Лицензия
MIT / как есть.