Repository files navigation

Solução de Clickstream para E-commerce

Introdução

Essa solução de Clickstream foi projetada para um sistema de e-commerce fictício, ela permite acompanhar, entender e melhorar como os usuários interagem com seus produtos em tempo real.

Basicamente, ela captura os cliques e as interações dos usuários no site, transformando isso em dados valiosos sobre o comportamento deles. Com tudo processado em tempo real, você consegue ter insights instantâneos para ajustar campanhas de marketing, personalizar a experiência do cliente e tomar decisões estratégicas na hora certa.


Arquitetura

Architecture

Componentes da Arquitetura

ComponenteDescrição
items-frontendInterface usada por usuários de e-commerce para interagir com os itens disponíveis.
items-apiBackend responsável por buscar itens e registrar cliques, chamando a clickstream-api.
clickstream-apiEnvia os eventos de cliques para o Kafka.
Kafka- Armazena eventos de cliques no tópico click_events. Serve como intermediário para sistemas downstream.
KSQLDB- Consome eventos do Kafka. Agrega dados e publica em um tópico de saída (click_counts_table_output).
Schema Registry- Gerencia os esquemas das mensagens trafegadas no Kafka. Garante consistência e validação.
Kafka ConnectConsome dados agregados do Kafka e insere no banco de dados PostgreSQL.
PostgresArmazena dados agregados para persistência.
GrafanaLê os dados do PostgreSQL e permite a visualização de métricas em dashboards acessados por usuários de marketing.
Connect UIInterface para monitorar o Kafka Connect.
Registry UIInterface para gerenciar esquemas no Schema Registry.

Inicializando e Configurando a Solução

Siga os passos abaixo para inicializar e configurar a solução de Clickstream:

Passo 1: Subir os Contêineres com Docker Compose

Acesse o diretório raiz da solução e execute o seguinte comando para construir e iniciar todos os contêineres:

$ docker-compose up --build

Passo 2: Executar o Script de Configuração

Após o Docker Compose inicializar todos os contêineres, conceda permissão de execução ao script de configuração e execute-o:

$ chmod +x setup.sh
$ ./setup.sh

Este script irá configurar os tópicos Kafka, streams e tabelas necessários para o funcionamento da solução.

Passo 3: Criando o Data Source no Grafana

Siga os passos abaixo para criar o Data Source no Grafana:

  1. Acesse o Grafana
  1. Navegue até o menu Data Sources
    No menu lateral, vá até Connections > Data Sources.

  2. Adicionar um novo Data Source
    Clique no botão Add new data source e selecione a opção PostgreSQL.

  3. Configurar o Data Source
    Preencha os campos com as seguintes informações:

  • Host URL: postgres:5432
  • Database Name: db_metrics
  • Username: user_metrics
  • Password: password_metrics
  • TLS/SSL Mode: Disable
  1. Salvar e testar a conexão
    Após preencher os campos, clique no botão Save & Test. Se tudo estiver correto, o Data Source será criado com sucesso.

  2. Obter o UID do Data Source
    Após a criação, observe a URL no navegador. Ela será algo como:
    http://localhost:3000/connections/datasources/edit/ee8bhesmqpczkb

  • O último conjunto de caracteres (ee8bhesmqpczkb) é o UID do Data Source.
  • Copie este valor, pois ele será necessário no próximo passo.

Passo 4: Configurando e Importando o Dashboard

Siga os passos abaixo para configurar e importar o dashboard no Grafana:

  1. Editar o arquivo dashboard.json
    Localize o arquivo dashboard.json na raiz do projeto e substitua o texto <datasource_uid_grafana> pelo UID do Data Source criado no passo anterior.

  2. Acessar o menu Dashboards
    No menu lateral do Grafana, clique em Dashboards.

  3. Criar um novo dashboard

  • Clique no botão New.
  • Em seguida, selecione a opção New dashboard.
  1. Importar o dashboard
  • Clique no botão Import dashboard.
  • Abra o arquivo dashboard.json, copie o conteúdo e cole no campo Import via dashboard JSON model.
  1. Salvar o dashboard
  • Por último, clique no botão Save para finalizar a importação.

Utilizando a Solução

Nota: Para acessar os recursos da solução, é necessário que todas as configurações tenham sido realizadas com sucesso.

  1. Acessando a aplicação web

Architecture

  • Para simular os eventos de cliques experimente clicar nos botões Click Me de cada item.
  1. Visualizando os Dados
  • Os dados em tempo real dos cliques podem ser visualizados no Dashboard no Grafana. Para isso acesse o dashboard no Grafana.

Architecture

  1. Simulando Cliques
  • No diretório raiz do projeto há um script para simular cliques. Execute o comando abaixo:
$ chmod +x simulate_click.sh
$ ./simulate_click.sh

Entendendo o Fluxo de Dados

Data Flow

O fluxo dos dados funciona de forma simples. Toda vez que alguém clica em um item no site, um evento em formato JSON é gerado e enviado para o Kafka, que armazena esses eventos de forma organizada, pronta para ser consumida por outros sistemas.

O KSQLDB entra em ação consumindo esses eventos e processando as informações. Ele cria um fluxo contínuo (stream) que processa os cliques em tempo real e, em seguida, organiza esses cliques em uma tabela que conta o número de cliques por campanha a cada 2 minutos. Esses dados agregados são então enviados para um novo tópico no Kafka.

Posteriormente, o Kafka Connect lê os dados do tópico de agregação e insere no banco de dados PostgreSQL. Durante essa etapa, são aplicadas transformações nos dados, como a conversão dos campos de tempo (start_time e end_time) para o formato de timestamp.

Por fim, o PostgreSQL armazena os dados de forma estruturada e organizada. Esses dados podem ser acessados por ferramentas como Grafana ou Looker, que possibilitam a criação de dashboards atrativos e úteis para análises em tempo real.


Dados no Postgres

Nota: A tabela é criada automaticamente pelo Kafka Connect. Portanto, para que você possa acessá-la é necessários que todas as configurações tenham sido realizadas com sucesso.

A imagem abaixo mostra como os dados são armazenados e organizados depois de persistidos no Postgres.

Data Flow


Outros Recursos

Nota: Para acessar esses recursos é necessário que todas as configurações tenham sido realizadas com sucesso.

  1. Gerenciamento do conectores do Kafka Connect
  1. Gerenciamento do esquemas das mensagens no Schema Registry

About

