🔍 Kibana KQL - Exemplos de Queries
Guia de exemplos práticos de queries KQL (Kibana Query Language) para análise de logs no ecossistema C-Suite.
📋 Sintaxe Básica KQL
Operadores
AND/OR/NOT- Operadores lógicos:- Igualdade (exato)*- Wildcard (qualquer caractere)"texto"- Busca exata (com aspas)texto- Busca parcial (sem aspas)
🔍 Exemplos de Queries
1. Buscar Erros do csuite-auth
Query Original:
service_name: "csuite-auth" AND log_level: "ERROR"
KQL Correto:
service_name: "csuite-auth" and log_level: "ERROR"
Ou (se os campos forem diferentes):
agent.name: "*csuite-auth*" and log.level: "error"
Variações:
# Erros e warnings
service_name: "csuite-auth" and (log_level: "ERROR" or log_level: "WARN")
# Erros nas últimas 1 hora
service_name: "csuite-auth" and log_level: "ERROR"
2. Buscar Logs do Traefik
Query Original:
container.image.name: "traefik*"
KQL Correto:
container.image.name: traefik*
Ou:
container.image.name: *traefik*
Variações:
# Apenas Traefik
container.image.name: traefik*
# Traefik ou qualquer container com "traefik" no nome
container.image.name: *traefik*
# Logs de containers Docker
container.id: *
3. Buscar Timeouts
Query Original:
message: "*timeout*"
KQL Correto:
message: *timeout*
Ou (busca mais específica):
message: *timeout* or message: *Timeout* or message: *TIMEOUT*
Variações:
# Timeout em qualquer campo
*timeout*
# Timeout no message ou log
(message: *timeout* or log: *timeout*)
# Timeout E erro
*timeout* and log.level: error
🎯 Queries Úteis para C-Suite
Logs de Erro por Serviço
# Erros do csuite-auth
agent.name: *csuite-auth* and log.level: error
# Erros do csuite-executive
agent.name: *csuite-executive* and log.level: error
# Erros do csuite-context
agent.name: *csuite-context* and log.level: error
# Todos os erros
log.level: error
Logs por Container
# Traefik
container.image.name: traefik*
# Filebeat
container.image.name: *filebeat*
# Elasticsearch
container.image.name: *elasticsearch*
# ClickHouse
container.image.name: *clickhouse*
# PostgreSQL
container.image.name: *postgres*
Buscar por Padrões
# Timeouts
*timeout*
# Conexões recusadas
*connection refused* or *Connection refused*
# Erros 404
*404* or status: 404
# Erros 500
*500* or status: 500
# Autenticação falhou
*auth* and (fail* or error* or denied*)
# Database errors
*database* and (error* or fail* or timeout*)
Filtrar por Tempo e Nível
# Erros nas últimas 15 minutos
log.level: error and @timestamp >= now()-15m
# Warnings nas últimas 1 hora
log.level: warn and @timestamp >= now()-1h
# Erros críticos hoje
log.level: error and @timestamp >= now()-1d
Combinar Múltiplas Condições
# Erros do Traefik relacionados a SSL
container.image.name: traefik* and log.level: error and (*ssl* or *certificate*)
# Timeouts em serviços C-Suite
agent.name: *csuite* and *timeout*
# Erros de banco de dados
(*database* or *mysql* or *postgres*) and (error* or fail*)
# Problemas de conexão
(*connection* or *connect*) and (refused* or timeout* or failed*)
📊 Queries para Análise
Top Erros
log.level: error
Depois, agrupe por agent.name ou container.image.name
Logs por Serviço
agent.name: *
Agrupe por agent.name para ver distribuição
Logs por Nível
log.level: *
Agrupe por log.level para ver distribuição de níveis
Atividade por Container
container.id: *
Agrupe por container.image.name para ver atividade
🔧 Dicas Avançadas
Busca Case-Insensitive
# KQL é case-insensitive por padrão
log.level: error
log.level: ERROR
log.level: Error
# Todos funcionam igual
Wildcards
# Qualquer coisa antes de "auth"
*auth
# Qualquer coisa depois de "csuite"
csuite*
# Qualquer coisa com "error" no meio
*error*
# Múltiplos wildcards
*timeout*error*
Negação
# Tudo exceto erros
not log.level: error
# Tudo exceto Traefik
not container.image.name: traefik*
# Erros que não são de timeout
log.level: error and not *timeout*
Agrupamento com Parênteses
# Erros OU warnings do csuite-auth
agent.name: *csuite-auth* and (log.level: error or log.level: warn)
# Timeout OU connection refused
(*timeout* or *connection refused*)
# Erros de auth OU database
(*auth* or *database*) and error*
📝 Exemplos Práticos
1. Monitorar Erros Críticos
log.level: error and @timestamp >= now()-1h
2. Analisar Problemas de Rede
(*timeout* or *connection refused* or *network error*) and @timestamp >= now()-24h
3. Verificar Autenticação
*auth* and (fail* or error* or denied* or invalid*)
4. Monitorar Performance
(*slow* or *timeout* or *latency*) and log.level: warn
5. Análise de Containers
container.image.name: *csuite* and log.level: error
🎯 Campos Úteis para Filtrar
Campos de Tempo
@timestamp- Timestamp do log
Campos de Agente
agent.name- Nome do agente (serviço)agent.type- Tipo do agente (filebeat, etc.)agent.version- Versão do agente
Campos de Container
container.id- ID do containercontainer.image.name- Nome da imagemcontainer.labels.*- Labels do container
Campos de Log
log.level- Nível do log (error, warn, info, debug)log.logger- Logger que gerou o logmessage- Mensagem do log
Campos Customizados
service_name- Nome do serviço (se disponível)environment- Ambiente (production, staging)log_level- Nível do log (alternativo)
💡 Dicas de Performance
- Use filtros de tempo: Sempre filtre por
@timestamppara melhor performance - Seja específico: Queries mais específicas são mais rápidas
- Use campos indexados: Campos como
log.levelsão mais rápidos que buscar emmessage - Evite wildcards no início:
*timeouté mais lento quetimeout*
🔗 Recursos
- KQL Documentation: https://www.elastic.co/guide/en/kibana/current/kuery-query.html
- Kibana Discover Guide: https://www.elastic.co/guide/en/kibana/current/discover.html
Última atualização: 2025-12-06