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.