So exportieren Sie Logs aus OpenSearch

So exportieren Sie Logs aus OpenSearch

SOC Prime Team
SOC Prime Team linkedin icon Folgen

Rufen Sie Dokumente mit der _search API ab oder lassen Sie ein kurzes Python-Skript mit helpers.scan durch sie blättern. Wenn Ihre Pipeline die Original-Logzeile beibehalten hat, normalerweise in message oder event.original, extrahieren Sie nur dieses Feld und Sie erhalten die Rohprotokolle zurück. OpenSearch Dashboards kann Berichte aus gespeicherten Suchen generieren, aber nicht in einem Format, das LogTotal heute liest.

OpenSearch unterstützt viele maßgeschneiderte SIEMs und Log-Plattformen, einschließlich Amazon OpenSearch Service und den Wazuh-Indexer. Prime Core hat 23.466 Erkennungsregeln für OpenSearch, die 671 MITRE ATT&CK-Techniken zugeordnet sind. Unten erfahren Sie, wie Sie einen sauberen Datenausschnitt erhalten, ihn bereinigen und kostenlos in LogTotal untersuchen können.

Kostenlos loslegen

Bevor Sie beginnen

Berechtigungen. Wenn das Sicherheits-Plugin aktiviert ist, benötigt Ihre Rolle Lesezugriff auf das Indexmuster: die Lesenden-Aktionsgruppe oder zumindest indices:data/read/search* und indices:data/read/scroll*. Im Amazon OpenSearch Service ist das entweder ein Benutzer mit feingranularer Zugriffskontrolle oder IAM-Anmeldeinformationen mit SigV4-Signierung.

Die richtigen Felder finden. Indexmuster unterscheiden sich zwischen Pipelines. Überprüfen Sie ein Dokument und die Zuordnung, bevor Sie eine Abfrage schreiben:

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

Sie suchen das Zeitfeld (@timestamp oder timestamp) und idealerweise ein Feld, das die Originalzeile enthält (message, event.original, full_log in Wazuh).

Zuerst zählen. Führen Sie GET logs-*/_count mit derselben Abfrage aus, um zu sehen, was Sie gerade abrufen.

Die folgenden Befehle folgen der OpenSearch 2.x-Dokumentation und wurden im Oktober 2026 überprüft.

Option 1: Python mit opensearch-py (empfohlen)

helpers.scan behandelt das Paging und räumt nach sich selbst auf. Installieren Sie opensearch-py, dann:

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")

Um Rohzeilen anstelle von Dokumenten zu erhalten, schreiben Sie hit[„_source“].get(„message“, „“) anstelle der gesamten _source. Um die Datei klein zu halten, fügen Sie „_source“: [„@timestamp“, „host.name“, „message“] zur Abfrage hinzu.

Option 2: curl für kleine Exporte

Für bis zu 10.000 Dokumente reicht eine Anfrage aus:

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 ist das Standardwert für index.max_result_window. Darüber hinaus schlägt die Anfrage fehl, und Sie sollten Option 1 oder einen Point-in-Time (PIT) mit search_after verwenden, wenn Sie es lieber selbst skripten möchten.

Schritt 3: Hochladen, bereinigen und in LogTotal überprüfen

  1. Hochladen. Öffnen Sie logtotal.com und fügen Sie die .jsonl-Datei ein.
  2. Bereinigen. Schauen Sie es sich an, bevor Sie fortfahren.
  3. Überprüfen. 

Wenn etwas schiefgeht

SymptomWahrscheinlich UrsacheFix
security_exception / 403Rolle fehlt Such- oder Scroll-BerechtigungenBitten Sie um Lesezugriff auf das Indexmuster
Ergebnisfenster zu großMehr als 10.000 Treffer in einer AnfrageVerwenden Sie helpers.scan oder PIT mit search_after
Keine Treffer, aber die Daten sind vorhandenFalscher Name des Zeitfelds oder ein ZeitzonenfehlerÜberprüfen Sie die Zuordnung; verwenden Sie explizite Z-Zeitstempel
Kein Suchkontext gefundenScrollen ist zwischen den Seiten abgelaufenVergeben Sie scroll=“5m“ an helpers.scan; verwenden Sie kleinere Seiten
Signaturfehler im Amazon OpenSearch ServiceIAM-basierte Domain erwartet SigV4Verwenden Sie AWSV4SignerAuth von opensearch-py

FAQ

Funktioniert das für Wazuh?

Ja. Der Wazuh-Indexer basiert auf OpenSearch. Alarme befinden sich normalerweise in wazuh-alerts-*, und die Original-Logzeile in full_log.

Soll ich alles in _source exportieren?

Nur wenn Sie es brauchen. Pipelines fügen oft Dutzende von Anreicherungsfeldern hinzu. Das Kürzen auf Zeit, Host und die Rohnachricht hält die Dateien klein und die Uploads schnell.

Treten Sie der Detection as Code-Plattform von SOC Prime bei um die Sichtbarkeit der für Ihr Unternehmen relevantesten Bedrohungen zu verbessern. Um Ihnen den Einstieg zu erleichtern und unmittelbaren Mehrwert zu erzielen, buchen Sie jetzt ein Treffen mit den Experten von SOC Prime.