Solução de Clickstream utilizando o ecossistema da Confluent

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Solução de Clickstream para E-commerce

Introdução

Essa solução de Clickstream foi projetada para um sistema de e-commerce fictício, ela permite acompanhar, entender e melhorar como os usuários interagem com seus produtos em tempo real.

Basicamente, ela captura os cliques e as interações dos usuários no site, transformando isso em dados valiosos sobre o comportamento deles. Com tudo processado em tempo real, você consegue ter insights instantâneos para ajustar campanhas de marketing, personalizar a experiência do cliente e tomar decisões estratégicas na hora certa.


Arquitetura

Architecture

Componentes da Arquitetura

ComponenteDescrição
items-frontendInterface usada por usuários de e-commerce para interagir com os itens disponíveis.
items-apiBackend responsável por buscar itens e registrar cliques, chamando a clickstream-api.
clickstream-apiEnvia os eventos de cliques para o Kafka.
Kafka- Armazena eventos de cliques no tópico click_events. Serve como intermediário para sistemas downstream.
KSQLDB- Consome eventos do Kafka. Agrega dados e publica em um tópico de saída (click_counts_table_output).
Schema Registry- Gerencia os esquemas das mensagens trafegadas no Kafka. Garante consistência e validação.
Kafka ConnectConsome dados agregados do Kafka e insere no banco de dados PostgreSQL.
PostgresArmazena dados agregados para persistência.
GrafanaLê os dados do PostgreSQL e permite a visualização de métricas em dashboards acessados por usuários de marketing.
Connect UIInterface para monitorar o Kafka Connect.
Registry UIInterface para gerenciar esquemas no Schema Registry.

Inicializando e Configurando a Solução

Siga os passos abaixo para inicializar e configurar a solução de Clickstream:

Passo 1: Subir os Contêineres com Docker Compose

Acesse o diretório raiz da solução e execute o seguinte comando para construir e iniciar todos os contêineres:

$ docker-compose up --build

Passo 2: Executar o Script de Configuração

Após o Docker Compose inicializar todos os contêineres, conceda permissão de execução ao script de configuração e execute-o:

$ chmod +x setup.sh
$ ./setup.sh

Este script irá configurar os tópicos Kafka, streams e tabelas necessários para o funcionamento da solução.

Passo 3: Criando o Data Source no Grafana

Siga os passos abaixo para criar o Data Source no Grafana:

  1. Acesse o Grafana
  1. Navegue até o menu Data Sources
    No menu lateral, vá até Connections > Data Sources.

  2. Adicionar um novo Data Source
    Clique no botão Add new data source e selecione a opção PostgreSQL.

  3. Configurar o Data Source
    Preencha os campos com as seguintes informações:

  • Host URL: postgres:5432
  • Database Name: db_metrics
  • Username: user_metrics
  • Password: password_metrics
  • TLS/SSL Mode: Disable
  1. Salvar e testar a conexão
    Após preencher os campos, clique no botão Save & Test. Se tudo estiver correto, o Data Source será criado com sucesso.

  2. Obter o UID do Data Source
    Após a criação, observe a URL no navegador. Ela será algo como:
    http://localhost:3000/connections/datasources/edit/ee8bhesmqpczkb

  • O último conjunto de caracteres (ee8bhesmqpczkb) é o UID do Data Source.
  • Copie este valor, pois ele será necessário no próximo passo.

Passo 4: Configurando e Importando o Dashboard

Siga os passos abaixo para configurar e importar o dashboard no Grafana:

  1. Editar o arquivo dashboard.json
    Localize o arquivo dashboard.json na raiz do projeto e substitua o texto <datasource_uid_grafana> pelo UID do Data Source criado no passo anterior.

  2. Acessar o menu Dashboards
    No menu lateral do Grafana, clique em Dashboards.

  3. Criar um novo dashboard

  • Clique no botão New.
  • Em seguida, selecione a opção New dashboard.
  1. Importar o dashboard
  • Clique no botão Import dashboard.
  • Abra o arquivo dashboard.json, copie o conteúdo e cole no campo Import via dashboard JSON model.
  1. Salvar o dashboard
  • Por último, clique no botão Save para finalizar a importação.

Utilizando a Solução

Nota: Para acessar os recursos da solução, é necessário que todas as configurações tenham sido realizadas com sucesso.

  1. Acessando a aplicação web

Architecture

  • Para simular os eventos de cliques experimente clicar nos botões Click Me de cada item.
  1. Visualizando os Dados
  • Os dados em tempo real dos cliques podem ser visualizados no Dashboard no Grafana. Para isso acesse o dashboard no Grafana.

Architecture

  1. Simulando Cliques
  • No diretório raiz do projeto há um script para simular cliques. Execute o comando abaixo:
$ chmod +x simulate_click.sh
$ ./simulate_click.sh

Entendendo o Fluxo de Dados

Data Flow

O fluxo dos dados funciona de forma simples. Toda vez que alguém clica em um item no site, um evento em formato JSON é gerado e enviado para o Kafka, que armazena esses eventos de forma organizada, pronta para ser consumida por outros sistemas.

O KSQLDB entra em ação consumindo esses eventos e processando as informações. Ele cria um fluxo contínuo (stream) que processa os cliques em tempo real e, em seguida, organiza esses cliques em uma tabela que conta o número de cliques por campanha a cada 2 minutos. Esses dados agregados são então enviados para um novo tópico no Kafka.

Posteriormente, o Kafka Connect lê os dados do tópico de agregação e insere no banco de dados PostgreSQL. Durante essa etapa, são aplicadas transformações nos dados, como a conversão dos campos de tempo (start_time e end_time) para o formato de timestamp.

Por fim, o PostgreSQL armazena os dados de forma estruturada e organizada. Esses dados podem ser acessados por ferramentas como Grafana ou Looker, que possibilitam a criação de dashboards atrativos e úteis para análises em tempo real.


Dados no Postgres

Nota: A tabela é criada automaticamente pelo Kafka Connect. Portanto, para que você possa acessá-la é necessários que todas as configurações tenham sido realizadas com sucesso.

A imagem abaixo mostra como os dados são armazenados e organizados depois de persistidos no Postgres.

Data Flow


Outros Recursos

Nota: Para acessar esses recursos é necessário que todas as configurações tenham sido realizadas com sucesso.

  1. Gerenciamento do conectores do Kafka Connect
  1. Gerenciamento do esquemas das mensagens no Schema Registry

About

