ETL-пайплайн для мониторинга друзей ВКонтакте с системой оповещений и аналитикой. Проект автоматически отслеживает изменения в списке друзей и предоставляет удобный дашборд для анализа социальных связей.
- 📈 ETL-процесс: Извлечение данных с помощью VK API, трансформация и загрузка в PostgreSQL;
- 🔔 Система оповещений: Уведомления в Telegram об удаливших друзьях и неактивных пользователях;
- 📊 Визуализация: Интерактивный дашборд в Metabase для анализа портрета друзей пользователя + pgAdmin4 для более удобного взаимодействия с БД;
- 🐳 Контейнеризация: Полная Docker-сборка для простого развертывания;
- ⚙️ Автоматизация: Оркестрация процессов через Apache Airflow.
graph TB
A[VK API] --> B[Apache Airflow]
subgraph B [Apache Airflow DAG]
C[Извлечение данных]
D[Трансформация]
E[Валидация]
H[Telegram Уведомления]
C --> D
D --> E
D --> H
end
E --> F[PostgreSQL]
F --> G[Metabase Dashboard]
I[pgAdmin4] --> F
- Docker & Docker Compose
- VK Access Token с правами offline, friends
- Telegram Bot Token и Chat ID
Для получения VK Access Token:
- Перейдите на https://vk.com/dev
- Создайте Standalone-приложение
- Получите token с правами: friends, offline
Telegram Бот:
- Создайте бота через @BotFather
- Получите token бота
- Узнайте ваш chat ID (отправьте сообщение боту и проверьте updates)
- Клонируйте репозиторий:
git clone https://github.com/witchyburn/vk_friends_analyzer.git
cd vk_friends_etl_project - Отредактируйте
.envфайл:
# Analytical DB
DATABASE_USER=your_username
DATABASE_PASSWORD=your_password
DATABASE_NAME=your_dbname
# Airflow DB
AIRFLOW_DB_NAME=your_airflow_dbname
AIRFLOW_DB_USER=your_airflow_username
AIRFLOW_DB_PASSWORD=your_airflow_password
# Metabase DB
METABASE_DB_NAME=your_metabase_dbname
METABASE_DB_USER=your_metabase_username
METABASE_DB_PASSWORD=your_metabase_password
# pgAdmin4 settings
PGADMIN_DEFAULT_EMAIL=admin@example.com
PGADMIN_DEFAULT_PASSWORD=your_password
# Airflow settings
AIRFLOW__CORE__EXECUTOR=LocalExecutor
AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=postgresql+psycopg2://your_airflow_username:your_airflow_password@postgres/your_airflow_dbname
AIRFLOW__WEBSERVER__DEFAULT_USER_USERNAME=airflow
AIRFLOW__WEBSERVER__DEFAULT_USER_PASSWORD=airflow
AIRFLOW__CORE__DEFAULT_TIMEZONE=UTC
# Other
VK_ACCESS_TOKEN=your_token_here
VK_USER_ID=123456789
LOG_LEVEL=INFO
TG_BOT_TOKEN=your_token_here
TG_CHANNEL_ID=-123456789
- Сделайте исполняемым файл
postgres/init-databases.sh:
chmod +x postgres/init-databases.sh - Запустите приложение:
docker compose up -d - Откройте интерфейсы:
- Airflow: http://localhost:8080
- pgAdmin4: http://localhost:5000
- Metabase: http://localhost:3000
- В Airflow UI перейдите в раздел Admin -> Connections и отредактируйте подключение postgres_default см. в разделе Скриншоты проекта;
- В Airflow UI перейдите в раздел Admin -> Variables и внесите значения переменных VK_ACCESS_TOKEN, VK_USER_ID, TG_BOT_TOKEN, TG_CHANNEL_ID (опционально, см. в разделе Скриншоты проекта);
- После выполнения шагов 6 и 7 можно запустите даги и убедитесь, что они отработали корректно;
- Авторизуйтесь в Metabase, подключитесь к БД;
- Все готово для того, чтобы построить аналитический дашборд!
Airflow DAG'и настроены на ежедневное выполнение в 00:10 и 00:15
🔴 Удалившие друзья: Уведомления при обнаружении исходящих заявок
🟡 Неактивные друзья: Оповещения о пользователях, давно не заходивших в VK
🟢 Статистика: Ежедневные отчеты об изменениях
Metabase дашборд может включать:
- Динамика количества друзей
- Географическое распределение
- Активность друзей
- Демографическая статистика
- История изменений и др.
Пример дашборда см. в разделе "Скриншоты проекта".
- Airflow UI: Мониторинг выполнения DAG
- PostgreSQL: Логи изменений в БД
- Файловые логи: Подробные логи ETL процессов
Этот проект распространяется под лицензией MIT. См. файл LICENSE для деталей.




