Come Esportare i Log da Elasticsearch e Kibana

Come Esportare i Log da Elasticsearch e Kibana

SOC Prime Team
SOC Prime Team linkedin icon Segui

Utilizza un breve script Python con gli helpers.scan del client ufficiale, o l’API _search con un point in time (PIT) e search_after. Per estrazioni rapide fino a 10.000 righe, ES|QL con format=json funziona direttamente dagli Strumenti Dev di Kibana. Kibana Discover può generare un report, ma non in un formato che LogTotal legge oggi. Se la tua integrazione lo ha preservato, event.original contiene la linea di log grezza.

Elastic è una delle fondamenta più comuni per l’analisi della sicurezza interna, da Elastic Security a stack costruiti autonomamente. Prime Core ha 23.722 regole di rilevamento per Elastic, mappate su 671 tecniche MITRE ATT&CK. Di seguito è illustrato come estrarre i dati, sanificarli e indagarli gratuitamente in LogTotal.

Inizia Gratis

Prima di iniziare

Autenticazione. Crea una chiave API in Gestione Stack → Chiavi API con lettura e view_index_metadata sugli indici di cui hai bisogno. Invia come Authorization: ApiKey <key>. Su Elastic Cloud, l’endpoint di Elasticsearch è nella pagina di panoramica del tuo dispiegamento.

Sapere dove si trovano i dati. Le integrazioni di Elastic Agent scrivono su flussi di dati denominati logs-<dataset>-<namespace>. I log di autenticazione di Linux dall’integrazione del Sistema, per esempio, finiscono in logs-system.auth-default.

Controlla se event.original. Molte integrazioni non conservano la linea grezza di default; è un’opzione “preserva evento originale”. Se manca, i campi analizzati sono quello che hai, e va bene per un upload JSON.

Tier dei dati. Le ricerche sui tier freddi o congelati sono più lente. Mantieni le finestre strette quando i dati sono vecchi.

Gli esempi seguono la documentazione corrente di Elastic, verificata a ottobre 2026.

Opzione 1: Python con helpers.scan (raccomandato)

import json, os
from elasticsearch import Elasticsearch, helpers

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

with open("elastic_auth_1019.jsonl", "w") as out:
    for hit in helpers.scan(es, index="logs-system.auth-*", query=query, size=1000):
        out.write(json.dumps(hit["_source"]) + "n")

Per le linee grezze, scrivi hit[“_source”].get(“event”, {}).get(“original”, “”) invece dell’intero documento.

Opzione 2: ES|QL per estrazioni rapide

Negli Strumenti Dev di Kibana:

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

Two catches. ES|QL returns 1,000 rows unless you set LIMIT, and it tops out at 10,000. The JSON response also comes as columns plus values, not as records. To turn it into one object per line, save the query body as query.json and run it through 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

Opzione 3: Esporta log dall’interfaccia Kibana (Discover)

Per indagini più piccole, Kibana Discover ti consente di trovare, filtrare ed esportare i log direttamente dal browser senza scrivere script.

  1. Apri Discover. Accedi a Kibana e vai a Analytics → Discover, o seleziona Discover dalla navigazione principale.
  2. Seleziona i tuoi dati. Scegli la vista dati che contiene i log di cui hai bisogno, come logs-system.auth-*. Assicurati che includa i relativi indici Elasticsearch o flussi di dati.
  3. Imposta l’intervallo di tempo. Usa il selettore di tempo nell’angolo in alto a destra per selezionare il periodo di indagine. Restringi la finestra per evitare l’esportazione di eventi non necessari.
  4. Filtra i log. Usa la barra di ricerca e i filtri disponibili per isolare gli eventi rilevanti. Ad esempio, inserisci event.category: authentication per concentrarti sull’attività di autenticazione.
  5. Seleziona i campi. Aggiungi colonne utili come @timestamp, host.name, user.name, source.ip, e message. Se disponibile, includi event.original per preservare il contenuto del log grezzo.
  6. Esporta i risultati. Apri Altro → Esporta → Risultati tab come CSV (in alcune versioni, Condividi → Report CSV). Genera il report e scarica il file CSV. Se l’esportazione non viene scaricata immediatamente, la troverai sotto Gestione Stack → Reportistica.

Alternativa: Copia log come JSON. Per una selezione ridotta di eventi, seleziona le righe rilevanti in Discover, apri il menu Selezionato e scegli Copia documenti come JSON. Incolla il contenuto copiato in un editor di testo e salvalo come file .json. Solo i campi inclusi nella selezione della tabella corrente possono essere copiati.

Limitazioni. I report CSV sono destinati a esportazioni di dimensioni moderate e hanno limiti di conteggio righe e dimensioni file che dipendono dalla versione e configurazione di Kibana. Esportare una definizione di sessione Discover come JSON non esporta gli eventi di log stessi.

Per LogTotal, utilizza un formato log supportato. Quando è richiesto JSONL, esporta i record utilizzando i metodi API Python o Elasticsearch descritti di seguito, o converti i dati esportati in un oggetto JSON per linea prima di caricarli.

Fase 3: Carica, sanifica e rivedi in LogTotal

  1. Carica. Apri logtotal.com e inserisci il file .jsonl.
  2. Sanifica. Esamina il tutto prima di proseguire.
  3. Rivedi. 

Quando va storto

SintomoCausa probabileFix
401 o 403La chiave API manca di privilegi sugli indiciAggiungi lettura e view_index_metadata
La finestra dei risultati è troppo grandeOltre 10.000 hit in una _searchUsa helpers.scan o PIT con search_after
ES|QL restituisce esattamente 1.000 righeLimite predefinitoAggiungi LIMIT (massimo 10.000)
Nessun campo event.originalL’integrazione non l’ha preservatoEsporta invece il documento analizzato
TimeoutDati vecchi su tier freddi o congelatiRestringi la finestra; eseguilo in pezzi

FAQ

E gli avvisi di Elastic Security?

Gli avvisi risiedono nei loro indici (.alerts-security.alerts-*). Esportare gli avvisi è un compito diverso dall’esportare i log dietro di essi; per LogTotal, esporta i log.

Questo funziona per OpenSearch?

L’idea è la stessa, i client differiscono.

Unisciti alla piattaforma Detection as Code di SOC Prime per migliorare la visibilità sulle minacce più rilevanti per il tuo business. Per aiutarti a iniziare e aumentare immediatamente il valore, prenota ora un incontro con gli esperti di SOC Prime.