Jak eksportować logi z OpenSearch

Jak eksportować logi z OpenSearch

SOC Prime Team
SOC Prime Team linkedin icon Śledź

Pobierz dokumenty za pomocą API _search lub pozwól krótkiej skrypcie Python przewijać je za pomocą helpers.scan. Jeśli twój pipeline zachował oryginalną linię logowania, zazwyczaj w message lub event.original, wyciągnij tylko to pole i otrzymasz surowe logi. OpenSearch Dashboards może generować raporty z zapisanych wyszukiwań, ale nie w formacie, który LogTotal czyta dzisiaj.

OpenSearch wspiera wiele własnych systemów SIEM i platform logowania, w tym Amazon OpenSearch Service i indeksator Wazuh. Prime Core ma 23,466 reguł detekcji dla OpenSearch, przypisanych do 671 technik MITRE ATT&CK. Poniżej pokazano, jak uzyskać czystą porcję danych, oczyścić ją i zbadać za darmo w LogTotal.

Rozpocznij za darmo

Zanim zaczniesz

Uprawnienia. Z włączoną wtyczką zabezpieczeń, twoja rola musi mieć dostęp do odczytu wzorca indeksu: grupę akcji do odczytu, lub przynajmniej indices:data/read/search* i indices:data/read/scroll*. Na Amazon OpenSearch Service, to albo użytkownik z kontrolą dostępu o drobnoziarnistym poziomie, albo poświadczenia IAM z podpisem SigV4.

Znajdź odpowiednie pola. Wzorce indeksów różnią się między pipeline’ami. Sprawdź jeden dokument i mapowanie, zanim napiszesz zapytanie:

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

Szukasz pola czasu (@timestamp lub timestamp) i, idealnie, pola, które przechowuje oryginalną linię (message, event.original, full_log w Wazuh).

Najpierw policz. Uruchom GET logs-*/_count z tym samym zapytaniem, aby zobaczyć, co zamierzasz pobrać.

Poniższe komendy posługują się dokumentacją OpenSearch 2.x, sprawdzoną w październiku 2026.

Opcja 1: Python z opensearch-py (zalecane)

helpers.scan zajmuje się paginacją i sprząta po sobie. Zainstaluj opensearch-py, a następnie:

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

Aby uzyskać surowe linie zamiast dokumentów, napisz hit[„_source”].get(„message”, „”) zamiast całego _source. Aby zachować mały plik, dodaj „_source”: [„@timestamp”, „host.name”, „message”] do zapytania.

Opcja 2: curl dla małych eksportów

Dla maksymalnie 10,000 dokumentów wystarczy jedno żądanie:

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 to domyślne index.max_result_window. Po przekroczeniu tego, żądanie się nie powiedzie i potrzebujesz Opcji 1, lub punktu w czasie (PIT) z search_after, jeśli wolisz skryptować to samodzielnie.

Krok 3: Prześlij, oczyść i przejrzyj w LogTotal

  1. Prześlij. Otwórz logtotal.com i wrzuć plik .jsonl.
  2. Oczyść dane. Przejrzyj je przed kontynuacją.
  3. Przejrzyj. 

Kiedy coś się psuje

ObjawPrawdopodobna przyczynaFix
security_exception / 403Rola nie ma uprawnień do wyszukiwania lub przeglądaniaPoproś o odczyt wzorca indeksu
Okno wyników jest zbyt dużeWięcej niż 10,000 wyników w jednym żądaniuUżyj helpers.scan lub PIT z search_after
Zero wyników, ale dane są tamZła nazwa pola czasu lub pomyłka w strefie czasowejSprawdź mapowanie; używaj jawnych znaczników czasu Z
Nie znaleziono kontekstu wyszukiwaniaScroll wygasł między stronamiPrzekaż scroll=”5m” do helpers.scan; używaj mniejszych stron
Błędy podpisu w Amazon OpenSearch ServiceDomena na bazie IAM oczekuje SigV4Użyj AWSV4SignerAuth z opensearch-py

FAQ

Czy to działa z Wazuh?

Tak. Indexer Wazuh jest oparty na OpenSearch. Alerty zazwyczaj znajdują się w wazuh-alerts-* i oryginalna linia logowania w full_log.

Czy powinienem eksportować wszystko w _source?

Tylko jeśli tego potrzebujesz. Pipeline często dodaje dziesiątki pól wzbogacających. Ograniczenie do czasu, hosta i surowego komunikatu utrzymuje pliki małe i przyspiesza ich przesyłanie.

Dołącz do platformy Detection as Code firmy SOC Prime aby zwiększyć widoczność zagrożeń najbardziej istotnych dla Twojego biznesu. Aby pomóc Ci rozpocząć i natychmiast uzyskać wartość, umów się teraz na spotkanie z ekspertami SOC Prime.