2026-07-16 14:29:43 +07:00

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

Быстрый старт

  1. Клонировать/скопировать проект и перейти в папку:
cd /home/user/moder/info-user
  1. Создать файл окружения (опционально, но рекомендуется):
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
  1. Запустить сервер:
docker compose up -d --build
  1. Открыть веб-интерфейс:
http://localhost

Логин/пароль по умолчанию: admin / admin.

  1. Установить агент на клиентский ПК (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 — экспорт в 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 — регистрация нового пользователя (только если ещё нет 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 во время работы сервера.

Уведомления об офлайн-ПК

ПК считается офлайн, если не присылал 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 / как есть.

S
Description
PC monitoring dashboard with FastAPI and agents
Readme
203 KiB
Languages
Python 54%
HTML 32.9%
Shell 11.9%
JavaScript 0.5%
CSS 0.4%
Other 0.3%