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.
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
- Hochladen. Öffnen Sie logtotal.com und fügen Sie die .jsonl-Datei ein.
- Bereinigen. Schauen Sie es sich an, bevor Sie fortfahren.
- Überprüfen.
Wenn etwas schiefgeht
| Symptom | Wahrscheinlich Ursache | Fix |
|---|---|---|
| security_exception / 403 | Rolle fehlt Such- oder Scroll-Berechtigungen | Bitten Sie um Lesezugriff auf das Indexmuster |
| Ergebnisfenster zu groß | Mehr als 10.000 Treffer in einer Anfrage | Verwenden Sie helpers.scan oder PIT mit search_after |
| Keine Treffer, aber die Daten sind vorhanden | Falscher Name des Zeitfelds oder ein Zeitzonenfehler | Überprüfen Sie die Zuordnung; verwenden Sie explizite Z-Zeitstempel |
| Kein Suchkontext gefunden | Scrollen ist zwischen den Seiten abgelaufen | Vergeben Sie scroll=“5m“ an helpers.scan; verwenden Sie kleinere Seiten |
| Signaturfehler im Amazon OpenSearch Service | IAM-basierte Domain erwartet SigV4 | Verwenden 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.