Solução de Clickstream utilizando o ecossistema da Confluent

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Solução de Clickstream para E-commerce

Introdução

Essa solução de Clickstream foi projetada para um sistema de e-commerce fictício, ela permite acompanhar, entender e melhorar como os usuários interagem com seus produtos em tempo real.

Basicamente, ela captura os cliques e as interações dos usuários no site, transformando isso em dados valiosos sobre o comportamento deles. Com tudo processado em tempo real, você consegue ter insights instantâneos para ajustar campanhas de marketing, personalizar a experiência do cliente e tomar decisões estratégicas na hora certa.


Arquitetura

Architecture

Componentes da Arquitetura

ComponenteDescrição
items-frontendInterface usada por usuários de e-commerce para interagir com os itens disponíveis.
items-apiBackend responsável por buscar itens e registrar cliques, chamando a clickstream-api.
clickstream-apiEnvia os eventos de cliques para o Kafka.
Kafka- Armazena eventos de cliques no tópico click_events. Serve como intermediário para sistemas downstream.
KSQLDB- Consome eventos do Kafka. Agrega dados e publica em um tópico de saída (click_counts_table_output).
Schema Registry- Gerencia os esquemas das mensagens trafegadas no Kafka. Garante consistência e validação.
Kafka ConnectConsome dados agregados do Kafka e insere no banco de dados PostgreSQL.
PostgresArmazena dados agregados para persistência.
GrafanaLê os dados do PostgreSQL e permite a visualização de métricas em dashboards acessados por usuários de marketing.
Connect UIInterface para monitorar o Kafka Connect.
Registry UIInterface para gerenciar esquemas no Schema Registry.

Inicializando e Configurando a Solução

Siga os passos abaixo para inicializar e configurar a solução de Clickstream:

Passo 1: Subir os Contêineres com Docker Compose

Acesse o diretório raiz da solução e execute o seguinte comando para construir e iniciar todos os contêineres:

$ docker-compose up --build

Passo 2: Executar o Script de Configuração

Após o Docker Compose inicializar todos os contêineres, conceda permissão de execução ao script de configuração e execute-o:

$ chmod +x setup.sh
$ ./setup.sh

Este script irá configurar os tópicos Kafka, streams e tabelas necessários para o funcionamento da solução.

Passo 3: Criando o Data Source no Grafana

Siga os passos abaixo para criar o Data Source no Grafana:

  1. Acesse o Grafana
  1. Navegue até o menu Data Sources
    No menu lateral, vá até Connections > Data Sources.

  2. Adicionar um novo Data Source
    Clique no botão Add new data source e selecione a opção PostgreSQL.

  3. Configurar o Data Source
    Preencha os campos com as seguintes informações:

  • Host URL: postgres:5432
  • Database Name: db_metrics
  • Username: user_metrics
  • Password: password_metrics
  • TLS/SSL Mode: Disable
  1. Salvar e testar a conexão
    Após preencher os campos, clique no botão Save & Test. Se tudo estiver correto, o Data Source será criado com sucesso.

  2. Obter o UID do Data Source
    Após a criação, observe a URL no navegador. Ela será algo como:
    http://localhost:3000/connections/datasources/edit/ee8bhesmqpczkb

  • O último conjunto de caracteres (ee8bhesmqpczkb) é o UID do Data Source.
  • Copie este valor, pois ele será necessário no próximo passo.

Passo 4: Configurando e Importando o Dashboard

Siga os passos abaixo para configurar e importar o dashboard no Grafana:

  1. Editar o arquivo dashboard.json
    Localize o arquivo dashboard.json na raiz do projeto e substitua o texto <datasource_uid_grafana> pelo UID do Data Source criado no passo anterior.

  2. Acessar o menu Dashboards
    No menu lateral do Grafana, clique em Dashboards.

  3. Criar um novo dashboard

  • Clique no botão New.
  • Em seguida, selecione a opção New dashboard.
  1. Importar o dashboard
  • Clique no botão Import dashboard.
  • Abra o arquivo dashboard.json, copie o conteúdo e cole no campo Import via dashboard JSON model.
  1. Salvar o dashboard
  • Por último, clique no botão Save para finalizar a importação.

Utilizando a Solução

Nota: Para acessar os recursos da solução, é necessário que todas as configurações tenham sido realizadas com sucesso.

  1. Acessando a aplicação web

Architecture

  • Para simular os eventos de cliques experimente clicar nos botões Click Me de cada item.
  1. Visualizando os Dados
  • Os dados em tempo real dos cliques podem ser visualizados no Dashboard no Grafana. Para isso acesse o dashboard no Grafana.

Architecture

  1. Simulando Cliques
  • No diretório raiz do projeto há um script para simular cliques. Execute o comando abaixo:
$ chmod +x simulate_click.sh
$ ./simulate_click.sh

Entendendo o Fluxo de Dados

Data Flow

O fluxo dos dados funciona de forma simples. Toda vez que alguém clica em um item no site, um evento em formato JSON é gerado e enviado para o Kafka, que armazena esses eventos de forma organizada, pronta para ser consumida por outros sistemas.

O KSQLDB entra em ação consumindo esses eventos e processando as informações. Ele cria um fluxo contínuo (stream) que processa os cliques em tempo real e, em seguida, organiza esses cliques em uma tabela que conta o número de cliques por campanha a cada 2 minutos. Esses dados agregados são então enviados para um novo tópico no Kafka.

Posteriormente, o Kafka Connect lê os dados do tópico de agregação e insere no banco de dados PostgreSQL. Durante essa etapa, são aplicadas transformações nos dados, como a conversão dos campos de tempo (start_time e end_time) para o formato de timestamp.

Por fim, o PostgreSQL armazena os dados de forma estruturada e organizada. Esses dados podem ser acessados por ferramentas como Grafana ou Looker, que possibilitam a criação de dashboards atrativos e úteis para análises em tempo real.


Dados no Postgres

Nota: A tabela é criada automaticamente pelo Kafka Connect. Portanto, para que você possa acessá-la é necessários que todas as configurações tenham sido realizadas com sucesso.

A imagem abaixo mostra como os dados são armazenados e organizados depois de persistidos no Postgres.

Data Flow


Outros Recursos

Nota: Para acessar esses recursos é necessário que todas as configurações tenham sido realizadas com sucesso.

  1. Gerenciamento do conectores do Kafka Connect
  1. Gerenciamento do esquemas das mensagens no Schema Registry

About

Solução de Clickstream utilizando o ecossistema da Confluent

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Solução de Clickstream para E-commerce

