kb.erickguedes.com
Kibana: Visualização e Monitoramento

Maps, Security e APM

Aula 4 de 5

Maps — Visualização Geoespacial

O Kibana Maps permite criar mapas interativos com múltiplas camadas e fontes de dados.

Configuração Inicial

`json // Indexar dados com geo_point PUT /ocorrencias { "mappings": { "properties": { "localizacao": { "type": "geo_point" }, "tipo": { "type": "keyword" }, "severidade": { "type": "keyword" }, "timestamp": { "type": "date" } } } }

PUT /ocorrencias/_doc/1 { "localizacao": { "lat": -23.5505, "lon": -46.6333 }, "tipo": "acidente", "severidade": "alta", "timestamp": "2025-06-01T10:00:00Z" } `

Camadas e Geohash

`json // Layer: Documentos por geohash grid GET /ocorrencias/_search { "size": 0, "aggs": { "grid": { "geohash_grid": { "field": "localizacao", "precision": 5 } } } }

// Layer: Heatmap // No Maps UI: // 1. Add layer > Heatmap // 2. Data source: ocorrencias // 3. Weight field: severidade (campo numérico) // 4. Radius: 30, Intensity: 0.5 `

EMS — Elastic Maps Service

O EMS fornece mapas base (tiles) gratuitos:

`yaml

kibana.yml

map.includeElasticMapsService: true map.emsUrl: "https://maps.elastic.co" map.emsTileLayer: "road_map" `

Tooltips Customizados

json // No Maps > Layer > Tooltip // Configure quais campos aparecem no hover: { "tooltipProperties": [ { "field": "tipo", "label": "Tipo" }, { "field": "severidade", "label": "Severidade" }, { "field": "timestamp", "label": "Data/Hora" } ] }

Security — SIEM

O Security app transforma o Kibana em um SIEM (Security Information and Event Management).

Detection Rules

`json // Regra de detecção — query match POST kbn:/api/detection_engine/rules { "name": "Múltiplas tentativas de login", "description": "Detecta >5 falhas de login em 5 minutos", "query": "event.action: "login_failed"", "type": "query", "severity": "high", "risk_score": 70, "schedule": { "interval": "5m" }, "threat_index": ["logs-*"], "tags": ["authentication", "brute-force"] }

// Regra de threshold POST kbn:/api/detection_engine/rules { "name": "Acesso a IP malicioso", "query": "destination.ip: 10.0.0.1", "type": "threshold", "threshold": { "field": "source.ip", "value": 10 }, "severity": "critical", "risk_score": 90 } `

Timelines

Timelines permitem investigação visual de eventos de segurança:

`kql

Timeline query

event.dataset: "windows.security" and event.action: "user_login" and winlog.event_id: 4625 `

Recursos da Timeline:

  • Event viewer: lista cronológica de eventos
  • Graph analysis: relações entre IPs, usuários e hosts
  • Note taking: anotações por evento
  • Pin events: fixar eventos importantes

Host e Network Views

`ash

Host view: visão consolidada por host

- Processos, alerts, vulnerabilidades

- Timeline específica do host

Network view: tráfego de rede

- Fluxos entre IPs

- Protocolos e portas

- Geolocalização dos peers

`

APM — Application Performance Monitoring

O APM monitora performance de aplicações com agentes para várias linguagens.

Agente APM (Node.js)

ash npm install elastic-apm-node

`javascript const apm = require('elastic-apm-node').start({ serviceName: 'meu-servico', serverUrl: 'http://localhost:8200', environment: 'production', captureExceptions: true, logLevel: 'info', })

// Transações automáticas (Express, Koa, etc.) // Transações manuais app.get('/api/users', async (req, res) => { const span = apm.startSpan('buscar-usuarios') const users = await db.query('SELECT * FROM users') span?.end() res.json(users) }) `

Service Maps

`json // Service Map é gerado automaticamente pelo APM // Mostra dependências entre serviços: // Gateway → Auth Service → Database // Gateway → Product Service → Database // Gateway → Payment Service → External API

// Span links conectam serviços distribuídos // Trace ID é propagado via headers HTTP (traceparent) `

Traces e Dependencies

json GET kbn:/api/apm/services GET kbn:/api/apm/services/meu-servico/transactions GET kbn:/api/apm/services/meu-servico/errors GET kbn:/api/apm/traces/{traceId}

Logs e Uptime Streams

Logs Stream

`ash

Observability > Logs

Stream em tempo real dos logs do Elasticsearch

Filtro por KQL, highlight, histórico

`

Uptime — Monitoramento de Disponibilidade

json // Heartbeat configuração (elastic-agent) PUT /_heartbeat/monitor { "type": "http", "enabled": true, "schedule": "@every 30s", "urls": ["https://api.exemplo.com/health"], "service.name": "api-producao", "timeout": "5s" }

Lab: Observabilidade Multi-camada

`ash

1. Indexe dados geoespaciais (ocorrências com lat/lon)

2. Crie mapa com:

- Camada de documentos por geohash

- Heatmap de severidade

- Tooltips customizados

3. Configure um agente APM Node.js

4. Crie detection rule para múltiplos login failures

5. Visualize service map no APM

`

Maps + Security + APM transformam o Kibana em uma plataforma completa de observabilidade, cobrindo infraestrutura, aplicações e segurança.