# Dez 23, 2024: \[PT-BR\] Construindo um Sistema de Monitoramento de Produção de Presentes com Elastic Stack

**URL:** <https://discuss.elastic.co/t/dez-23-2024-pt-br-construindo-um-sistema-de-monitoramento-de-producao-de-presentes-com-elastic-stack/372025>\
**Category:** Advent Calendar\
**Created:** [December 23, 2024, 8:00am UTC](https://discuss.elastic.co/t/dez-23-2024-pt-br-construindo-um-sistema-de-monitoramento-de-producao-de-presentes-com-elastic-stack/372025 "2024-12-23T08:00:20Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Alex\_Salgado-Elastic](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/alex_salgado-elastic/32/103081_2.png) [@Alex\_Salgado-Elastic](https://discuss.elastic.co/u/Alex_Salgado-Elastic)\
**Post date:** [December 23, 2024, 8:00am UTC](https://discuss.elastic.co/t/dez-23-2024-pt-br-construindo-um-sistema-de-monitoramento-de-producao-de-presentes-com-elastic-stack/372025/1 "2024-12-23T08:00:20Z")

</div>

Este post também está disponível [em inglês](https://discuss.elastic.co/t/371773).

 ![Sistema de Monitoramento North Pole](https://us1.discourse-cdn.com/elastic/original/3X/3/1/3163bbaab5e866dcde0c53b5bdf3841f54348e2a.jpeg)

## 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:

```bash
git clone https://github.com/salgado/santa_advent_monitoring.git 
cd santa_advent_monitoring

```

Ao final, a estrutura de pastas será:

```bash
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

```json
{
  "@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`:

```yaml
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:

```bash
cd santa_advent_monitoring

```

### Script de Gerenciamento

`manage_simulation.sh`

#### Iniciando a Simulação

Para começar a produção de brinquedos:

```bash
./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.

 ![Creating Agents](https://us1.discourse-cdn.com/elastic/original/3X/a/3/a376604e1dde15c3d57bcffb891392a36296a581.jpeg)

Configure o caminho dos logs da fábrica:

```bash
/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

1. No Kibana, acesse **Fleet**
2. Em **Agent policies** , selecione **Agent policy 1**
3. Clique em **Add integration**
4. 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

```bash
/Users/usuario/seu_caminho/santa_advent_monitoring/var/log/workshop/production/toys.log

```

#### 3. Configurações Avançadas (Advanced options)

Em "Custom configurations":

```yaml
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

1. Em **Stack Management → Data Views → Create data view** :
  - Nome: `fabrica-noel`
  - Padrão de índice: `logs-*`
  - Campo de timestamp: `@timestamp`

### Criando o Dashboard

1. No Kibana, vá até **Dashboards**
2. 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` e `humidity`
- Eixo X: `@timestamp`
- Título: "Workshop Environmental Conditions"

### Layout do Dashboard

 ![blog-image3](https://us1.discourse-cdn.com/elastic/original/3X/7/9/79c18d15c921673f0ce5e6d0c97601e3580590a3.png)

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).

 ![Create new SLO](https://us1.discourse-cdn.com/elastic/original/3X/5/d/5de48839a186619f5418496e2168683995f7780f.jpeg)

### Criando um SLO de Qualidade

1. Em **Observability → SLOs** :

2. **Definição do SLI:**

3. **Objetivos:**

4. **Descrição:**

### Configurando Alertas

 ![Create RULE](https://us1.discourse-cdn.com/elastic/original/3X/0/e/0eb799bfc1ec11c5ed2868a6a50b3a1379035b78.jpeg)

Definiremos metas claras:

- **SLO de Qualidade dos Presentes:**

- **SLO de Eficiência da Produção:**

#### Criando uma Regra de Alerta

1. **Observability → Alerts → Create rule**

2. Tipo: "SLO burn rate"

3. **Configuração do Alerta:**

4. **Mensagem do Alerta:**

### Exemplo de Alerta em Ação

```json
{
  "@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

1. **Stack Management → Rules → Create rule**
2. Tipo: "Elasticsearch query"
3. Query:

```json
{
  "bool": {
    "must": [
      {
        "range": {
          "quality_score": {
            "lt": 90
          }
        }
      }
    ]
  }
}

```

4. 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

 ![SLOs Panel](https://us1.discourse-cdn.com/elastic/original/3X/5/0/50a4cdcf25fb60f01f0ae0e5b0295fbff439fc08.png)

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:

1. Coleta de dados de produção ✅
2. Configuração do Elastic Agent ✅
3. Dashboard de visualização ✅
4. 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

- [Documentação do Elastic Agent](https://www.elastic.co/guide/en/fleet/current/elastic-agent-installation.html)
- [Guia de Dashboards do Kibana](https://www.elastic.co/guide/en/kibana/current/dashboard.html)
- [Documentação de Alertas Elastic](https://www.elastic.co/guide/en/kibana/current/alerting-getting-started.html)

_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
