Graylog przechowuje swoje wiadomości w OpenSearch lub Elasticsearch, więc masz dwie drogi. Użyj API REST Graylog, uwierzytelniając się za pomocą tokenu dostępu, lub bezpośrednio zapytaj indeksy backendowe (domyślnie graylog_*) za pomocą skryptu. W każdym przypadku otrzymujesz JSON. Oryginalna linia znajduje się w message, a w full_message dla niektórych danych wejściowych. Eksport w interfejsie webowym Graylog produkuje format, którego LogTotal dzisiaj nie odczytuje.
Graylog to popularna platforma zarządzania logami, często pierwsza centralna lokalizacja logów, którą konfiguruje zespół. Prime Core ma 23 274 reguł detekcji dla Graylog, zmapowanych na 671 technik MITRE ATT&CK. Poniżej znajduje się sposób, jak wydobywać wiadomości, oczyszczać je i badać za darmo w LogTotal.
Zanim zaczniesz
Token dostępu. W Graylog otwórz ustawienia użytkownika i stwórz token. Za pomocą API, uwierzytelnij się jako <token>:token: token jako nazwa użytkownika i słowo token jako hasło.
Dostęp do backendu, jeśli pójdziesz bezpośrednio. Klastry OpenSearch lub Elasticsearch za Graylog często nie są dostępne z zewnątrz. Zapytaj osobę, która nimi zarządza, o konto tylko do odczytu.
Strumienie i zestawy indeksów. Graylog kieruje wiadomości do strumieni, a strumienie mapują się na zestawy indeksów ze swoimi prefiksami i retencją. Dowiedz się, który zestaw indeksów przechowuje twoje dane.
Opcja 1: API REST Graylog
GL="https://graylog.example.com"
curl -sS -u "$GL_TOKEN:token" -H 'Accept: application/json' -G "$GL/api/search/universal/absolute"
--data-urlencode 'query=source:web-03'
--data-urlencode 'from=2026-10-19T00:00:00.000Z'
--data-urlencode 'to=2026-10-20T00:00:00.000Z'
--data-urlencode 'limit=10000'
| jq -c '.messages[].message' > graylog_web03_1019.jsonl
Nowe wersje Graylog preferują API Views do wyszukiwania. Dla dużych eksportów, Opcja 2 jest bardziej niezawodna.
Opcja 2: Zapytaj indeksy backendowe
To samo podejście jak przy skierowaniu do indeksów Graylog:
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": {"bool": {"filter": [
{"term": {"source": "web-03"}},
{"range": {"timestamp": {"gte": "2026-10-19 00:00:00.000", "lt": "2026-10-20 00:00:00.000"}}},
]}}}
with open("graylog_web03_1019.jsonl", "w") as out:
for hit in helpers.scan(client, index="graylog_*", query=query, size=1000):
out.write(json.dumps(hit["_source"]) + "n")
Graylog przechowuje znacznik czasu jako rrrr-MM-dd HH:mm:ss.SSS w UTC, dlatego to zakres używa tego formatu. Dla backendu działającego na Elasticsearch, użyj klienta elasticsearch w ten sam sposób.
Prześlij, oczyść i sprawdź w LogTotal
- Prześlij. Otwórz logtotal.com i wrzuć plik.
- Oczyść.
- Przejrzyj.
Gdy coś idzie nie tak
| Objaw | Prawdopodobna przyczyna | Fix |
|---|---|---|
| 401 z API | Błędnie napisane uwierzytelnienie tokena | Użyj <token>:token |
| 404 na końcówce wyszukiwania | Końcówka nie jest dostępna w twojej wersji | Użyj Opcji 2 lub API Views |
| Zapytanie backendowe zwraca nic | Zły prefiks indeksu lub format znacznika czasu | Sprawdź zestawy indeksów; użyj rrrr-MM-dd HH:mm:ss.SSS |
| Backend nieosiągalny | Klaster nie jest wystawiony | Poproś o dostęp tylko do odczytu lub użyj API |
FAQ
Wiadomość czy full_message?
Wiadomość jest zawsze tam. full_message pojawia się dla niektórych danych wejściowych, takich jak GELF, i może zawierać więcej szczegółów. Eksportuj oba, jeśli je masz.
Czy to działa dla Graylog Cloud?
Ścieżka API działa. Bezpośredni dostęp do backendu zazwyczaj nie jest dostępny w planach hostingowych.