Elastic用の自動生成ログ「elastic-eventgen」を作りました

Tech Blog hero image: a laptop with colorful fragments bursting from the screen, announcing elastic-eventgen for Elastic in Japanese text. BLOG

Elastic Stack を学んだりデモしたりするとき、いつも困ることがありました。ちょうどいい練習用データがないという問題です。

本番ログは使えない、ランダムなダミーログは退屈すぎる。ES|QL の練習や SOC ラボ、ダッシュボードのデモには、もう少し「意味のあるデータ」が欲しい。そこで、自分で作ってみました。

GitHub に公開しています:

GitHub – SIOS-Technology-Inc/elastic-eventgen
Contribute to SIOS-Technology-Inc/elastic-eventgen development by creating an account on GitHub.

何のするツールか

一言でいうと、ECS スタイルの NDJSON イベントを生成するシミュレーターです。Splunk の Eventgen にインスパイアされていますが、最初から Elastic Stack(ECS、ES|QL、observability、detection engineering)向けに設計しています。

ポイントは、ただランダムなログを吐き出すのではなく、軽い「振る舞いのパターン」を持ったデータを作るところです。

データセット

現在は2種類のジェネレーターが入っています。

linux.auth(SOC 寄り)

Linux の auth.log を想定したデータです。20人の従業員、複数の部署、社内 IP、VPN、攻撃者 IP(国情報つき)、ブルートフォース攻撃のセッション、そして「正規ユーザーのタイポによるログイン失敗バースト」まで含まれています。攻撃と正常な失敗が同じ形をしているので、検知ルールの練習にちょうどいいデータになっています。

network.flow(SRE / observability 寄り)

日本の小さな EC サービスを模した、4つのマイクロサービス間の通信データです。普段は健全な状態ですが、`latency_spike` や `error_spike` のシナリオを有効にすると、特定の時間帯だけ遅延やエラーが上がる、というデータを生成できます。

どう使うのか

ローカルで uv run python generator/main.py を実行するだけで NDJSON ファイルが出力されます。それを _bulk API か Kibana の File Upload で Elasticsearch に入れれば、すぐに Discover や ES|QL で触れます。

詳しいセットアップ手順、CLI オプション、ES|QL のサンプルクエリは GitHub README にすべてまとめています。コピペで動くコマンドを並べているので、興味があれば README から順に試してみてください。

どんな場面で役立つか

  • ES|QL を手を動かして覚えたいとき
  • SOC アナリスト向けのトレーニング教材を作りたいとき
  • ダッシュボードや検知ルールのデモ環境を素早く立ち上げたいとき
  • お客様向けのワークショップや PoC の素材として

「本物そっくりだけど安全に使えるデータで、ちゃんと動くデモがしたい」場面で、特に役に立つはずです。