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

Discover e Index Patterns

Aula 1 de 5

Instalação do Kibana

O Kibana é a interface de visualização e gerenciamento do Elastic Stack.

Instalação via Docker

docker pull docker.elastic.co/kibana/kibana:8.14.0

docker run -d --name kibana --net elastic \
  -p 5601:5601 \
  -e "ELASTICSEARCH_HOSTS=http://es-node:9200" \
  docker.elastic.co/kibana/kibana:8.14.0

# Acessar: http://localhost:5601

Instalação via apt (Ubuntu/Debian)

sudo apt install kibana
sudo systemctl start kibana
sudo systemctl enable kibana

Elastic Cloud

# Kibana é provisionado automaticamente com o deployment Elastic Cloud
# URL: https://<deployment-id>.kibana.us-east-1.aws.cloud.es.io

Configuracao (kibana.yml)

server.port: 5601
server.host: "0.0.0.0"
server.name: "kb-platform"

elasticsearch.hosts: ["http://localhost:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "senha_segura"

kibana.index: ".kibana"

i18n.locale: "pt-BR"

# Monitoring
monitoring.ui.container.elasticsearch.enabled: true

# Reporting
xpack.reporting.enabled: true
xpack.reporting.capture.browser.chromium.disableSandbox: false

Index Patterns

Index patterns definem quais indices do Elasticsearch o Kibana pode consultar.

Criar Index Pattern

# Via UI: Stack Management > Index Patterns > Create index pattern
# Nome: logs-* (seleciona todos indices comecando com logs-)
# Timestamp: @timestamp (para series temporais)

# Via API
POST kbn:/api/index_patterns/index_pattern
{
  "index_pattern": {
    "title": "logs-*",
    "timeFieldName": "@timestamp"
  }
}

Refresh e Scripted Fields

# Refresh field list (apos alteracoes no mapping)
POST kbn:/api/index_patterns/index_pattern/{id}/refresh_fields

# Scripted field — campo calculado no query time
PUT kbn:/api/index_patterns/index_pattern/{id}/scripted_field
{
  "scripted_field": {
    "name": "duracao_segundos",
    "script": {
      "source": "doc['duracao_ms'].value / 1000",
      "lang": "painless"
    },
    "type": "number"
  }
}

Discover — Exploracao de Dados

KQL — Kibana Query Language

# Termo livre
notebook

# Campo especifico
status: 200

# Range
duracao_ms > 1000 and duracao_ms < 5000

# Multiplos valores
status: (200 or 404)

# Negacao
not status: 500

# Wildcard
host: server-*

# Existencia
exists: error_message

# Frase
mensagem: "connection refused"

# Combinacao
status: 200 and duracao_ms > 2000

Filtros e Time Range

No Discover, use a barra de filtros para adicionar condicoes visuais:

  1. Clique em Add filter para criar filtros KQL ou Lucene
  2. Use o Time picker no canto superior direito:
    • Quick select: Last 15 minutes, Last 1 hour, Today
    • Relative: Last 7 days, Last 30 days
    • Absolute: intervalo de datas especifico
  3. Saved queries: salve combinacoes de filtros frequentes

Saved Searches

# Salvar uma busca no Discover:
# 1. Configure colunas, filtros e time range
# 2. Clique em Save > Save as saved search
# 3. Reutilize em dashboards e visualizacoes

# Listar saved searches
GET kbn:/api/saved_objects/_find?type=search

Document View

Clique em qualquer documento no Discover para visualizar:

  • Table view: Campos em formato tabular
  • JSON view: Documento completo como indexado no ES
  • Document comparison: Comparar documentos lado a lado

Lab: Configuracao do Kibana

# 1. Inicie Elasticsearch e Kibana via Docker
# 2. Crie um index pattern logs-* apontando para @timestamp
# 3. Indexe documentos de log de exemplo
# 4. No Discover:
#    - Filtre por status: 500
#    - Crie uma saved search "erros_servidor"
#    - Adicione scripted field "duracao_segundos"
# 5. Teste KQL: status: 200 and duracao_ms > 500
curl -X POST "http://localhost:5601/api/index_patterns/index_pattern" \
  -H "Content-Type: application/json" \
  -d '{"index_pattern": {"title": "logs-*", "timeFieldName": "@timestamp"}}'

O Index Pattern e o ponto de partida de toda analise no Kibana — define quais dados estao disponiveis e como o tempo e interpretado.