Come esportare i log da OpenSearch

Come esportare i log da OpenSearch

SOC Prime Team
SOC Prime Team linkedin icon Segui

Estrai documenti con l’API _search, o lascia che un breve script Python li esplori attraverso helpers.scan. Se la tua pipeline ha mantenuto la linea di log originale, solitamente in message o event.original, estrai solo quel campo e ottieni i log grezzi indietro. OpenSearch Dashboards può generare report da ricerche salvate, ma non in un formato che LogTotal legge oggi.

OpenSearch supporta molti SIEM e piattaforme di log fatte in casa, inclusi Amazon OpenSearch Service e l’indicizzatore Wazuh. Prime Core ha 23.466 regole di rilevamento per OpenSearch, mappate su 671 tecniche MITRE ATT&CK. Qui sotto è mostrato come ottenere una fetta pulita di dati, sanificarla e investigarla gratuitamente su LogTotal.

Inizia Gratis

Prima di iniziare

Permessi. Con il plugin di sicurezza abilitato, il tuo ruolo necessita di accesso in lettura al pattern dell’indice: il gruppo di azioni di lettura, o almeno indices:data/read/search* e indices:data/read/scroll*. Su Amazon OpenSearch Service, si tratta di un utente di controllo accessi a grana fine o di credenziali IAM con firma SigV4.

Trova i campi giusti. I pattern di indice differiscono tra le pipeline. Controlla un documento e la mappatura prima di scrivere una query:

GET logs-*/_search?size=1
GET logs-*/_mapping

Stai cercando il campo temporale (@timestamp o timestamp) e, idealmente, un campo che contenga la linea originale (message, event.original, full_log in Wazuh).

Conta prima. Esegui GET logs-*/_count con la stessa query per vedere cosa stai per estrarre.

I comandi seguenti seguono la documentazione di OpenSearch 2.x, verificata ad ottobre 2026.

Opzione 1: Python con opensearch-py (consigliato)

helpers.scan gestisce la paginazione e si pulisce dopo. Installa opensearch-py, poi:

import json, os
from opensearchpy import OpenSearch, helpers

client = OpenSearch(
    "https://opensearch.example.com:9200",
    http_auth=("reader", os.environ["OS_PASSWORD"]),
    verify_certs=True,
)
query = {"query": {"range": {"@timestamp": {
    "gte": "2026-10-19T00:00:00Z", "lt": "2026-10-20T00:00:00Z"}}}}

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

Per ottenere linee grezze invece di documenti, scrivi hit[“_source”].get(“message”, “”) invece dell’intero _source. Per mantenere il file piccolo, aggiungi “_source”: [“@timestamp”, “host.name”, “message”] alla query.

Opzione 2: curl per esportazioni piccole

Fino a 10.000 documenti, una richiesta è sufficiente:

curl -sS -u reader -H 'Content-Type: application/json' 
  "https://opensearch.example.com:9200/logs-*/_search" -d '{
    "size": 10000,
    "query": {"range": {"@timestamp": {"gte": "2026-10-19T00:00:00Z", "lt": "2026-10-20T00:00:00Z"}}},
    "sort": [{"@timestamp": "asc"}]
  }' | jq -c '.hits.hits[]._source' > opensearch_small.jsonl

10.000 è l’indice predefinito.max_result_window. Superato questo limite, la richiesta fallisce, e vuoi l’Opzione 1, o un point in time (PIT) con search_after se preferisci gestirlo da solo con uno script.

Passaggio 3: Carica, sanifica e rivedi su LogTotal

  1. Carica. Apri logtotal.com e carica il file .jsonl.
  2. Sanifica. Esamina prima di continuare.
  3. Rivedi. 

Quando qualcosa va storto

SintomoProbabile causaFix
security_exception / 403Il ruolo non ha i permessi di ricerca o scorrimentoRichiedi lettura sul pattern dell’indice
Finestra del risultato troppo ampiaPiù di 10.000 riscontri in una richiestaUsa helpers.scan o PIT con search_after
Zero riscontri, ma i dati sono presentiNome campo temporale errato, o un’indicazione di fuso orario sbagliataControlla la mappatura; usa esplicitamente timestamp Z
Nessun contesto di ricerca trovatoLo scroll è scaduto tra le paginePassa scroll=”5m” a helpers.scan; usa pagine più piccole
Errori di firma su Amazon OpenSearch ServiceIl dominio basato su IAM si aspetta SigV4Usa AWSV4SignerAuth da opensearch-py

FAQ

Funziona con Wazuh?

Sì. L’indicizzatore Wazuh è basato su OpenSearch. Gli avvisi solitamente si trovano in wazuh-alerts-*, e la linea di log originale in full_log.

Devo esportare tutto in _source?

Solo se necessario. Le pipeline spesso aggiungono decine di campi di arricchimento. Ridurre a tempo, host e il messaggio grezzo mantiene i file piccoli e i caricamenti veloci.

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.