Graylogログのエクスポート方法

Graylogログのエクスポート方法

SOC Prime Team
SOC Prime Team linkedin icon フォローする

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を使用する場合、:tokenとして認証します;トークンをユーザーネーム、tokenをパスワードとして使用します。

直接アクセスする場合のバックエンドアクセス。 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でアップロード、サニタイズ、レビュー

  1. アップロード。 開く logtotal.com およびファイルをドロップします。 
  2. サニタイズ。 
  3. レビュー。 

問題が発生した場合

症状考えられる原因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ルートは機能します。ホステッドプランでは通常バックエンドへの直接アクセスは利用できません。

SOC PrimeのDetection as Codeプラットフォームに参加し ビジネスに最も関連性のある脅威に対する可視性を向上させましょう。開始して即座に価値をもたらすためには、今すぐSOC Primeの専門家とのミーティングを予約してください。