ログ集約はSREの三大悩みごとの一つで、選択肢は概ね「ELK Stack(重い・難しい)」「Grafana Loki(クラウド前提・チューニング必要)」「SaaS(高い・データ主権が問題)」の三択だった。logbull/logbull はその間にゼロコンフィグ・自己ホスト・Apache 2.0で割り込んできた新興のOSSログ収集システムだ。執筆時点でGitHub Stars 219、最小要件は 2 CPU / 4GB RAM / 20GB ストレージ——個人サーバから小規模本番まで現実的なリソースで動く。Docker compose一発で立ち上がり、Python・Go・Java・JavaScript・C#・PHP・Ruby・Rust・cURLからログを送り込める。
この記事では Log Bull の概要・SDK・運用設計を解説します。AI時代の運用自動化全体像はAI自動化ツール完全ガイド2026をご覧ください。
この記事のポイント
docker compose up -d一発で立ち上がる、ゼロコンフィグの自己ホストログ基盤。Apache 2.0で無料。- 8言語SDK+cURL対応、プロジェクト分離・APIキー・レート制限・監査ログまで含む実用構成。
- ELK/Lokiの「重い・難しい・クラウド依存」の悩みに対する「程よく軽い」ポジショニング。
- AIエージェントが大量のログを吐く時代に、ログ集約を意識せずに済むインフラを目指している。
Source: logbull/logbull — リアルタイムストリーミング・テキスト/フィールド/時間範囲検索を備えたダッシュボード。
Log Bullとは:ELK/Lokiの「重さ」への対抗策
Log Bullは、創設チームがELK/Lokiが抱えていた構造的な重さに対する直接的なアンサーとしてリリースしたOSSだ。Goが72.7%、TypeScriptが25.5%という構成で、サーバ本体はGo製、UIはTypeScript製。Apache 2.0で公開されている。
| 観点 | ELK Stack | Grafana Loki | Log Bull |
|---|---|---|---|
| 最小リソース | 8GB+ RAM、JVM必須 | 4GB+ RAM、Object Storage前提 | 2 CPU / 4GB RAM |
| 起動コマンド | docker-compose × 複数 + 設定 | docker-compose + Promtail/Alloy + Grafana | docker compose up -d 1個 |
| 設定ファイル | elasticsearch.yml / kibana.yml / logstash.conf | loki-config.yaml + promtail-config.yaml | 不要(ゼロコンフィグ) |
| マルチプロジェクト | 別途設計 | テナント設計が必要 | 組み込み(API Key単位) |
| 監査ログ | プラグイン or 自前 | 別途実装 | 組み込み |
| ライセンス | Elastic License v2(一部)/ Apache 2.0 | AGPL v3 | Apache 2.0 |
| クラウドサービス | Elastic Cloud | Grafana Cloud | OSSのみ(クラウド版なし) |
ライセンスの面でAGPL v3のLokiより緩く、Elastic License v2のElasticより寛容という位置取りが、商用組み込みを検討する開発者には地味に効く。
主な機能:マルチプロジェクト・APIキー・監査ログ
公式が掲げる主な機能を、エンタープライズで実際に使う観点から整理する。
| 機能 | 中身 | 利点 |
|---|---|---|
| プロジェクト分離 | アプリごとに独立したAPIキー・データ空間 | 1つのLog Bullで複数プロダクトを並行運用 |
| マルチユーザー | アクセス管理+ロール | 開発者・SRE・経営層で閲覧権限を分離 |
| リアルタイムストリーミング | 検索・フィルタ付き | 障害発生時にtailする運用が成立 |
| 監査ログ | ユーザー操作を全記録 | ISMS/Pマーク監査での説明資料に直結 |
| APIキー管理 | ドメイン制限・レート制限 | 流出時の被害局所化 |
| ヘルスチェック | /api/v1/system/health |
k8s/ECSのlivenessProbeにそのまま流せる |
特に「監査ログが組み込み」は、自前でPostgresに監査テーブルを切る運用と比べて、初期コストが大きく下がる。中小規模のSaaS事業者で 「監査ログを取れと顧客に言われたが、どう取ればいいか分からない」 というケースで、Log Bull に乗せるだけで体裁が整う。
ログ集約と並行する形で、エージェント自動化のロギング設計についてはApache Airflow(データパイプラインの定番OSS)で扱う観点も併読すると、運用全体の見取り図が描きやすい。
インストール3パターン:自動スクリプト / docker run / docker-compose
Log Bullは3通りのインストール経路があり、それぞれが想定する運用シナリオが違う。
パターン1:自動インストールスクリプト(Linux環境のPoC向け)
sudo apt-get install -y curl && \
sudo curl -sSL https://raw.githubusercontent.com/logbull/logbull/main/install-logbull.sh \
| sudo bash
DebianベースのLinuxで、最速で立ち上げて検証したい時の選択肢。本番には推奨しないが、評価環境でELK/Lokiと並べて触り比べるときに最も摩擦が少ない。
パターン2:docker run 一発(単発検証向け)
docker run -d \
--name logbull \
-p 4005:4005 \
-v ./logbull-data:/logbull-data \
--restart unless-stopped \
--health-cmd="curl -f http://localhost:4005/api/v1/system/health || exit 1" \
--health-interval=5s \
--health-retries=30 \
logbull/logbull:latest
これでホストの 4005番ポートにUIとAPIが立ち上がる。./logbull-data にログとメタデータが書かれるため、コンテナを再作成してもデータが消えない。
パターン3:docker-compose.yml(本番運用想定)
services:
logbull:
container_name: logbull
image: logbull/logbull:latest
ports:
- "4005:4005"
volumes:
- ./logbull-data:/logbull-data
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:4005/api/v1/system/health"]
interval: 5s
timeout: 5s
retries: 30
本番運用ならこのcomposeにリバースプロキシ(nginx/Caddy)+ TLS証明書(Let’s Encrypt)を被せて公開する形になる。Volumeは外部ボリュームに切り出し、定期スナップショットを取るのが定石。
初期パスワードのリセットはコンテナ内のCLIから打てる。
docker exec -it logbull ./main \
--new-password="YourNewSecurePassword123" \
--email="admin"
「バイナリを直接コンテナで叩ける」設計はトラブル対応で頼れる。Postgres等の重い依存を抱えたELKだとこの種の操作が複雑になりやすいが、Log Bullは1バイナリで完結している。
SDKの実装:Python・Go・Java・JS・PHP・Ruby・Rust
Log Bullの強みは「8言語+cURL」で同じシンプルなインターフェースを提供する点だ。Python例から見る。
from logbull import LogBullLogger
logger = LogBullLogger(
host="http://LOGBULL_HOST",
project_id="LOGBULL_PROJECT_ID",
api_key="YOUR_API_KEY"
)
logger.info("User logged in successfully", fields={
"user_id": "12345",
"username": "john_doe",
"ip": "192.168.1.100"
})
fields=にディクショナリを渡すと、UI側でフィールド単位の検索・フィルタが効く。これは「単純なテキストログ」とは違い、構造化ログとしてfield:value形式で検索できる、ということ。
cURLで素朴にPOSTすることも可能だ。
curl -X POST http://LOGBULL_HOST/api/v1/logs \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"project_id": "YOUR_PROJECT_ID",
"level": "info",
"message": "User logged in successfully",
"fields": {
"user_id": "12345",
"username": "john_doe"
}
}'
これがあれば任意のシェルスクリプト・cronジョブ・GitHub Actionsからログを送れる。SDKを入れにくいレガシー環境でも、curlだけで連携できるのは現実的な強みだ。
各言語SDK(Go、Java、JavaScript、C#、PHP、Ruby、Rust)も同じ「ホスト・プロジェクトID・APIキー・fields」のシンプルなAPIを採用している。8言語間でAPIシグネチャが揃っているので、マイクロサービス側の言語選択がバラバラでも、ログ集約の書き方が一貫する。
アーキテクチャ:1コンテナで完結する設計の意味
Log Bullの内部アーキテクチャは、「1バイナリ+ローカルボリュームで完結」を最優先している。
BadgerDB等] WEB[Web UI
TypeScript] AUDIT[監査ログ] end LB --> VOL[(./logbull-data
ローカルボリューム)] USER[ユーザー] -->|ブラウザ| WEB K8S[k8s/ECS] -->|/health| API
このシンプルさは、ELK/Lokiの「Elasticsearch + Kibana + Logstash + Beats」や「Loki + Promtail + Grafana + Object Storage」と比べると一目瞭然だ。
| 観点 | ELK | Loki | Log Bull |
|---|---|---|---|
| 必須コンポーネント数 | 3〜4 | 3〜4 | 1 |
| 必要な永続層 | Elasticsearch shards | Object Storage(S3等) | ローカルディスク or NFS |
| スケール戦略 | 水平スケール(要設計) | 水平スケール(要設計) | 垂直スケール優先 |
| データ移送 | Logstash/Beats | Promtail/Alloy | SDK直送(追加配管不要) |
「スケール戦略が垂直優先」はLog Bullの主な制約でもある。1ノードで処理可能な範囲を超えるログ量(1日数TB級)になると、ELK/Lokiの水平スケールが必要になる。「中小規模のシステム」「個人〜小チームのプロダクト」「PoC・社内ツール」の領域で輝く設計だ。
ELK / Loki / SaaS との詳細比較:いつLog Bullを選ぶべきか
「Log Bullを選ぶべきか、ELK/Lokiにすべきか」は、ログ量とチーム規模で意思決定する。
| シナリオ | 推奨 | 理由 |
|---|---|---|
| 個人プロジェクト・趣味サーバ | Log Bull | 4GB RAMで動く、設定不要 |
| スタートアップ初期(〜10エンジニア) | Log Bull | 監査ログ込みで体裁が整う |
| 中規模SaaS(10〜50エンジニア) | Log Bull | プロジェクト分離で複数プロダクト捌ける |
| 大規模システム(1日 数TB+) | ELK or Loki | 水平スケール必須 |
| マルチリージョン分散 | ELK or Loki | レプリケーション機能が成熟 |
| データを外部送信できない | Log Bull or ELK self-hosted | クラウドSaaS不可、Lokiも自前構築 |
| 既にGrafana中心の運用 | Loki | Grafanaダッシュボードと一体運用 |
| 機械学習で異常検知したい | ELK + ML | Elasticのプラグイン群が豊富 |
| とにかく安く済ませたい | Log Bull | OSS無料、リソースが軽い |
「機能の網羅性」は明確にELK>Loki>Log Bullだが、「運用負荷の小ささ」は逆順になる。社内のSRE人員が薄いチームほど、Log Bullの軽さは効く。
運用設計:保管期限・バックアップ・障害復旧
Log Bullは設定不要を売りにしているが、本番運用ではボリューム管理・バックアップ・監視は自前で設計する必要がある。最低限のチェックリストはこう。
| 項目 | 推奨設計 |
|---|---|
| ボリューム配置 | ./logbull-data を別ディスク(例: /var/lib/logbull-data) に bind mount |
| 保管期限 | アプリ側で「古いログの削除API」を呼ぶスクリプトをcronで運用(公式の自動GCがない場合) |
| バックアップ | logbull-dataを毎日 rsync → S3 する単純な仕組み。スナップショットは1コンテナなので簡単 |
| 監視 | /api/v1/system/health を Pingdom / k8s livenessProbe で監視 |
| TLS | nginx/Caddy リバプロで HTTPS 終端 |
| アクセス制限 | UIの /admin をIP allow listで縛る |
| 監査ログ | 監査ログ自体をさらに別バケットへ自動エクスポート(多重化) |
# シンプルなS3バックアップ例
docker stop logbull
tar czf /tmp/logbull-backup-$(date +%Y%m%d).tar.gz ./logbull-data
aws s3 cp /tmp/logbull-backup-*.tar.gz s3://my-bucket/logbull-backups/
docker start logbull
「コンテナを止める瞬間がある」のはAWS RDSのようなサービスから来た人には違和感だが、Log Bullの規模感(中小規模)であれば、毎日深夜に1分のメンテナンス窓を取って整合性のあるスナップショットを取る方が、運用的に堅い。
サプライチェーン経由でログ周りに侵入される攻撃ベクタもあるので、CIから出ていくAPIキーの管理は厳格にすべき。CI周りのセキュリティ全体像はサプライチェーンセキュリティ2026で別途整理している。
AIエージェント時代のロギング戦略:Log Bullがハマる場面
2026年はAIエージェント・Claude Code・Codex・Gemini CLI が大量のログを吐く時代だ。これらのログをどう集約するかは、地味だが急速に重要度が上がっている。
| ログの出元 | 量 | 性質 |
|---|---|---|
| Claude Codeの操作履歴 | 中〜大 | ステップごとに大量、構造化済み |
| MCPサーバの呼び出し | 中 | パラメータと戻り値、デバッグに必須 |
| サーバレスAgent(Vercel/Cloudflare/Browserbase) | 大 | スパイク的に増減、地理分散 |
| Browser-trace等の観測層 | 巨大 | 1セッションでMB級 |
| ユーザー入力 | 小 | プライバシー注意 |
これら全部をElasticのクラスタに食わせるとコストが膨らむ。一方、「Agentごとにプロジェクトを分け、Log Bullに集約」というシンプルな設計が驚くほどハマる。
# Claude Codeのフックで実行ログを Log Bull に送る例(概念)
from logbull import LogBullLogger
logger = LogBullLogger(
host="http://logs.internal.example.com",
project_id="claude-code-prod",
api_key=os.environ["LOGBULL_KEY"],
)
def on_tool_call(tool_name, args, result):
logger.info(f"tool_call: {tool_name}", fields={
"tool": tool_name,
"args": json.dumps(args)[:1000], # 大きすぎる入力は切り詰め
"result_size": len(str(result)),
"session_id": get_session_id(),
"user": get_current_user(),
})
Claude CodeのHooks機構(PreToolUse・PostToolUse等)と組み合わせれば、「全ツール呼び出しをLog Bullに集約してダッシュボードで監視」が現実的なコストで成立する。データ主権を気にする日本の組織にとって、「ログを外部APIに送らない」のは大きな安心材料だ。
エージェント基盤のログを長期保管したい場合、OpenHands等のコーディングエージェントの出力をLog Bullに流す運用は現実的に組める。
日本企業導入時の論点:コンプラ・データ主権・既存運用との接続
日本企業でLog Bull導入を検討するときに浮上しやすい論点を整理する。
| 論点 | 状況 | 取れる対応 |
|---|---|---|
| データの国内保管 | 多くの日本企業が要求 | 完全自己ホストなのでクリア |
| 個人情報を含むログの扱い | 個人情報保護法対応 | プロジェクト単位でアクセス制御+監査ログ |
| ISMS・Pマーク監査 | 監査ログとアクセス記録が必須 | 組み込みの監査ログでほぼ満たす |
| 既存のSplunk等からの移行 | 一括移行は難しい | 期間限定で並行稼働、新規システムからLog Bullに乗せる漸進パターン |
| シングルサインオン要件 | 一部組織で必須 | 現状はLog Bull単体ではOIDC/SAML非対応の可能性、要事前検証 |
| 監査人への説明 | 「OSSは大丈夫か」と聞かれがち | Apache 2.0を強調、ベンダー依存しない透明性をアピール |
特に「データ主権」は、Splunk Cloud / Datadog / New Relic等の外資系SaaSを使えない案件で深刻だった問題を解く。Log Bullは「外部に送らないのが大前提」で設計されているため、データ取扱いに関する議論が短く済む。
1年後の予想:Log Bull が変える3つの運用習慣
ここまでが事実と分析だった。最後にLog Bullを起点として1年後にどんな運用変化が起こりそうか、独自視点での予想を3つ。
予想1:「個人開発者がログ集約を持つ」が当たり前になる
これまで個人開発者は「ログは journalctl と grep でなんとかする」が標準だった。Log Bullの軽さは、個人サーバ・趣味プロダクトでも「ちゃんとした集約」を持つ選択肢を初めて現実にした。1年後には「個人プロダクトに最初からLog Bull」が当たり前のセットアップになる。
予想2:「AIエージェント専用のロギング基盤」が分離される
エージェントが吐く大量・高頻度のログは、人間の運用ログとは性質が違う(粒度が細かく、JSON構造化済み、頻度が高い)。「人間ログはDatadog、エージェントログはLog Bull」の分離パターンが広がる、という予想。コストとデータ主権の両面で合理的だ。
予想3:「OSSログ集約 + AI分析」のスタックが標準化する
Log Bullに集約したログを AIエージェントに食わせて、異常検知や要約をさせるという運用が、SREの新しい常識になる。RAGの仕組みを応用すれば、Log Bullが事実上の「過去ログ知識ベース」として機能する。「ログを溜める」が「ログを問い合わせる」に変質する転換点が、2026年中に訪れる可能性が高い。
日本語ログのハンドリング:UTF-8とフィールド設計
日本のシステムでは「日本語のログメッセージ」「日本語フィールド名」「全角半角混在」が出てくる。Log Bullは内部でJSONとして扱うため、UTF-8であれば基本的に問題なく扱える。実用上のハマりポイントを整理しておく。
| 論点 | 推奨 |
|---|---|
| 日本語メッセージ | OK。SDKはUTF-8で送る前提 |
| 日本語フィールド名 | 動くが英語推奨(検索・フィルタの操作性が悪化) |
| 全角空白 | 検索クエリで意図しないマッチが起こる可能性、半角に正規化 |
| 改行を含むスタックトレース | \nを残してOK、UI側で展開表示 |
| 個人情報(メール・電話) | プロジェクト単位でマスクポリシーを作りSDK側で適用 |
# 個人情報マスクの実装例
import re
def mask_pii(message: str) -> str:
message = re.sub(r"[\w\.-]+@[\w\.-]+", "[email]", message)
message = re.sub(r"\d{3}-?\d{4}-?\d{4}", "[phone]", message)
return message
logger.info(mask_pii(raw_message), fields={"action": "login"})
日本企業向けのプロダクトをホストする場合、SDKでマスクする層を共通化するのが、後から監査でひっくり返らないための定石だ。
まとめ:「程よいログ集約」が選択肢に加わる意味
Log Bullの登場は、ログ集約市場で「ELKほど重くなく、SaaSほど高くなく、grepよりは構造化されている」という中間帯を埋めた、と評価できる。
- 個人〜小〜中規模システム:実装の重さ・コスト的に最適解。すぐに導入価値がある。
- AIエージェント運用:エージェントが吐く構造化ログとの相性が良く、データ主権の懸念も小さい。
- 大規模システム:スケール上限はあるが、「人間用とエージェント用でログ基盤を分ける」形でも併用可能。
Apache 2.0、自己ホスト前提、ゼロコンフィグ。「ログ集約に時間を使わない」ためのインフラとして、2026年の中小規模プロダクトには真っ当に推奨できる。
FAQ
Q. ELKやLokiから移行する価値はありますか?
A. 既に運用が回っているなら無理に移行する必要はありません。 一方、ELK/Lokiの運用コストが見合わないと感じている、新規プロダクトで一から構築するケースでは強く検討する価値があります。1日数百GB以下のログ量なら、Log Bullで十分賄えるのが大半です。
Q. データのスケールはどこまで耐えますか?
A. 公式に明記されたベンチマークはありませんが、最小要件 2 CPU / 4GB RAM / 20GB は1日数GB〜数十GBレベルを想定した数値です。数百GB〜TB級になるとリソース増強やシャーディング戦略を検討する必要があります。シャーディングが組み込まれていない点は、ELK/Lokiと比べた構造的制約です。
Q. オンプレでの運用は問題ありませんか?
A. むしろオンプレ前提の設計です。Docker一本で動き、外部依存サービス(Object Storage等)が不要なため、エアギャップ環境でも問題なく動作します。日本の金融・公共系プロジェクトで「外部送信不可」の制約があるケースに適合します。
Q. SSO(SAML/OIDC)対応は?
A. 公式README時点では明記されていません。エンタープライズ統合が必要な場合は、リバースプロキシ(OAuth2 Proxy / Authentik等)を前段に置く構成が現実的です。最新の対応状況はGitHub Issuesで確認してください。
Q. クラウド版(SaaS)はありますか?
A. 執筆時点ではOSS版のみで、SaaS版の提供はありません。SaaS版がないことは「事業者の囲い込みリスクが小さい」というメリットでもあります。
Q. アラート・通知機能はありますか?
A. README時点では明示的なアラート機能の記載は限定的です。アラートはLog Bullの検索APIを定期的に叩いて閾値判定し、Slack等に通知するスクリプトを別途組むのが現実的です。/api/v1/logs?level=error&since=...のようなクエリエンドポイントを使えます。
Q. 既存のFluent Bit / Fluentd と組み合わせられますか?
A. はい。Fluent BitのHTTP出力プラグインで Log Bull の API に POST するか、curl パイプラインで送る方式が動きます。SDKを使えない既存環境からの送信経路として、Fluent Bit経由は現実的な選択肢です。
Q. ログのフィールド型(数値・boolean)は扱えますか?
A. SDKのfields引数に渡すdictはそのままJSONで送信されるため、文字列・数値・bool・配列・ネストしたオブジェクトなどが扱えます。UI側で型に応じたフィルタが効くかは、最新のドキュメントで確認してください。
Q. ログ削除・保管期限の自動化は?
A. 自動GCの細かい設計は実装によりますが、Apache 2.0なのでソースを確認するか、Volumeのファイルサイズを監視して、古いシャードを削除するcronを併用するのが安全です。長期保管が必要なログは、別途 S3 等にアーカイブする方針が定石です。
Q. AIエージェントが吐く大量ログを集約しても問題ないですか?
A. 「中小規模」の範囲なら問題ありません。Claude Code 等のエージェントが1日数百〜数千回ツール呼び出しを行う規模なら、Log Bullの設計上余裕があります。1日数十万回を超える大量呼び出しを行う本番フリートでは、プロジェクトを分割して負荷分散するか、Loki等の水平スケール基盤を併用してください。