Jak eksportować logi z Elasticsearch i Kibana

Jak eksportować logi z Elasticsearch i Kibana

SOC Prime Team
SOC Prime Team linkedin icon Śledź

Użyj krótkiego skryptu Pythona z pomocnikami klienta oficjalnego.helpers.scan, lub API _search z punktem w czasie (PIT) i search_after. Dla szybkich odbiorów do 10 000 wierszy, ES|QL z format=json działa bezpośrednio z Narzędzi Deweloperskich Kibana. Kibana Discover również może wygenerować raport, ale nie w formacie, który LogTotal odczytuje dzisiaj. Jeśli twoja integracja to zachowała, event.original zawiera surową linię logu.

Elastic jest jednym z najczęściej wykorzystywanych fundamentów do bezpieczeństwa analityki własnej, od Elastic Security po samodzielnie zbudowane stosy. Prime Core ma 23 722 reguły wykrywania dla Elastic, mapowane do 671 technik MITRE ATT&CK. Poniżej pokazano, jak wydobyć dane, oczyścić je i zbadać je za darmo w LogTotal.

Zacznij za darmo

Zanim zaczniesz

Uwierzytelnianie. Utwórz klucz API w Stack Management → Klucze API z uprawnieniami do odczytu i view_index_metadata na indeksach, których potrzebujesz. Wyślij go jako Authorization: ApiKey <key>. W Elastic Cloud punkt końcowy Elasticsearch znajduje się na stronie przeglądu wdrożenia.

Wiedzieć, gdzie znajdują się dane. Integracje Elastic Agent zapisują do strumieni danych nazwanych logs-<dataset>-<namespace>. Logi uwierzytelniania Linux z integracji System, na przykład, lądują w logs-system.auth-default.

Sprawdź, czy istnieje event.original. Wiele integracji domyślnie nie zachowuje surowej linii; to opcja „zachowaj oryginalne wydarzenie”. Jeśli go brakuje, masz tylko przeanalizowane pola, co jest wystarczające do przesłania JSON.

Warstwy danych. Wyszukiwania w warstwach zimnych lub zamrożonych są wolniejsze. Utrzymuj wąskie okna, gdy dane są stare.

Przykłady zgodne z aktualną dokumentacją Elastic, sprawdzono październik 2026.

Opcja 1: Python z helpers.scan (zalecane)

importuj json, os
z elasticsearch importuj 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"}}}}

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

Dla surowych linii, zapisz hit[„_source”].get(„event”, {}).get(„original”, „”) zamiast całego dokumentu.

Opcja 2: ES|QL do szybkich odbiorów

W Narzędziach Deweloperskich 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
  """
}

Dwa haczyki. ES|QL zwraca 1 000 wierszy, chyba że ustawisz LIMIT, a maksymalnie 10 000. Odpowiedź JSON również pojawia się jako kolumny plus wartości, nie jako rekordy. Aby zamienić to na jeden obiekt na linię, zapisz ciało zapytania jako query.json i przepuść przez 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

Opcja 3: Eksport logów z interfejsu Kibana (Discover)

Dla mniejszych śledztw, Kibana Discover umożliwia znajdowanie, filtrowanie i eksportowanie logów bezpośrednio z przeglądarki bez pisania skryptów.

  1. Otwórz Discover. Zaloguj się do Kibana i przejdź do Analytics → Discover, lub wybierz Discover z głównej nawigacji.
  2. Wybierz swoje dane. Wybierz widok danych zawierający potrzebne logi, takie jak logs-system.auth-*. Upewnij się, że obejmuje odpowiednie indeksy Elasticsearch lub strumienie danych.
  3. Ustaw zakres czasu. Użyj wybieraka czasu w prawym, górnym rogu, aby wybrać okres śledztwa. Zawęź okno, aby uniknąć eksportu niepotrzebnych wydarzeń.
  4. Filtruj logi. Użyj paska wyszukiwania i dostępnych filtrów, aby odizolować odpowiednie wydarzenia. Na przykład, wprowadź event.category: authentication, aby skupić się na aktywności uwierzytelnienia.
  5. Wybierz pola. Dodaj przydatne kolumny, takie jak @timestamp, host.name, user.name, source.ip, i message. Jeśli dostępne, dodaj event.original, aby zachować surowe treści logu.
  6. Eksportuj wyniki. Otwórz More → Export → Tab results as CSV (w niektórych wersjach, Udostępnij → Raporty CSV). Wygeneruj raport i pobierz plik CSV. Jeśli eksport nie zostanie pobrany natychmiast, znajdź go w Stack Management → Raportowanie.

Alternatywa: Kopiuj logi jako JSON. Dla małego wyboru wydarzeń, wybierz odpowiednie wiersze w Discover, otwórz menu Wybrane i wybierz Kopiuj dokumenty jako JSON. Wklej skopiowaną treść do edytora tekstu i zapisz jako plik .json. Skopiować można tylko pola zawarte w bieżącym wyborze tabeli.

Ograniczenia. Raporty CSV są przeznaczone do eksportów o umiarkowanej wielkości i mają limity ilości wierszy i wielkości plików w zależności od wersji i konfiguracji Kibana. Eksportowanie definicji sesji Discover jako JSON nie eksportuje samych zdarzeń z logami.

Dla LogTotal, użyj obsługiwanego formatu logów. Gdy wymagany jest JSONL, wyeksportuj rekordy metodami Python lub Elasticsearch API opisanymi poniżej, lub przekonwertuj wyeksportowane dane na jeden obiekt JSON na linię przed przesłaniem.

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

  1. Prześlij. Otwórz logtotal.com i umieść tam plik .jsonl.
  2. Oczyść. Oceń, zanim przejdziesz dalej.
  3. Przejrzyj. 

Kiedy coś pójdzie nie tak

ObjawPrawdopodobna przyczynaFix
401 lub 403Klucz API nie ma uprawnień do indeksówDodaj prawa do odczytu i view_index_metadata
Okno wyników jest za dużeWięcej niż 10 000 trafień w jednym _searchUżyj helpers.scan lub PIT search_after
ES|QL zwraca dokładnie 1 000 wierszyDomyślny limitDodaj LIMIT (max 10 000)
Brak pola event.originalIntegracja go nie zachowałaZamiast tego wyeksportuj przeanalizowany dokument
Przekroczenie limitów czasowychStare dane na zimnych lub zamrożonych warstwachZawieś okno; uruchom w częściach

FAQ

A co z alertami Elastic Security?

Alerty znajdują się w ich własnych indeksach (.alerts-security.alerts-*). Eksportowanie alertów to inne zadanie niż eksportowanie logów będących ich tłem; dla LogTotal, eksportuj logi.

Czy to działa dla OpenSearch?

Idea jest taka sama, różnią się klienci.

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.