Introdução

Essa solução de Clickstream foi projetada para um sistema de e-commerce fictício, ela permite acompanhar, entender e melhorar como os usuários interagem com seus produtos em tempo real.

Basicamente, ela captura os cliques e as interações dos usuários no site, transformando isso em dados valiosos sobre o comportamento deles. Com tudo processado em tempo real, você consegue ter insights instantâneos para ajustar campanhas de marketing, personalizar a experiência do cliente e tomar decisões estratégicas na hora certa.


Arquitetura

Architecture

Componentes da Arquitetura

ComponenteDescrição
items-frontendInterface usada por usuários de e-commerce para interagir com os itens disponíveis.
items-apiBackend responsável por buscar itens e registrar cliques, chamando a clickstream-api.
clickstream-apiEnvia os eventos de cliques para o Kafka.
Kafka- Armazena eventos de cliques no tópico click_events. Serve como intermediário para sistemas downstream.
KSQLDB- Consome eventos do Kafka. Agrega dados e publica em um tópico de saída (click_counts_table_output).
Schema Registry- Gerencia os esquemas das mensagens trafegadas no Kafka. Garante consistência e validação.
Kafka ConnectConsome dados agregados do Kafka e insere no banco de dados PostgreSQL.
PostgresArmazena dados agregados para persistência.
GrafanaLê os dados do PostgreSQL e permite a visualização de métricas em dashboards acessados por usuários de marketing.
Connect UIInterface para monitorar o Kafka Connect.
Registry UIInterface para gerenciar esquemas no Schema Registry.

Inicializando e Configurando a Solução

Siga os passos abaixo para inicializar e configurar a solução de Clickstream:

Passo 1: Subir os Contêineres com Docker Compose

Acesse o diretório raiz da solução e execute o seguinte comando para construir e iniciar todos os contêineres:

$ docker-compose up --build

Passo 2: Executar o Script de Configuração

Após o Docker Compose inicializar todos os contêineres, conceda permissão de execução ao script de configuração e execute-o:

$ chmod +x setup.sh
$ ./setup.sh

Este script irá configurar os tópicos Kafka, streams e tabelas necessários para o funcionamento da solução.

Passo 3: Criando o Data Source no Grafana

Siga os passos abaixo para criar o Data Source no Grafana:

  1. Acesse o Grafana
  1. Navegue até o menu Data Sources
    No menu lateral, vá até Connections > Data Sources.

  2. Adicionar um novo Data Source
    Clique no botão Add new data source e selecione a opção PostgreSQL.

  3. Configurar o Data Source
    Preencha os campos com as seguintes informações:

  • Host URL: postgres:5432
  • Database Name: db_metrics
  • Username: user_metrics
  • Password: password_metrics
  • TLS/SSL Mode: Disable
  1. Salvar e testar a conexão
    Após preencher os campos, clique no botão Save & Test. Se tudo estiver correto, o Data Source será criado com sucesso.

  2. Obter o UID do Data Source
    Após a criação, observe a URL no navegador. Ela será algo como:
    http://localhost:3000/connections/datasources/edit/ee8bhesmqpczkb

  • O último conjunto de caracteres (ee8bhesmqpczkb) é o UID do Data Source.
  • Copie este valor, pois ele será necessário no próximo passo.

Passo 4: Configurando e Importando o Dashboard

Siga os passos abaixo para configurar e importar o dashboard no Grafana:

  1. Editar o arquivo dashboard.json
    Localize o arquivo dashboard.json na raiz do projeto e substitua o texto <datasource_uid_grafana> pelo UID do Data Source criado no passo anterior.

  2. Acessar o menu Dashboards
    No menu lateral do Grafana, clique em Dashboards.

  3. Criar um novo dashboard

  • Clique no botão New.
  • Em seguida, selecione a opção New dashboard.
  1. Importar o dashboard
  • Clique no botão Import dashboard.
  • Abra o arquivo dashboard.json, copie o conteúdo e cole no campo Import via dashboard JSON model.
  1. Salvar o dashboard
  • Por último, clique no botão Save para finalizar a importação.

Utilizando a Solução

Nota: Para acessar os recursos da solução, é necessário que todas as configurações tenham sido realizadas com sucesso.

  1. Acessando a aplicação web

Architecture

  • Para simular os eventos de cliques experimente clicar nos botões Click Me de cada item.
  1. Visualizando os Dados
  • Os dados em tempo real dos cliques podem ser visualizados no Dashboard no Grafana. Para isso acesse o dashboard no Grafana.

Architecture

  1. Simulando Cliques
  • No diretório raiz do projeto há um script para simular cliques. Execute o comando abaixo:
$ chmod +x simulate_click.sh
$ ./simulate_click.sh

Entendendo o Fluxo de Dados

Data Flow

O fluxo dos dados funciona de forma simples. Toda vez que alguém clica em um item no site, um evento em formato JSON é gerado e enviado para o Kafka, que armazena esses eventos de forma organizada, pronta para ser consumida por outros sistemas.

O KSQLDB entra em ação consumindo esses eventos e processando as informações. Ele cria um fluxo contínuo (stream) que processa os cliques em tempo real e, em seguida, organiza esses cliques em uma tabela que conta o número de cliques por campanha a cada 2 minutos. Esses dados agregados são então enviados para um novo tópico no Kafka.

Posteriormente, o Kafka Connect lê os dados do tópico de agregação e insere no banco de dados PostgreSQL. Durante essa etapa, são aplicadas transformações nos dados, como a conversão dos campos de tempo (start_time e end_time) para o formato de timestamp.

Por fim, o PostgreSQL armazena os dados de forma estruturada e organizada. Esses dados podem ser acessados por ferramentas como Grafana ou Looker, que possibilitam a criação de dashboards atrativos e úteis para análises em tempo real.


Dados no Postgres

Nota: A tabela é criada automaticamente pelo Kafka Connect. Portanto, para que você possa acessá-la é necessários que todas as configurações tenham sido realizadas com sucesso.

A imagem abaixo mostra como os dados são armazenados e organizados depois de persistidos no Postgres.

Data Flow


Outros Recursos

Nota: Para acessar esses recursos é necessário que todas as configurações tenham sido realizadas com sucesso.

  1. Gerenciamento do conectores do Kafka Connect
  1. Gerenciamento do esquemas das mensagens no Schema Registry

About

Solução de Clickstream utilizando o ecossistema da Confluent

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Solução de Clickstream para E-commerce

