Веб-приложение для мониторинга онлайн-активности пользователей
WebOnlineMonitor — веб-сервис на Flask для отслеживания и анализа онлайн-активности пользователей. Приложение собирает события активности, хранит их в PostgreSQL и предоставляет удобный интерфейс для просмотра статистики, фильтрации логов и визуализации данных.
- Дашборд — сводная статистика за день / неделю / месяц, графики активности по часам и дням недели, топ пользователей и разбивка по платформам
- Логи активности — таблица событий с фильтрацией по дате и пользователям, сохранение фильтров между сессиями
- Timeline — визуальная временная шкала активности нескольких пользователей одновременно
- Управление пользователями — добавление/удаление отслеживаемых VK-аккаунтов, назначение типов и цветов
- Интервалы опроса — гибкая настройка частоты проверки в зависимости от времени простоя
- Экспорт CSV — выгрузка событий с фильтрацией по датам и пользователям
- Административная панель — управление учётными записями системы, сброс паролей, управление правами
| Компонент | Технология |
|---|---|
| Backend | Python 3, Flask |
| База данных | PostgreSQL + psycopg2 |
| Frontend | Jinja2, Bootstrap, Chart.js |
| Аутентификация | Flask session + Werkzeug |
| Часовые пояса | pytz (Europe/Moscow) |
| WSGI | Gunicorn (wsgi.py) |
WebOnlineMonitor/
├── app.py # Flask-приложение, все маршруты
├── wsgi.py # Точка входа для Gunicorn
├── templates/
│ ├── base.html # Базовый шаблон с навигацией
│ ├── login.html # Страница входа
│ ├── dashboard.html # Главный дашборд
│ ├── logs.html # Журнал событий
│ ├── timeline.html # Временная шкала
│ ├── watched_users.html # Список отслеживаемых
│ ├── user_detail.html # Детальная страница пользователя
│ ├── intervals.html # Настройка интервалов
│ └── admin_users.html # Панель администратора
└── update.sh # Скрипт обновления и перезапуска сервиса
- Python 3.9+
- PostgreSQL 13+
git clone <repo-url>
cd WebOnlineMonitorpython3 -m venv venv
source venv/bin/activate
pip install flask psycopg2-binary pytz werkzeug gunicornВ app.py укажите строку подключения к своей БД:
DB_DSN = "postgresql://user:password@127.0.0.1:5432/dbname"python app.pygunicorn --bind 0.0.0.0:5000 wsgi:appСоздайте файл /etc/systemd/system/webmonitor.service:
[Unit]
Description=WebOnlineMonitor Flask App
After=network.target postgresql.service
[Service]
User=www-data
WorkingDirectory=/opt/WebOnlineMonitor
ExecStart=/opt/WebOnlineMonitor/venv/bin/gunicorn --bind 127.0.0.1:5000 wsgi:app
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.targetЗатем:
systemctl daemon-reload
systemctl enable webmonitor
systemctl start webmonitorДля обновления приложения используйте скрипт update.sh:
chmod +x update.sh
./update.sh| Таблица | Назначение |
|---|---|
app_users |
Учётные записи системы (логин, пароль, роль) |
watched_users |
Отслеживаемые VK-аккаунты |
activity_events |
Журнал событий активности |
platforms |
Справочник платформ (web, mobile, etc.) |
tracking_intervals |
Правила интервалов опроса по типу пользователя |
user_vk_colors |
Персональные цвета пользователей для отображения |
| Маршрут | Описание |
|---|---|
/ |
Редирект на дашборд или логин |
/login |
Вход в систему |
/dashboard |
Главный дашборд со статистикой |
/logs |
Журнал активности с фильтрами |
/timeline |
Временная шкала |
/users |
Список отслеживаемых пользователей |
/users/<vk_id> |
Детальная страница пользователя |
/intervals |
Настройка интервалов опроса |
/export/csv |
Экспорт данных в CSV |
/admin/users |
Панель администратора |