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

Visualizações Avançadas e Administração

Aula 5 de 5

Vega/Vega-Lite — Visualizações Customizadas

Vega e Vega-Lite são gramáticas visuais declarativas que permitem criar visualizações totalmente customizadas no Kibana.

Vega-Lite — Sintaxe Simplificada

json { "": "https://vega.github.io/schema/vega-lite/v5.json", "title": "Vendas por Categoria", "data": { "url": { "%context%": true, "%timefield%": "@timestamp", "index": "produtos", "body": { "size": 0, "aggs": { "categorias": { "terms": { "field": "categoria", "size": 10 }, "aggs": { "receita": { "sum": { "field": "preco" } } } } } } }, "format": { "property": "aggregations.categorias.buckets" } }, "encoding": { "x": { "field": "key", "type": "nominal", "title": "Categoria" }, "y": { "field": "receita.value", "type": "quantitative", "title": "Receita" } }, "layer": [ { "mark": { "type": "bar", "color": "#4bc0c0" } }, { "mark": { "type": "text", "dy": -5, "color": "black" }, "encoding": { "text": { "field": "receita.value", "type": "quantitative", "format": "$,.0f" } } } ] }

Vega — Controle Total

json { "": "https://vega.github.io/schema/vega/v5.json", "title": "Dashboard Interativo", "data": [ { "name": "vendas", "url": { "%context%": true, "%timefield%": "@timestamp", "index": "vendas", "body": { "size": 500, "query": { "match_all": {} }, "_source": ["data", "valor", "produto"] } }, "format": { "property": "hits.hits" } } ], "signals": [ { "name": "threshold", "value": 1000, "bind": { "input": "range", "min": 0, "max": 5000, "step": 100, "name": "Threshold de valor:" } } ], "marks": [ { "type": "symbol", "from": { "data": "vendas" }, "encode": { "enter": { "x": { "field": "_source.data", "type": "temporal" }, "y": { "field": "_source.valor", "type": "quantitative" }, "fill": [ { "test": "datum._source.valor > threshold", "value": "red" }, { "value": "steelblue" } ], "size": { "value": 100 } } } } ] }

Signals — Interatividade no Vega

json { "signals": [ { "name": "zoom", "value": 1, "bind": { "input": "range", "min": 0.5, "max": 5, "step": 0.1 } }, { "name": "filtro_categoria", "bind": { "input": "select", "options": ["", "eletronicos", "moveis", "livros"] } } ] }

Dashboard-only Mode

O Dashboard-only mode restringe usuários a apenas visualizar dashboards, sem acesso a edição ou configuração.

`yaml

kibana.yml — Modo restrito

Crie role com privilégios:

- dashboard: read

- visualization: read

- index_patterns: read

- discover: none

- canvas: none

- maps: none

Atribua a role "dashboard_viewer" a usuários não-admin

`

Reporting — Exportação

Configuração de Reporting

`yaml

kibana.yml

xpack.reporting.enabled: true xpack.reporting.capture.maxAttempts: 3 xpack.reporting.csv.maxSizeBytes: 10485760 xpack.reporting.queue.timeout: 120000 `

Exportar para PDF/PNG

`ash

Via UI: Dashboard > Share > PDF or PNG

Opções: layout (print/optimize), tamanho

Via API

POST kbn:/api/reporting/generate/pdf { "jobParams": { "objects": [ { "type": "dashboard", "id": "dashboard-id" } ], "title": "Relatório Mensal", "layout": { "id": "print" } } }

Verificar status

GET kbn:/api/reporting/jobs/download/{jobId}

Download

GET kbn:/api/reporting/jobs/download/{jobId}?format=pdf `

Exportar CSV

`ash

Discover > Share > CSV

Via API:

POST kbn:/api/reporting/generate/csv { "jobParams": { "searchSourceId": "search-id", "columns": ["timestamp", "status", "mensagem"], "title": "Exportação de Logs" } } `

Spaces — Multi-tenancy

Spaces permitem criar workspaces isolados dentro do Kibana.

`json // Criar space POST kbn:/api/spaces/space { "id": "financeiro", "name": "Financeiro", "description": "Dashboards e relatórios do financeiro", "color": "#00bfb3", "initials": "FN", "disabledFeatures": ["apm", "ml", "canvas", "security"] }

// Atribuir feature visibility POST kbn:/api/spaces/space { "id": "devops", "name": "DevOps", "description": "Monitoramento de infraestrutura", "disabledFeatures": ["siem", "canvas", "discover"] } `

Dev Tools — Console e Ferramentas

Console

Console é um playground interativo para APIs do Elasticsearch:

`json // Exemplo de requisição no Console GET /produtos/_search { "query": { "match": { "nome": "notebook" } } }

// Múltiplas requisições PUT /teste {} `

Painless Lab

Painless Lab permite testar scripts Painless:

painless // Exemplo: cálculo de desconto double preco = doc['preco'].value; double desconto = params.desconto; return preco * (1 - desconto / 100);

Search Profiler

Search Profiler analisa performance de queries:

json // Execute query com profiler GET /produtos/_search { "profile": true, "query": { "match": { "nome": "notebook" } } }

Grok Debugger

Grok Debugger ajuda a criar e testar padrões Grok para parsing de logs:

`ash

Entrada de exemplo

192.168.1.1 GET /index.html 200 1234

Padrão Grok

%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:status} %{NUMBER:bytes} `

Saved Objects — Export/Import

`ash

Exportar todos objetos de um space

POST kbn:/api/saved_objects/_export { "type": ["dashboard", "visualization", "index-pattern", "search"], "includeReferencesDeep": true }

Importar

POST kbn:/api/saved_objects/_import { "overwrite": true, "createNewCopies": false }

Body: multipart/form-data com arquivo .ndjson

`

Lab: Admin Dashboard Completo

`ash

1. Crie uma visualização Vega-Lite customizada

2. Configure um space "Financeiro" com features limitadas

3. Exporte um dashboard em PDF via API

4. Use o Console para testar queries do Elasticsearch

5. Teste o Search Profiler em uma query lenta

6. Crie um Grok pattern para log de acesso web

7. Exporte todos saved objects como .ndjson

curl -X POST "http://localhost:5601/api/reporting/generate/pdf"
-H "Content-Type: application/json"
-d '{"jobParams": {"objects": [{"type": "dashboard", "id": "meu-dashboard"}], "layout": {"id": "print"}}}' `

Vega, Spaces, Reporting e Dev Tools elevam o Kibana de ferramenta de visualização a plataforma completa de análise, multi-tenancy e administração.