公式クライアントのhelpers.scanを使った短いPythonスクリプト、または_point in time (PIT)とsearch_afterを使った_search APIを使用できます。10,000行までのクイックな取得には、KibanaのDev Toolsからformat=jsonでES|QLを使用すると便利です。Kibana Discoverはレポートを作成することもできますが、現在のLogTotalが読み取る形式ではありません。統合がそれを保持しているなら、event.originalが生のログ行を保持しています。
Elasticは、Elastic Securityから自作のスタックに至るまで、社内セキュリティ分析の最も一般的な基盤の一つです。Prime Coreには、671のMITRE ATT&CK技術にマッピングされたElastic用の23,722の検出ルールがあります。以下は、データを取得し、クリーンにし、LogTotalで無料で調査する方法です。
開始する前に
認証 APIキーを作成 スタック管理 → APIキー 必要なインデックスでreadとview_index_metadataを持つ。Authorization: ApiKey <key>として送信する。Elastic Cloudでは、Elasticsearchエンドポイントはデプロイメントの概要ページにあります。
データがどこにあるかを知っておく。 Elastic Agentの統合は、logs-<dataset>-<namespace>という名前のデータストリームに書き込みます。例えば、System統合からのLinux認証ログはlogs-system.auth-defaultに着地します。
確認する event.original. 多くの統合はデフォルトで生の行を保持しません。それは「元のイベントを保持する」オプションです。もしそれが欠けているなら、解析されたフィールドがあなたの持っているものであり、JSONアップロードにはそれで構いません。
データ層。 コールドまたはフローズンレイヤーに対する検索は遅くなります。データが古いときはウィンドウを狭める。
例は2026年10月に確認された最新のElasticドキュメントに従っています。
オプション1: 呼応するPython (推奨)
import json, os
from elasticsearch import 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"}}}}
with open("elastic_auth_1019.jsonl", "w") as out:
for hit in helpers.scan(es, index="logs-system.auth-*", query=query, size=1000):
out.write(json.dumps(hit["_source"]) + "n")
生の行の場合、全ドキュメントの代わりにhit[“_source”].get(“event”, {}).get(“original”, “”)を書き込む。
オプション2: クイックプル用のES|QL
Kibana Dev Toolsで:
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
"""
}
二つのカッチ。ES|QLはLIMITを設定しない限り1,000行を返し、最大は10,000です。JSONレスポンスもレコードではなく、カラムプラス値として返されます。それを行毎に1つのオブジェクトにするには、クエリボディをquery.jsonとして保存し、それを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
オプション3: Kibana UI(Discover)からログをエクスポート
小規模な調査では、Kibana Discoverを使用して、ブラウザから直接ログを探し、フィルタリングしてエクスポートできます。スクリプトを書く必要はありません。
- Discoverを開く。 Kibanaにサインインし、 分析 → Discover、またはメインナビゲーションからDiscoverを選択します。
- データを選択。 必要なログを含むデータビューを選択します。 例えば、logs-system.auth-*のように。関連するElasticsearchインデックスやデータストリームを含んでいることを確認してください。
- 時間範囲を設定します。 右上の時間ピッカーを使用して調査期間を選択します。不要なイベントをエクスポートしないようにウィンドウを狭めます。
- ログをフィルタリングする。 サーチバーと利用可能なフィルターを使用して関連するイベントを分離します。 例えば、event.category: authenticationと入力することで、認証活動に焦点を当てることができます。
- フィールドを選択する。 @timestamp、host.name、user.name、source.ip、messageのような有用なカラムを追加します。利用可能な場合は生のログコンテンツを保持するためにevent.originalを含めます。
- 結果をエクスポートします。 開く その他 → エクスポート → 結果をCSVとしてタブ化 (一部のバージョンでは、 共有 → CSVレポート)を選択します。レポートを生成し、CSVファイルをダウンロードします。エクスポートがすぐにダウンロードされない場合は、 スタック管理 → レポート.
にあります。 代替: JSONとしてログをコピー。 少数のイベントを選択する場合、Discoverで関連する行を選択し、 メニューを開いて ドキュメントをJSONとしてコピーを選択します。コピーした内容をテキストエディタに貼り付けて.jsonファイルとして保存します。現在のテーブル選択に含まれるフィールドのみがコピーされる可能性があります。
制限事項。 CSVレポートは中程度のサイズのエクスポートを想定しており、Kibanaのバージョンと設定に依存する行数とファイルサイズの制限があります。JSONとしてDiscoverセッション定義をエクスポートしても、ログイベント自体はエクスポートされません。
LogTotalでは、サポートされているログ形式を使用します。JSONLが必要な場合は、以下のPythonまたはElasticsearch APIメソッドを使用してレコードをエクスポートするか、エクスポートされたデータを1行毎に1つのJSONオブジェクトに変換してからアップロードしてください。
ステップ3: LogTotalでアップロード、クリーン化、レビュー
- アップロード。 開く logtotal.com にアクセスして.jsonlファイルをドロップします。
- サニタイズ。 続行する前に見直します。
- レビュー。
問題が発生した場合
| 症状 | 考えられる原因 | Fix |
|---|---|---|
| 401または403 | APIキーがインデックスに対する権限を持っていない | readとview_index_metadataを追加 |
| 結果ウィンドウが大きすぎる | 一回の_searchで10,000以上のヒット | helpers.scanまたはsearch_afterを使用 |
| ES|QLは1,000行だけを返す | デフォルトの制限 | LIMITを追加 (最大10,000) |
| event.original フィールドがない | 統合がそれを保持しなかった | 解析済みのドキュメントをエクスポート |
| タイムアウト | 古いデータがコールドまたはフローズン層にある | ウィンドウを狭める; 部分的に実行 |
FAQ
Elastic Securityアラートについてはどうですか?
アラートは独自のインデックス(.alerts-security.alerts-*)にあります。アラートをエクスポートするのはそれらの背後にあるログをLogTotalにエクスポートするのとは異なる仕事です;ログをエクスポートしてください。
OpenSearchにも使えますか?
考え方は同じですが、クライアントは異なります。