Introdução

Essa solução de Clickstream foi projetada para um sistema de e-commerce fictício, ela permite acompanhar, entender e melhorar como os usuários interagem com seus produtos em tempo real.

Basicamente, ela captura os cliques e as interações dos usuários no site, transformando isso em dados valiosos sobre o comportamento deles. Com tudo processado em tempo real, você consegue ter insights instantâneos para ajustar campanhas de marketing, personalizar a experiência do cliente e tomar decisões estratégicas na hora certa.


Arquitetura

Architecture

Componentes da Arquitetura

ComponenteDescrição
items-frontendInterface usada por usuários de e-commerce para interagir com os itens disponíveis.
items-apiBackend responsável por buscar itens e registrar cliques, chamando a clickstream-api.
clickstream-apiEnvia os eventos de cliques para o Kafka.
Kafka- Armazena eventos de cliques no tópico click_events. Serve como intermediário para sistemas downstream.
KSQLDB- Consome eventos do Kafka. Agrega dados e publica em um tópico de saída (click_counts_table_output).
Schema Registry- Gerencia os esquemas das mensagens trafegadas no Kafka. Garante consistência e validação.
Kafka ConnectConsome dados agregados do Kafka e insere no banco de dados PostgreSQL.
PostgresArmazena dados agregados para persistência.
GrafanaLê os dados do PostgreSQL e permite a visualização de métricas em dashboards acessados por usuários de marketing.
Connect UIInterface para monitorar o Kafka Connect.
Registry UIInterface para gerenciar esquemas no Schema Registry.

Inicializando e Configurando a Solução

Siga os passos abaixo para inicializar e configurar a solução de Clickstream:

Passo 1: Subir os Contêineres com Docker Compose

Acesse o diretório raiz da solução e execute o seguinte comando para construir e iniciar todos os contêineres:

$ docker-compose up --build

Passo 2: Executar o Script de Configuração

Após o Docker Compose inicializar todos os contêineres, conceda permissão de execução ao script de configuração e execute-o:

$ chmod +x setup.sh
$ ./setup.sh

Este script irá configurar os tópicos Kafka, streams e tabelas necessários para o funcionamento da solução.

Passo 3: Criando o Data Source no Grafana

Siga os passos abaixo para criar o Data Source no Grafana:

  1. Acesse o Grafana
  1. Navegue até o menu Data Sources
    No menu lateral, vá até Connections > Data Sources.

  2. Adicionar um novo Data Source
    Clique no botão Add new data source e selecione a opção PostgreSQL.

  3. Configurar o Data Source
    Preencha os campos com as seguintes informações:

  • Host URL: postgres:5432
  • Database Name: db_metrics
  • Username: user_metrics
  • Password: password_metrics
  • TLS/SSL Mode: Disable
  1. Salvar e testar a conexão
    Após preencher os campos, clique no botão Save & Test. Se tudo estiver correto, o Data Source será criado com sucesso.

  2. Obter o UID do Data Source
    Após a criação, observe a URL no navegador. Ela será algo como:
    http://localhost:3000/connections/datasources/edit/ee8bhesmqpczkb

  • O último conjunto de caracteres (ee8bhesmqpczkb) é o UID do Data Source.
  • Copie este valor, pois ele será necessário no próximo passo.

Passo 4: Configurando e Importando o Dashboard

Siga os passos abaixo para configurar e importar o dashboard no Grafana:

  1. Editar o arquivo dashboard.json
    Localize o arquivo dashboard.json na raiz do projeto e substitua o texto <datasource_uid_grafana> pelo UID do Data Source criado no passo anterior.

  2. Acessar o menu Dashboards
    No menu lateral do Grafana, clique em Dashboards.

  3. Criar um novo dashboard

  • Clique no botão New.
  • Em seguida, selecione a opção New dashboard.
  1. Importar o dashboard
  • Clique no botão Import dashboard.
  • Abra o arquivo dashboard.json, copie o conteúdo e cole no campo Import via dashboard JSON model.
  1. Salvar o dashboard
  • Por último, clique no botão Save para finalizar a importação.

Utilizando a Solução

Nota: Para acessar os recursos da solução, é necessário que todas as configurações tenham sido realizadas com sucesso.

  1. Acessando a aplicação web

Architecture

  • Para simular os eventos de cliques experimente clicar nos botões Click Me de cada item.
  1. Visualizando os Dados
  • Os dados em tempo real dos cliques podem ser visualizados no Dashboard no Grafana. Para isso acesse o dashboard no Grafana.

Architecture

  1. Simulando Cliques
  • No diretório raiz do projeto há um script para simular cliques. Execute o comando abaixo:
$ chmod +x simulate_click.sh
$ ./simulate_click.sh

Entendendo o Fluxo de Dados

Data Flow

O fluxo dos dados funciona de forma simples. Toda vez que alguém clica em um item no site, um evento em formato JSON é gerado e enviado para o Kafka, que armazena esses eventos de forma organizada, pronta para ser consumida por outros sistemas.

O KSQLDB entra em ação consumindo esses eventos e processando as informações. Ele cria um fluxo contínuo (stream) que processa os cliques em tempo real e, em seguida, organiza esses cliques em uma tabela que conta o número de cliques por campanha a cada 2 minutos. Esses dados agregados são então enviados para um novo tópico no Kafka.

Posteriormente, o Kafka Connect lê os dados do tópico de agregação e insere no banco de dados PostgreSQL. Durante essa etapa, são aplicadas transformações nos dados, como a conversão dos campos de tempo (start_time e end_time) para o formato de timestamp.

Por fim, o PostgreSQL armazena os dados de forma estruturada e organizada. Esses dados podem ser acessados por ferramentas como Grafana ou Looker, que possibilitam a criação de dashboards atrativos e úteis para análises em tempo real.


Dados no Postgres

Nota: A tabela é criada automaticamente pelo Kafka Connect. Portanto, para que você possa acessá-la é necessários que todas as configurações tenham sido realizadas com sucesso.

A imagem abaixo mostra como os dados são armazenados e organizados depois de persistidos no Postgres.

Data Flow


Outros Recursos

Nota: Para acessar esses recursos é necessário que todas as configurações tenham sido realizadas com sucesso.

  1. Gerenciamento do conectores do Kafka Connect
  1. Gerenciamento do esquemas das mensagens no Schema Registry

About

Solução de Clickstream utilizando o ecossistema da Confluent

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Solução de Clickstream para E-commerce

