Skip to content

Latest commit

 

History

21 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

О проекте

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
Loading

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

Предварительные требования

  • Docker & Docker Compose
  • VK Access Token с правами offline, friends
  • Telegram Bot Token и Chat ID

Конфигурация

Для получения VK Access Token:

  1. Перейдите на https://vk.com/dev
  2. Создайте Standalone-приложение
  3. Получите token с правами: friends, offline

Telegram Бот:

  1. Создайте бота через @BotFather
  2. Получите token бота
  3. Узнайте ваш chat ID (отправьте сообщение боту и проверьте updates)

Установка и запуск

  1. Клонируйте репозиторий:
    git clone https://github.com/witchyburn/vk_friends_analyzer.git
    cd vk_friends_etl_project
  2. Отредактируйте .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
  1. Сделайте исполняемым файл postgres/init-databases.sh:
    chmod +x postgres/init-databases.sh
  2. Запустите приложение:
    docker compose up -d
  3. Откройте интерфейсы:
  1. В Airflow UI перейдите в раздел Admin -> Connections и отредактируйте подключение postgres_default см. в разделе Скриншоты проекта;
  2. В Airflow UI перейдите в раздел Admin -> Variables и внесите значения переменных VK_ACCESS_TOKEN, VK_USER_ID, TG_BOT_TOKEN, TG_CHANNEL_ID (опционально, см. в разделе Скриншоты проекта);
  3. После выполнения шагов 6 и 7 можно запустите даги и убедитесь, что они отработали корректно;
  4. Авторизуйтесь в Metabase, подключитесь к БД;
  5. Все готово для того, чтобы построить аналитический дашборд!

🔄 Планировщик

Airflow DAG'и настроены на ежедневное выполнение в 00:10 и 00:15

Мониторинг и Оповещения

🔴 Удалившие друзья: Уведомления при обнаружении исходящих заявок
🟡 Неактивные друзья: Оповещения о пользователях, давно не заходивших в VK
🟢 Статистика: Ежедневные отчеты об изменениях

📊 Аналитический Дашборд

Metabase дашборд может включать:

  • Динамика количества друзей
  • Географическое распределение
  • Активность друзей
  • Демографическая статистика
  • История изменений и др.

Пример дашборда см. в разделе "Скриншоты проекта".

📈 Мониторинг и логи

  • Airflow UI: Мониторинг выполнения DAG
  • PostgreSQL: Логи изменений в БД
  • Файловые логи: Подробные логи ETL процессов

Скриншоты проекта

Редактирование соединения в Airflow UI
Редактирование соединения в Airflow UI

Добавление переменной в Airflow UI
Добавление переменной в Airflow UI

Лог задачи в Airflow UI
Лог задачи в Airflow UI

Пример дашборда (стр. 1)
Основной дашборд

Пример дашборда (стр. 2)
Основной дашборд

Лицензия

Этот проект распространяется под лицензией MIT. См. файл LICENSE для деталей.

🔗 Полезные ссылки

About

ETL-пайплайн для мониторинга друзей ВКонтакте с системой оповещений и аналитикой. Проект автоматически отслеживает изменения в списке друзей и предоставляет удобный дашборд для анализа социальных связей.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages