DEV Community

Cover image for Python, OpenSearch e BI: Construindo Dashboards em Tempo Real
Francisco Júnior
Francisco Júnior

Posted on

Python, OpenSearch e BI: Construindo Dashboards em Tempo Real

Se você trabalha com Análise de Dados e Business Intelligence, provavelmente passa boa parte do seu dia escrevendo queries em SQL e processando bases gigantescas em ferramentas como o BigQuery. Essa arquitetura é fantástica para dados históricos e estruturados.

Mas e quando você precisa analisar dados não estruturados, buscar padrões em textos (como feedbacks de clientes) ou monitorar eventos e processos em tempo real? Rodar um SELECT pesado no banco relacional a cada 5 segundos não é uma opção.

É aqui que entra o OpenSearch Dashboards (o antigo Kibana). Ele é a camada visual do OpenSearch que permite explorar dados, criar gráficos e montar painéis interativos com uma interface de arrastar e soltar.

Hoje, vamos usar Python para injetar dados e o Dashboards para fazer o BI em tempo real.

Passo 1: Subindo a Arquitetura Completa 🐳

No artigo anterior, subimos apenas o motor do OpenSearch. Agora, precisamos da interface gráfica. Como você provavelmente já está usando um terminal moderno (como Zsh ou Fish) no macOS com o OrbStack (ou Docker), a forma mais elegante de subir os dois serviços juntos é usando um arquivo docker-compose.yml.

Crie uma pasta para o projeto, adicione o arquivo docker-compose.yml com o conteúdo abaixo:

version: '3'
services:
  opensearch-node:
    image: opensearchproject/opensearch:latest
    container_name: opensearch-node
    environment:
      - discovery.type=single-node
      - DISABLE_SECURITY_PLUGIN=true
    ports:
      - 9200:9200

  opensearch-dashboards:
    image: opensearchproject/opensearch-dashboards:latest
    container_name: opensearch-dashboards
    environment:
      - OPENSEARCH_HOSTS=http://opensearch-node:9200
      - DISABLE_SECURITY_DASHBOARDS_PLUGIN=true
    ports:
      - 5601:5601
    depends_on:
      - opensearch-node

Enter fullscreen mode Exit fullscreen mode

No seu terminal, rode:

docker-compose up -d

Enter fullscreen mode Exit fullscreen mode

Pronto! O motor de busca está rodando na porta 9200 e o seu novo ambiente de BI na porta 5601.


Passo 2: Ingerindo Dados com Python 🐍

Para o nosso dashboard ter vida, precisamos de dados. Vamos simular um script Python que monitora eventos de melhoria de processos de uma empresa — algo focado em tempo de execução e status.

Lembre-se de instalar o cliente usando o uv: uv pip install opensearch-py

Crie o arquivo gerador_dados.py:

from opensearchpy import OpenSearch
import random
import time
from datetime import datetime

# Conecta ao nosso cluster local
cliente = OpenSearch(
    hosts=[{'host': 'localhost', 'port': 9200}],
    use_ssl=False,
    verify_certs=False
)

nome_indice = 'logs_processos_bi'

print("Iniciando a injeção de dados de processos em tempo real...")
print("Pressione Ctrl+C para parar.\n")

departamentos = ["Vendas", "Logística", "TI", "Atendimento"]
status_opcoes = ["SUCESSO", "FALHA", "ATRASO"]

try:
    while True:
        # Gerando um log simulado
        documento = {
            "timestamp": datetime.utcnow().isoformat(),
            "departamento": random.choice(departamentos),
            "tempo_processamento_ms": random.randint(50, 5000),
            "status": random.choice(status_opcoes),
            "descricao": "Execução da rotina de integração de dados"
        }

        # Injetando no OpenSearch
        cliente.index(index=nome_indice, body=documento)
        print(f"[{documento['timestamp']}] Log inserido: {documento['departamento']} - {documento['status']}")

        time.sleep(2) # Pausa de 2 segundos para simular fluxo contínuo

except KeyboardInterrupt:
    print("\nInjeção de dados finalizada!")

Enter fullscreen mode Exit fullscreen mode

Deixe esse script rodando em uma aba do terminal. Ele será nossa fonte de dados em tempo real.


Passo 3: Explorando os Dados Visualmente (O BI em Ação) 🚀

Agora vem a parte divertida. Abra o seu navegador e acesse: http://localhost:5601

1. Criando o Index Pattern (Governança Básica)

O Dashboards precisa saber qual índice você quer analisar e qual campo representa o "tempo" para montar os gráficos cronológicos.

  1. No menu lateral esquerdo, vá em Stack Management > Index Patterns.
  2. Clique em Create index pattern.
  3. Digite logs_processos_bi* e clique em Next.
  4. No campo "Time field", selecione timestamp e clique em Create.

2. A Aba "Discover": O Paraíso da Análise Exploratória

Vá no menu lateral e clique em Discover.
Aqui você não precisa escrever SELECT * FROM tabela WHERE status = 'FALHA'. Basta digitar na barra de pesquisa:
status: "FALHA" AND tempo_processamento_ms > 2000

Instantaneamente, você vê apenas os gargalos dos seus processos. É uma forma incrivelmente rápida de auditar dados e encontrar anomalias sem gastar processamento de um Data Warehouse tradicional.

3. Criando as Visualizações

Para transformar isso em Business Intelligence real:

  1. Vá em Visualize > Create visualization.
  2. Escolha o tipo de gráfico (ex: Pie ou Bar).
  3. Selecione a fonte logs_processos_bi*.
  4. No eixo Y, deixe como "Count" (contagem de eventos).
  5. No eixo X (Buckets), escolha Terms e selecione o campo departamento.keyword.
  6. Salve!

Você pode repetir esse processo para criar gráficos de linha do tempo mostrando a média do tempo_processamento_ms ao longo dos minutos. Junte todos esses gráficos na aba Dashboard e você terá um painel de monitoramento dinâmico.


Por que essa dupla é imbatível?

Ferramentas como o BigQuery brilham quando você tem perguntas complexas sobre o passado ("Qual foi o faturamento total agregado por região nos últimos 5 anos?").

Mas a união de Python + OpenSearch Dashboards é a ferramenta definitiva para o presente ("O processo que acabei de colocar em produção está gerando erros agora?"). Você delega a ingestão rápida para o Python e usa o Dashboards para aplicar conceitos de BI e governança em cima de dados não estruturados, tudo de forma visual.

A melhor parte? O OpenSearch escala horizontalmente. Se você começar a processar milhões de logs por dia, basta adicionar mais nós ao seu cluster.


E aí, já pensou em qual processo do seu dia a dia poderia ser monitorado em tempo real com um dashboard desses? Deixe nos comentários!

Top comments (0)