Introdução

Essa solução de Clickstream foi projetada para um sistema de e-commerce fictício, ela permite acompanhar, entender e melhorar como os usuários interagem com seus produtos em tempo real.

Basicamente, ela captura os cliques e as interações dos usuários no site, transformando isso em dados valiosos sobre o comportamento deles. Com tudo processado em tempo real, você consegue ter insights instantâneos para ajustar campanhas de marketing, personalizar a experiência do cliente e tomar decisões estratégicas na hora certa.


Arquitetura

Architecture

Componentes da Arquitetura

ComponenteDescrição
items-frontendInterface usada por usuários de e-commerce para interagir com os itens disponíveis.
items-apiBackend responsável por buscar itens e registrar cliques, chamando a clickstream-api.
clickstream-apiEnvia os eventos de cliques para o Kafka.
Kafka- Armazena eventos de cliques no tópico click_events. Serve como intermediário para sistemas downstream.
KSQLDB- Consome eventos do Kafka. Agrega dados e publica em um tópico de saída (click_counts_table_output).
Schema Registry- Gerencia os esquemas das mensagens trafegadas no Kafka. Garante consistência e validação.
Kafka ConnectConsome dados agregados do Kafka e insere no banco de dados PostgreSQL.
PostgresArmazena dados agregados para persistência.
GrafanaLê os dados do PostgreSQL e permite a visualização de métricas em dashboards acessados por usuários de marketing.
Connect UIInterface para monitorar o Kafka Connect.
Registry UIInterface para gerenciar esquemas no Schema Registry.

Inicializando e Configurando a Solução

Siga os passos abaixo para inicializar e configurar a solução de Clickstream:

Passo 1: Subir os Contêineres com Docker Compose

Acesse o diretório raiz da solução e execute o seguinte comando para construir e iniciar todos os contêineres:

$ docker-compose up --build

Passo 2: Executar o Script de Configuração

Após o Docker Compose inicializar todos os contêineres, conceda permissão de execução ao script de configuração e execute-o:

$ chmod +x setup.sh
$ ./setup.sh

Este script irá configurar os tópicos Kafka, streams e tabelas necessários para o funcionamento da solução.

Passo 3: Criando o Data Source no Grafana

Siga os passos abaixo para criar o Data Source no Grafana:

  1. Acesse o Grafana
  1. Navegue até o menu Data Sources
    No menu lateral, vá até Connections > Data Sources.

  2. Adicionar um novo Data Source
    Clique no botão Add new data source e selecione a opção PostgreSQL.

  3. Configurar o Data Source
    Preencha os campos com as seguintes informações:

  • Host URL: postgres:5432
  • Database Name: db_metrics
  • Username: user_metrics
  • Password: password_metrics
  • TLS/SSL Mode: Disable
  1. Salvar e testar a conexão
    Após preencher os campos, clique no botão Save & Test. Se tudo estiver correto, o Data Source será criado com sucesso.

  2. Obter o UID do Data Source
    Após a criação, observe a URL no navegador. Ela será algo como:
    http://localhost:3000/connections/datasources/edit/ee8bhesmqpczkb

  • O último conjunto de caracteres (ee8bhesmqpczkb) é o UID do Data Source.
  • Copie este valor, pois ele será necessário no próximo passo.

Passo 4: Configurando e Importando o Dashboard

Siga os passos abaixo para configurar e importar o dashboard no Grafana:

  1. Editar o arquivo dashboard.json
    Localize o arquivo dashboard.json na raiz do projeto e substitua o texto <datasource_uid_grafana> pelo UID do Data Source criado no passo anterior.

  2. Acessar o menu Dashboards
    No menu lateral do Grafana, clique em Dashboards.

  3. Criar um novo dashboard

  • Clique no botão New.
  • Em seguida, selecione a opção New dashboard.
  1. Importar o dashboard
  • Clique no botão Import dashboard.
  • Abra o arquivo dashboard.json, copie o conteúdo e cole no campo Import via dashboard JSON model.
  1. Salvar o dashboard
  • Por último, clique no botão Save para finalizar a importação.

Utilizando a Solução

Nota: Para acessar os recursos da solução, é necessário que todas as configurações tenham sido realizadas com sucesso.

  1. Acessando a aplicação web

Architecture

  • Para simular os eventos de cliques experimente clicar nos botões Click Me de cada item.
  1. Visualizando os Dados
  • Os dados em tempo real dos cliques podem ser visualizados no Dashboard no Grafana. Para isso acesse o dashboard no Grafana.

Architecture

  1. Simulando Cliques
  • No diretório raiz do projeto há um script para simular cliques. Execute o comando abaixo:
$ chmod +x simulate_click.sh
$ ./simulate_click.sh

Entendendo o Fluxo de Dados

Data Flow

O fluxo dos dados funciona de forma simples. Toda vez que alguém clica em um item no site, um evento em formato JSON é gerado e enviado para o Kafka, que armazena esses eventos de forma organizada, pronta para ser consumida por outros sistemas.

O KSQLDB entra em ação consumindo esses eventos e processando as informações. Ele cria um fluxo contínuo (stream) que processa os cliques em tempo real e, em seguida, organiza esses cliques em uma tabela que conta o número de cliques por campanha a cada 2 minutos. Esses dados agregados são então enviados para um novo tópico no Kafka.

Posteriormente, o Kafka Connect lê os dados do tópico de agregação e insere no banco de dados PostgreSQL. Durante essa etapa, são aplicadas transformações nos dados, como a conversão dos campos de tempo (start_time e end_time) para o formato de timestamp.

Por fim, o PostgreSQL armazena os dados de forma estruturada e organizada. Esses dados podem ser acessados por ferramentas como Grafana ou Looker, que possibilitam a criação de dashboards atrativos e úteis para análises em tempo real.


Dados no Postgres

Nota: A tabela é criada automaticamente pelo Kafka Connect. Portanto, para que você possa acessá-la é necessários que todas as configurações tenham sido realizadas com sucesso.

A imagem abaixo mostra como os dados são armazenados e organizados depois de persistidos no Postgres.

Data Flow


Outros Recursos

Nota: Para acessar esses recursos é necessário que todas as configurações tenham sido realizadas com sucesso.

  1. Gerenciamento do conectores do Kafka Connect
  1. Gerenciamento do esquemas das mensagens no Schema Registry

About

Solução de Clickstream utilizando o ecossistema da Confluent

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Solução de Clickstream para E-commerce

