Este post também está disponível em inglês.
O Desafio no Polo Norte
"Ho ho… oh não!" exclamou o Papai Noel numa fria manhã. "Faltam apenas dois dias para o Natal! Como acompanhar os desejos de bilhões de crianças sem um monitoramento adequado?"
Por séculos, a fábrica do Papai Noel se apoiou em pó mágico e na intuição dos elfos para acompanhar a produção de brinquedos. Mas em 2024, até mesmo o Polo Norte precisa de uma atualização tecnológica! Hoje, vamos ajudar o Papai Noel a modernizar sua fábrica, implementando uma solução de monitoramento em tempo real com o Elastic Stack.
Requisitos
A Mamãe Noel foi clara sobre o que precisamos:
- Acompanhar a produção de brinquedos em todas as linhas da fábrica
- Monitorar o desempenho dos elfos (mantendo o espírito natalino em alta!)
- Garantir o controle de qualidade (nenhuma criança deve receber brinquedos quebrados!)
- Monitorar as condições da fábrica (elfos precisam de temperatura ideal para seu chocolate quente!)
Pré-requisitos Mágicos
Antes de começarmos a encantar a fábrica, certifique-se de ter:
- Python 3.8+ (testado por elfos, aprovado pelo Papai Noel)
- Acesso ao Elastic Cloud (ou Elastic Stack 8.16 local)
Estrutura da Fábrica
Primeiro, vamos organizar nossa fábrica como o Papai Noel organiza sua lista de presentes. Faça o clone do repositório no GitHub:
git clone https://github.com/salgado/santa_advent_monitoring.git
cd santa_advent_monitoring
Ao final, a estrutura de pastas será:
santa_advent_monitoring/
├── manage_simulation.sh
├── toy_workshop_simulator.py
│
├── var/
│ └── log/
│ └── workshop/
│ └── production/
└── README.md
O Exemplo da Fábrica
Criamos um script em Python que simula a oficina do Papai Noel, gerando logs em JSON com métricas de produção de brinquedos. O gerenciamento da simulação é feito por um script Bash, responsável por iniciar, parar e monitorar a produção.
O código Python gera dados realistas sobre tipos de brinquedos, taxas de produção, pontuações de qualidade e condições ambientais. Já o script Bash gerencia o ciclo de vida da simulação, rotaciona logs e fornece status. Pense nisso como uma miniatura de uma linha de produção real, porém, em vez de brinquedos físicos, produzimos dados estruturados para alimentar o Elastic Stack em tempo real.
Exemplo de JSON da Fábrica
{
"@timestamp": "2024-12-11T16:54:36.980882",
"toy_type": "robot",
"production_line": "line1",
"production_rate": 101,
"quality_score": 95,
"elf_id": "elf_20",
"errors_detected": 0,
"temperature": 22.8,
"humidity": 47.3,
"shift": "evening",
"machine_status": "normal",
"toys_completed": 25,
"version": "8.16.1"
}
Esse log contém informações sobre a produção: tipo de brinquedo, linha de produção, taxa, qualidade, condições ambientais e muito mais.
Descrição dos Campos
Campo | Descrição | Exemplos | Importância |
---|---|---|---|
toy_type | Tipo de brinquedo produzido | robot, doll, car, puzzle, board_game | Define a complexidade e taxa de produção |
production_line | Linha de produção | line1, line2, line3 | Localiza a origem da produção |
quality_score | Pontuação de qualidade | 0-100 | Crítico: deve ser ≥ 90 |
elf_id | Identificador do elfo | elf_1 a elf_20 | Rastreamento do desempenho |
errors_detected | Erros encontrados | 0-5 | Crítico se > 3 |
machine_status | Status da máquina | normal, error | Indica saúde da produção |
toys_completed | Unidades concluídas | 15-50 | Mede a produtividade |
Configuração Inicial da Fábrica
configs/simulator/production_config.yml
:
toy_types:
robot:
base_rate: 100
complexity: 0.8
min_quality: 85
components: ["circuit_board", "motors", "sensors"]
doll:
base_rate: 150
complexity: 0.6
min_quality: 88
components: ["fabric", "stuffing", "clothes"]
# ... mais tipos de brinquedos ...
production_lines:
line1:
efficiency: 0.95
error_rate: 0.02
maintenance_schedule: "0 */4 * * *"
# ... mais linhas de produção ...
Implementação do Simulador da Fábrica
Vamos colocar a fábrica do Papai Noel em funcionamento!
O Simulador de Produção
Certifique-se de estar no diretório correto:
cd santa_advent_monitoring
Script de Gerenciamento
manage_simulation.sh
Iniciando a Simulação
Para começar a produção de brinquedos:
./manage_simulation.sh start
Isso inicia o simulador em segundo plano, cria a estrutura de diretórios de logs e executa o toy_workshop_simulator.py
, que gera eventos JSON simulando a produção. O PID do processo é salvo em simulator.pid
para gestão futura, e todos os logs vão para toys.log
. Estamos ligando nossa fábrica virtual!
Conectando Nossa Fábrica à Nuvem
Com o simulador funcionando, vamos conectá-lo ao Elastic Cloud usando o Elastic Agent.
Instalação do Elastic Agent
Siga as instruções no Kibana, em Fleet → Agents, para instalar o Elastic Agent de acordo com seu ambiente.
Configure o caminho dos logs da fábrica:
/seu-caminho-completo/santa_advent_monitoring/var/log/workshop/production/toys.log
Observação: Ao final da instalação e selecionando a opção "Enroll in Fleet", você também configurará o Fleet Server.
Configurando a Coleta de Logs da Fábrica
Com os logs sendo gerados, precisamos configurar o Elastic Agent para coletá-los. Vamos ajustar a integração "Custom Logs".
Navegando até a Configuração
- No Kibana, acesse Fleet
- Em Agent policies, selecione Agent policy 1
- Clique em Add integration
- Pesquise por "Custom logs" e selecione-a
Ajustando a Integração
1. Configurações Básicas
- Integration name:
santa_workshop_logs
- Description:
Santa's Workshop Pro
2. Caminho dos Logs
/Users/usuario/seu_caminho/santa_advent_monitoring/var/log/workshop/production/toys.log
3. Configurações Avançadas (Advanced options)
Em "Custom configurations":
json:
keys_under_root: true
add_error_key: true
overwrite_keys: true
decode_json_fields:
fields: ["message"]
target: ""
process_array: false
Principais pontos:
- json.keys_under_root: Permite que campos como
@timestamp
,toy_type
,production_rate
fiquem no nível raiz, facilitando buscas. - json.add_error_key: Adiciona um campo
error
se houver problemas de parsing, ajudando a identificar entradas malformadas. - json.overwrite_keys: Em caso de chaves duplicadas, a última vence. Mantém a consistência dos dados.
4. Dataset
- Dataset name: "generic" (ou "santa_workshop", se preferir)
- Namespace: "default"
5. Finalizando
- Em "Where to add this integration?", confirme que Agent policy 1 está selecionada
- Clique em Save integration
Verificando a Configuração
Após salvar, espere alguns instantes. No Kibana, vá até Discover e procure pelo índice logs-*
. Você deverá ver os eventos chegando, mostrando tipos de brinquedos, taxas de produção, qualidade e muito mais.
Construindo o Centro de Comando do Papai Noel
Vamos criar um dashboard que deixará até o elfo mais técnico impressionado.
Configuração Inicial do Data View
- Em Stack Management → Data Views → Create data view:
- Nome:
fabrica-noel
- Padrão de índice:
logs-*
- Campo de timestamp:
@timestamp
- Nome:
Criando o Dashboard
- No Kibana, vá até Dashboards
- Clique em Create dashboard
Criando as Visualizações
Use Create visualization para cada uma:
1. Total de Brinquedos Produzidos (Metric)
- Métrica: Sum of
toys_completed
- Título: "Total Toys Produced"
2. Score de Qualidade (Metric)
- Métrica: Average of
quality_score
- Título: "Quality Score"
- Formato: Percentual
3. Taxa Média de Produção (Metric)
- Métrica: Average of
production_rate
- Título: "Average Production Rate (per hour)"
4. Distribuição por Tipo de Brinquedo (Pie)
- Métrica: Count
- Divisão (Split slices):
toy_type
- Título: "Production by Toy Type"
5. Performance das Linhas (Bar Vertical)
- Eixo Y:
production_rate
- Eixo X:
production_line
- Título: "Production Line Performance"
6. Condições Ambientais (Line)
- Eixo Y:
temperature
ehumidity
- Eixo X:
@timestamp
- Título: "Workshop Environmental Conditions"
Layout do Dashboard
Organize as visualizações:
- Primeira linha: Métricas principais (Totais, Qualidade, Taxa)
- Segunda linha: Distribuição por tipo de brinquedo e Performance das linhas
- Terceira linha: Condições ambientais
Redimensione conforme necessário. O objetivo é tornar o painel fácil de interpretar rapidamente.
Monitoramento Proativo com SLOs e Alertas
Ho ho ho! Vamos garantir que a qualidade se mantenha! Configuremos um SLO (Service Level Objective).
Criando um SLO de Qualidade
-
Em Observability → SLOs:
- Clique em Create SLO
-
Definição do SLI:
- SLI type: Custom Query
- Data view:
logs-*
- Timestamp field:
@timestamp
- Query filter:
machine_status:"normal"
- Good query:
quality_score >= 90
- Total query:
quality_score:*
- Group by:
production_line
-
Objetivos:
- Time window: Rolling
- Duration: 30 days
- Budgeting method: Occurrences
- Target / SLO (%): 94
-
Descrição:
- Nome: "Quality Control SLO"
- Descrição: "Monitoramento da qualidade da produção (meta: 94% com score ≥ 90)"
- Tags: quality, production, christmas-2024
Configurando Alertas
Definiremos metas claras:
-
SLO de Qualidade dos Presentes:
- Meta: 99% ≥ 90 na qualidade
- Janela de 24 horas
- Avaliação em 30 dias
-
SLO de Eficiência da Produção:
- Meta: ≥ 95% do planejado
- Monitoramento em tempo real
Criando uma Regra de Alerta
-
Observability → Alerts → Create rule
-
Tipo: "SLO burn rate"
-
Configuração do Alerta:
- Nome: "Alerta de Qualidade Baixa"
- SLO: selecione o SLO criado
- Alertar se cair abaixo da meta
- Frequência: a cada 5 minutos
- Notificações: Email para o Elfo-Chefe, canal Slack da produção, ou webhook para tickets
-
Mensagem do Alerta:
- Título: " Alerta de Qualidade na Produção"
- Mensagem: "Atenção, elfos! A linha {{production_line}} está abaixo da meta de qualidade ({{current_value}}%). Verifiquem imediatamente!"
Exemplo de Alerta em Ação
{
"@timestamp": "2024-12-11T16:54:40.999778",
"toy_type": "puzzle",
"production_line": "line1",
"production_rate": 103,
"quality_score": 69,
"elf_id": "elf_4",
"errors_detected": 5,
"temperature": 20.8,
"humidity": 50.9,
"shift": "evening",
"machine_status": "error",
"toys_completed": 25,
"version": "8.16.1"
}
Neste caso, a qualidade caiu. O alerta ajudará a corrigir o problema rapidamente.
Configurando Alertas via Elasticsearch Query
- Stack Management → Rules → Create rule
- Tipo: "Elasticsearch query"
- Query:
{ "bool": { "must": [ { "range": { "quality_score": { "lt": 90 } } } ] } }
- Parâmetros:
- Nome: "Alerta de Qualidade dos Presentes"
- Índices:
logs-*
- Agendamento: A cada 5 minutos
- Ações: Notificação aos supervisores (email/Slack)
Painel de SLOs
Nosso painel de SLOs mostrará tendências de qualidade, mantendo o espírito natalino e a satisfação das crianças.
Conclusão: Uma Oficina Moderna e Mágica!
Nossa solução completa oferece:
- Coleta de dados de produção
- Configuração do Elastic Agent
- Dashboard de visualização
- SLOs e alertas proativos
A oficina do Papai Noel agora une magia e tecnologia! "Esse sistema transformou a produção de presentes," comemora Bernard, Elfo-Chefe de Operações. "Agora garantimos que cada criança receba seu presente perfeito e no prazo!"
Recursos Adicionais
Lembre-se: Os melhores presentes chegam no momento certo, e o melhor sistema de monitoramento é aquele que ajuda a tornar isso possível!
#ElasticAdvent #PapaiNoelModerno #MagiaDeObservabilidade #ElasticsearchParaElfos #Elastic