Files
info-user/README.md
T

6.5 KiB
Raw Blame History

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. Клонировать/скопировать проект и перейти в папку:
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.0_all.deb

# Настроить сервер и токен (интерактивно)
sudo info-user-agent-setup

# Или вручную:
sudo nano /opt/info-user-agent/config.json

Либо через репозиторий (добавив его в /etc/apt/sources.list.d/).

Вручную (любой Linux)

cd agent
sudo bash install.sh

Не забудьте отредактировать agent/config.json, указав server_url и agent_token.

Настройка агента

Файл 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
  • Информация по дискам
  • Температура 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)

  • Дашборд с фильтрами и сортировкой
  • Уведомления об офлайн-ПК (in-app + webhook + Telegram)
  • Экспорт в CSV
  • JWT-авторизация
  • Email-уведомления (SMTP)
  • Интеграция с Telegram-ботом (двусторонняя)
  • Ролевая модель для уведомлений (какие роли получают какие типы уведомлений)
  • Автоматические ежедневные/еженедельные отчёты (сводка по всем ПК)
  • Поддержка PostgreSQL как альтернативы SQLite
  • Агент для Windows (инсталлятор .msi или NSIS)
  • Агент для macOS (launchd plist)
  • Локализация веб-интерфейса (en/ru)
  • График истории за произвольный период
  • Сравнение нескольких ПК на одном графике
  • Отправка алертов по CPU/RAM/диску (превышение порога)
  • HTTPS из коробки (автоматический Let's Encrypt)

Лицензия

MIT / как есть.