Introdução

Essa solução de Clickstream foi projetada para um sistema de e-commerce fictício, ela permite acompanhar, entender e melhorar como os usuários interagem com seus produtos em tempo real.

Basicamente, ela captura os cliques e as interações dos usuários no site, transformando isso em dados valiosos sobre o comportamento deles. Com tudo processado em tempo real, você consegue ter insights instantâneos para ajustar campanhas de marketing, personalizar a experiência do cliente e tomar decisões estratégicas na hora certa.


Arquitetura

Architecture

Componentes da Arquitetura

ComponenteDescrição
items-frontendInterface usada por usuários de e-commerce para interagir com os itens disponíveis.
items-apiBackend responsável por buscar itens e registrar cliques, chamando a clickstream-api.
clickstream-apiEnvia os eventos de cliques para o Kafka.
Kafka- Armazena eventos de cliques no tópico click_events. Serve como intermediário para sistemas downstream.
KSQLDB- Consome eventos do Kafka. Agrega dados e publica em um tópico de saída (click_counts_table_output).
Schema Registry- Gerencia os esquemas das mensagens trafegadas no Kafka. Garante consistência e validação.
Kafka ConnectConsome dados agregados do Kafka e insere no banco de dados PostgreSQL.
PostgresArmazena dados agregados para persistência.
GrafanaLê os dados do PostgreSQL e permite a visualização de métricas em dashboards acessados por usuários de marketing.
Connect UIInterface para monitorar o Kafka Connect.
Registry UIInterface para gerenciar esquemas no Schema Registry.

Inicializando e Configurando a Solução

Siga os passos abaixo para inicializar e configurar a solução de Clickstream:

Passo 1: Subir os Contêineres com Docker Compose

Acesse o diretório raiz da solução e execute o seguinte comando para construir e iniciar todos os contêineres:

$ docker-compose up --build

Passo 2: Executar o Script de Configuração

Após o Docker Compose inicializar todos os contêineres, conceda permissão de execução ao script de configuração e execute-o:

$ chmod +x setup.sh
$ ./setup.sh

Este script irá configurar os tópicos Kafka, streams e tabelas necessários para o funcionamento da solução.

Passo 3: Criando o Data Source no Grafana

Siga os passos abaixo para criar o Data Source no Grafana:

  1. Acesse o Grafana
  1. Navegue até o menu Data Sources
    No menu lateral, vá até Connections > Data Sources.

  2. Adicionar um novo Data Source
    Clique no botão Add new data source e selecione a opção PostgreSQL.

  3. Configurar o Data Source
    Preencha os campos com as seguintes informações:

  • Host URL: postgres:5432
  • Database Name: db_metrics
  • Username: user_metrics
  • Password: password_metrics
  • TLS/SSL Mode: Disable
  1. Salvar e testar a conexão
    Após preencher os campos, clique no botão Save & Test. Se tudo estiver correto, o Data Source será criado com sucesso.

  2. Obter o UID do Data Source
    Após a criação, observe a URL no navegador. Ela será algo como:
    http://localhost:3000/connections/datasources/edit/ee8bhesmqpczkb

  • O último conjunto de caracteres (ee8bhesmqpczkb) é o UID do Data Source.
  • Copie este valor, pois ele será necessário no próximo passo.

Passo 4: Configurando e Importando o Dashboard

Siga os passos abaixo para configurar e importar o dashboard no Grafana:

  1. Editar o arquivo dashboard.json
    Localize o arquivo dashboard.json na raiz do projeto e substitua o texto <datasource_uid_grafana> pelo UID do Data Source criado no passo anterior.

  2. Acessar o menu Dashboards
    No menu lateral do Grafana, clique em Dashboards.

  3. Criar um novo dashboard

  • Clique no botão New.
  • Em seguida, selecione a opção New dashboard.
  1. Importar o dashboard
  • Clique no botão Import dashboard.
  • Abra o arquivo dashboard.json, copie o conteúdo e cole no campo Import via dashboard JSON model.
  1. Salvar o dashboard
  • Por último, clique no botão Save para finalizar a importação.

Utilizando a Solução

Nota: Para acessar os recursos da solução, é necessário que todas as configurações tenham sido realizadas com sucesso.

  1. Acessando a aplicação web

Architecture

  • Para simular os eventos de cliques experimente clicar nos botões Click Me de cada item.
  1. Visualizando os Dados
  • Os dados em tempo real dos cliques podem ser visualizados no Dashboard no Grafana. Para isso acesse o dashboard no Grafana.

Architecture

  1. Simulando Cliques
  • No diretório raiz do projeto há um script para simular cliques. Execute o comando abaixo:
$ chmod +x simulate_click.sh
$ ./simulate_click.sh

Entendendo o Fluxo de Dados

Data Flow

O fluxo dos dados funciona de forma simples. Toda vez que alguém clica em um item no site, um evento em formato JSON é gerado e enviado para o Kafka, que armazena esses eventos de forma organizada, pronta para ser consumida por outros sistemas.

O KSQLDB entra em ação consumindo esses eventos e processando as informações. Ele cria um fluxo contínuo (stream) que processa os cliques em tempo real e, em seguida, organiza esses cliques em uma tabela que conta o número de cliques por campanha a cada 2 minutos. Esses dados agregados são então enviados para um novo tópico no Kafka.

Posteriormente, o Kafka Connect lê os dados do tópico de agregação e insere no banco de dados PostgreSQL. Durante essa etapa, são aplicadas transformações nos dados, como a conversão dos campos de tempo (start_time e end_time) para o formato de timestamp.

Por fim, o PostgreSQL armazena os dados de forma estruturada e organizada. Esses dados podem ser acessados por ferramentas como Grafana ou Looker, que possibilitam a criação de dashboards atrativos e úteis para análises em tempo real.


Dados no Postgres

Nota: A tabela é criada automaticamente pelo Kafka Connect. Portanto, para que você possa acessá-la é necessários que todas as configurações tenham sido realizadas com sucesso.

A imagem abaixo mostra como os dados são armazenados e organizados depois de persistidos no Postgres.

Data Flow


Outros Recursos

Nota: Para acessar esses recursos é necessário que todas as configurações tenham sido realizadas com sucesso.

  1. Gerenciamento do conectores do Kafka Connect
  1. Gerenciamento do esquemas das mensagens no Schema Registry

About

Solução de Clickstream utilizando o ecossistema da Confluent

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Solução de Clickstream para E-commerce

