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
No seu terminal, rode:
docker-compose up -d
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!")
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.
- No menu lateral esquerdo, vá em Stack Management > Index Patterns.
- Clique em Create index pattern.
- Digite
logs_processos_bi*e clique em Next. - No campo "Time field", selecione
timestampe 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:
- Vá em Visualize > Create visualization.
- Escolha o tipo de gráfico (ex: Pie ou Bar).
- Selecione a fonte
logs_processos_bi*. - No eixo Y, deixe como "Count" (contagem de eventos).
- No eixo X (Buckets), escolha Terms e selecione o campo
departamento.keyword. - 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)