GraylogはメッセージをOpenSearchまたはElasticsearchに保存しますので、2つのルートがあります。Graylog REST APIを使用して、アクセス トークンを用いて認証するか、スクリプトでバックエンドインデックス(デフォルトではgraylog_*)に直接クエリをかけます。どちらの方法でもJSONを取得できます。オリジナルの行はmessageにあり、一部の入力ではfull_messageにあります。Graylog Webインターフェースのエクスポートは、LogTotalが今日読み込まないフォーマットを生成します。
Graylogは、チームが初めてセントラルロギングを設定する際に、よく利用されるオープンなログ管理プラットフォームです。Prime CoreはGraylog用の23,274の検出ルールを提供しており、MITRE ATT&CKの671のテクニックにマッピングされています。以下に、メッセージを抽出し、サニタイズして、LogTotalで無料で調査する方法を説明します。
始める前に
アクセス トークン。 Graylogで、ユーザーの設定を開き、トークンを作成します。APIを使用する場合、
直接アクセスする場合のバックエンドアクセス。 GraylogのバックにあるOpenSearchまたはElasticsearchクラスタは、通常外からはアクセスできません。それを運用している人に、リードオンリーアカウントを依頼してください。
ストリームとインデックスセット。 Graylogはメッセージをストリームにルーティングし、ストリームは独自のプレフィックスと保持期間を持つインデックスセットにマッピングされます。自分のデータがどのインデックスセットにあるかを知っておきましょう。
オプション1: Graylog REST API
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
新しいGraylogバージョンではViews検索APIを推奨します。大きなエクスポートには、オプション2の方が信頼性があります。
オプション2: バックエンドインデックスへのクエリ
これは、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は日付をUTCでyyyy-MM-dd HH:mm:ss.SSS形式で保存するため、範囲クエリはそのフォーマットを使用します。Elasticsearchを使用するバックエンドの場合、elasticsearchクライアントを同じ方法で使用してください。
LogTotalでアップロード、サニタイズ、レビュー
- アップロード。 開く logtotal.com およびファイルをドロップします。
- サニタイズ。
- レビュー。
問題が発生した場合
| 症状 | 考えられる原因 | Fix |
|---|---|---|
| APIからの401 | トークン認証の記述が間違っている | <token>:tokenを使用 |
| 検索エンドポイントでの404 | バージョンで利用できないエンドポイント | オプション2、またはViews APIを使用 |
| バックエンドクエリが何も返さない | インデックスプレフィックスが間違っている、またはタイムスタンプフォーマットが間違っている | インデックスセットを確認; yyyy-MM-dd HH:mm:ss.SSSを使用 |
| バックエンドにアクセスできない | クラスターが公開されていない | リードオンリーアクセスを依頼するか、APIを使用 |
FAQ
Messageまたはfull_message?
Messageは常に存在します。full_messageはGELFなどの一部の入力で登場し、より詳細な情報を保持することができます。持っている場合は両方をエクスポートしてください。
Graylog Cloudでこれは機能しますか?
APIルートは機能します。ホステッドプランでは通常バックエンドへの直接アクセスは利用できません。