Introdução

Essa solução de Clickstream foi projetada para um sistema de e-commerce fictício, ela permite acompanhar, entender e melhorar como os usuários interagem com seus produtos em tempo real.

Basicamente, ela captura os cliques e as interações dos usuários no site, transformando isso em dados valiosos sobre o comportamento deles. Com tudo processado em tempo real, você consegue ter insights instantâneos para ajustar campanhas de marketing, personalizar a experiência do cliente e tomar decisões estratégicas na hora certa.


Arquitetura

Architecture

Componentes da Arquitetura

ComponenteDescrição
items-frontendInterface usada por usuários de e-commerce para interagir com os itens disponíveis.
items-apiBackend responsável por buscar itens e registrar cliques, chamando a clickstream-api.
clickstream-apiEnvia os eventos de cliques para o Kafka.
Kafka- Armazena eventos de cliques no tópico click_events. Serve como intermediário para sistemas downstream.
KSQLDB- Consome eventos do Kafka. Agrega dados e publica em um tópico de saída (click_counts_table_output).
Schema Registry- Gerencia os esquemas das mensagens trafegadas no Kafka. Garante consistência e validação.
Kafka ConnectConsome dados agregados do Kafka e insere no banco de dados PostgreSQL.
PostgresArmazena dados agregados para persistência.
GrafanaLê os dados do PostgreSQL e permite a visualização de métricas em dashboards acessados por usuários de marketing.
Connect UIInterface para monitorar o Kafka Connect.
Registry UIInterface para gerenciar esquemas no Schema Registry.

Inicializando e Configurando a Solução

Siga os passos abaixo para inicializar e configurar a solução de Clickstream:

Passo 1: Subir os Contêineres com Docker Compose

Acesse o diretório raiz da solução e execute o seguinte comando para construir e iniciar todos os contêineres:

$ docker-compose up --build

Passo 2: Executar o Script de Configuração

Após o Docker Compose inicializar todos os contêineres, conceda permissão de execução ao script de configuração e execute-o:

$ chmod +x setup.sh
$ ./setup.sh

Este script irá configurar os tópicos Kafka, streams e tabelas necessários para o funcionamento da solução.

Passo 3: Criando o Data Source no Grafana

Siga os passos abaixo para criar o Data Source no Grafana:

  1. Acesse o Grafana
  1. Navegue até o menu Data Sources
    No menu lateral, vá até Connections > Data Sources.

  2. Adicionar um novo Data Source
    Clique no botão Add new data source e selecione a opção PostgreSQL.

  3. Configurar o Data Source
    Preencha os campos com as seguintes informações:

  • Host URL: postgres:5432
  • Database Name: db_metrics
  • Username: user_metrics
  • Password: password_metrics
  • TLS/SSL Mode: Disable
  1. Salvar e testar a conexão
    Após preencher os campos, clique no botão Save & Test. Se tudo estiver correto, o Data Source será criado com sucesso.

  2. Obter o UID do Data Source
    Após a criação, observe a URL no navegador. Ela será algo como:
    http://localhost:3000/connections/datasources/edit/ee8bhesmqpczkb

  • O último conjunto de caracteres (ee8bhesmqpczkb) é o UID do Data Source.
  • Copie este valor, pois ele será necessário no próximo passo.

Passo 4: Configurando e Importando o Dashboard

Siga os passos abaixo para configurar e importar o dashboard no Grafana:

  1. Editar o arquivo dashboard.json
    Localize o arquivo dashboard.json na raiz do projeto e substitua o texto <datasource_uid_grafana> pelo UID do Data Source criado no passo anterior.

  2. Acessar o menu Dashboards
    No menu lateral do Grafana, clique em Dashboards.

  3. Criar um novo dashboard

  • Clique no botão New.
  • Em seguida, selecione a opção New dashboard.
  1. Importar o dashboard
  • Clique no botão Import dashboard.
  • Abra o arquivo dashboard.json, copie o conteúdo e cole no campo Import via dashboard JSON model.
  1. Salvar o dashboard
  • Por último, clique no botão Save para finalizar a importação.

Utilizando a Solução

Nota: Para acessar os recursos da solução, é necessário que todas as configurações tenham sido realizadas com sucesso.

  1. Acessando a aplicação web

Architecture

  • Para simular os eventos de cliques experimente clicar nos botões Click Me de cada item.
  1. Visualizando os Dados
  • Os dados em tempo real dos cliques podem ser visualizados no Dashboard no Grafana. Para isso acesse o dashboard no Grafana.

Architecture

  1. Simulando Cliques
  • No diretório raiz do projeto há um script para simular cliques. Execute o comando abaixo:
$ chmod +x simulate_click.sh
$ ./simulate_click.sh

Entendendo o Fluxo de Dados

Data Flow

O fluxo dos dados funciona de forma simples. Toda vez que alguém clica em um item no site, um evento em formato JSON é gerado e enviado para o Kafka, que armazena esses eventos de forma organizada, pronta para ser consumida por outros sistemas.

O KSQLDB entra em ação consumindo esses eventos e processando as informações. Ele cria um fluxo contínuo (stream) que processa os cliques em tempo real e, em seguida, organiza esses cliques em uma tabela que conta o número de cliques por campanha a cada 2 minutos. Esses dados agregados são então enviados para um novo tópico no Kafka.

Posteriormente, o Kafka Connect lê os dados do tópico de agregação e insere no banco de dados PostgreSQL. Durante essa etapa, são aplicadas transformações nos dados, como a conversão dos campos de tempo (start_time e end_time) para o formato de timestamp.

Por fim, o PostgreSQL armazena os dados de forma estruturada e organizada. Esses dados podem ser acessados por ferramentas como Grafana ou Looker, que possibilitam a criação de dashboards atrativos e úteis para análises em tempo real.


Dados no Postgres

Nota: A tabela é criada automaticamente pelo Kafka Connect. Portanto, para que você possa acessá-la é necessários que todas as configurações tenham sido realizadas com sucesso.

A imagem abaixo mostra como os dados são armazenados e organizados depois de persistidos no Postgres.

Data Flow


Outros Recursos

Nota: Para acessar esses recursos é necessário que todas as configurações tenham sido realizadas com sucesso.

  1. Gerenciamento do conectores do Kafka Connect
  1. Gerenciamento do esquemas das mensagens no Schema Registry

About

Solução de Clickstream utilizando o ecossistema da Confluent

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages