Como Exportar Logs do Elasticsearch e Kibana

Como Exportar Logs do Elasticsearch e Kibana

SOC Prime Team
SOC Prime Team linkedin icon Seguir

Use um script Python curto com os auxiliares.scan do cliente oficial ou a API _search com um ponto no tempo (PIT) e search_after. Para extrações rápidas de até 10.000 linhas, ES|QL com format=json funciona diretamente a partir das Ferramentas de Desenvolvimento do Kibana. O Kibana Discover também pode gerar um relatório, mas não em um formato que o LogTotal leia atualmente. Se sua integração preservou, event.original mantém a linha de log bruta.

O Elastic é uma das bases mais comuns para análises de segurança internas, desde o Elastic Security até pilhas personalizadas. Prime Core tem 23.722 regras de detecção para o Elastic, mapeadas para 671 técnicas do MITRE ATT&CK. Abaixo está como extrair dados, sanitizá-los e investigá-los gratuitamente no LogTotal.

Comece Gratuitamente

Antes de começar

Autenticação. Crie uma chave de API em Gerenciamento da Stack → Chaves de API com leitura e view_index_metadata nos índices que você precisa. Envie como Authorization: ApiKey <key>. Na Elastic Cloud, o endpoint do Elasticsearch está na página de visão geral da sua implantação.

Saiba onde os dados estão. As integrações do Elastic Agent escrevem para fluxos de dados nomeados logs-<dataset>-<namespace>. Logs de autenticação do Linux da integração System, por exemplo, aterrissam em logs-system.auth-default.

Verifique por event.original. Muitas integrações não mantêm a linha bruta por padrão; é uma opção “preservar evento original”. Se estiver ausente, os campos analisados são o que você tem, e isso é suficiente para um upload JSON.

Níveis de dados. Pesquisas contra níveis frios ou congelados são mais lentas. Mantenha janelas apertadas quando os dados forem antigos.

Os exemplos seguem a documentação atual do Elastic, verificada em outubro de 2026.

Opção 1: Python com helpers.scan (recomendado)

importar json, os
de elasticsearch import Elasticsearch, helpers

es = Elasticsearch("https://my-deployment.es.example.com:443", api_key=os.environ["ES_API_KEY"])
consulta = {"query": {"range": {"@timestamp": {
    "gte": "2026-10-19T00:00:00Z", "lt": "2026-10-20T00:00:00Z"}}}}

com open("elastic_auth_1019.jsonl", "w") como out:
    para acerto em helpers.scan(es, index="logs-system.auth-*", query=consulta, size=1000):
        out.write(json.dumps(acerto["_source"]) + "n")

Para linhas brutas, escreva hit[“_source”].get(“event”, {}).get(“original”, “”) em vez do documento inteiro.

Opção 2: ES|QL para extrações rápidas

Nas Ferramentas de Desenvolvimento do Kibana:

POST /_query?format=json
{
  "query": """
    DE logs-system.auth-*
    | WHERE @timestamp >= "2026-10-19T00:00:00Z" AND @timestamp < "2026-10-20T00:00:00Z"
    | MANTER @timestamp, host.name, user.name, source.ip, message
    | LIMITAR 10000
  """
}

Dois detalhes. ES|QL retorna 1.000 linhas a menos que você defina LIMIT, e ele atinge o máximo de 10.000. A resposta JSON também vem como colunas mais valores, não como registros. Para transformá-lo em um objeto por linha, salve o corpo da consulta como query.json e execute-o através do jq:

curl -sS -H "Authorization: ApiKey $ES_API_KEY" -H 'Content-Type: application/json' 
  "https://my-deployment.es.example.com/_query?format=json" -d @query.json
  | jq -c '.columns as $c | .values[] | [$c, .] | transpose | map({(.[0].name): .[1]}) | add' > esql_1019.jsonl

Opção 3: Exportar logs da UI do Kibana (Discover)

Para investigações menores, o Kibana Discover permite encontrar, filtrar e exportar logs diretamente do navegador sem escrever scripts.

  1. Abra o Discover. Faça login no Kibana e navegue até Analytics → Discover, ou selecione Discover na navegação principal.
  2. Selecione seus dados. Escolha a visualização de dados contendo os logs que você precisa, como logs-system.auth-*. Certifique-se de que inclui os índices do Elasticsearch relevantes ou fluxos de dados.
  3. Defina o intervalo de tempo. Use o seletor de tempo no canto superior direito para selecionar o período de investigação. Aperte a janela para evitar exportar eventos desnecessários.
  4. Filtre os logs. Use a barra de pesquisa e os filtros disponíveis para isolar eventos relevantes. Por exemplo, insira event.category: authentication para focar na atividade de autenticação.
  5. Selecione os campos. Adicione colunas úteis como @timestamp, host.name, user.name, source.ip e message. Se disponível, inclua event.original para preservar o conteúdo bruto do log.
  6. Exporte os resultados. Abra Mais → Exportar → Resultados da guia como CSV (em algumas versões, Compartilhar → Relatórios CSV). Gere o relatório e baixe o arquivo CSV. Se a exportação não for baixada imediatamente, encontre-a em Gerenciamento da Stack → Relatórios.

Alternativa: Copiar logs como JSON. Para uma seleção pequena de eventos, selecione as linhas relevantes no Discover, abra o Selecionado menu, e escolha Copiar documentos como JSON. Cole o conteúdo copiado em um editor de texto e salve como um arquivo .json. Apenas os campos incluídos na seleção atual da tabela podem ser copiados.

Limitações. Relatórios CSV são destinados a exportações de tamanho moderado e têm limites de contagem de linhas e tamanho de arquivo que dependem da versão e configuração do Kibana. Exportar uma definição de sessão do Discover como JSON não exporta os eventos do log propriamente ditos.

Para o LogTotal, use um formato de log suportado. Quando JSONL é necessário, exporte os registros usando os métodos API do Python ou Elasticsearch descritos abaixo, ou converta os dados exportados em um objeto JSON por linha antes de carregá-los.

Passo 3: Carregar, sanitizar e revisar no LogTotal

  1. Carregar. Abra logtotal.com e largue o arquivo .jsonl.
  2. Sanitizar. Revise antes de continuar.
  3. Revise. 

Quando algo dá errado

SintomaCausa provávelFix
401 ou 403A chave da API não possui privilégios nos índicesAdicione leitura e view_index_metadata
Janela de resultado é muito grandeMais de 10.000 acertos em um _searchUse helpers.scan ou PIT com search_after
ES|QL retorna exatamente 1.000 linhasLimite padrãoAdicione LIMIT (máximo 10.000)
Sem campo event.originalA integração não o preservouExporte o documento analisado em vez disso
TimeoutsDados antigos em níveis frios ou congeladosAperte a janela; execute em partes

FAQ

E sobre os alertas de segurança do Elastic?

Alertas vivem em seus próprios índices (.alerts-security.alerts-*). Exportar alertas é um trabalho diferente de exportar os logs por trás deles; para o LogTotal, exporte os logs.

Isso funciona para o OpenSearch?

A ideia é a mesma, os clientes diferem.

Junte-se à plataforma Detection as Code da SOC Prime para melhorar a visibilidade das ameaças mais relevantes para o seu negócio. Para ajudá-lo a começar e gerar valor imediato, agende uma reunião agora com os especialistas da SOC Prime.