TL

ログ集約

各サーバやコンテナに散らばるログを一箇所に集めて、横断的に検索・分析できるようにする仕組みです。構造化ログを土台に、ELK や Loki などの基盤で障害調査を素早く行います。

中級ログ集約構造化ログELKLoki最終更新: 2026-06-06
TL;DR要点だけ先に
  • 1.ログ集約は、多数のサーバ・コンテナに散らばるログを中央に集約し、横断検索・分析できるようにする仕組み。
  • 2.構造化ログ(JSON など)にすると機械が解析でき、フィールド単位の検索・集計が可能になる。
  • 3.代表は ELK/Elastic Stack(全文検索が強力)と Grafana Loki(ラベルで絞る・低コスト)。収集→保存→検索の流れ。

ログ集約とは

ログ集約(Log Aggregation) は、あちこちに散らばったログを1か所に集め、まとめて検索・分析できるようにする 仕組みです。アプリケーション、Webサーバ、データベース、各コンテナ——システムは至るところでログを吐きますが、それらが各マシンのファイルにバラバラに残っているだけでは、横断的に調べられません。

この問題は 分散システムで深刻 になります。

  • リクエスト1本が 複数のサービス を通るため、関連ログが 別々のサーバ に散る。
  • コンテナは 数分で生まれて消える。落ちた頃には、ログを出した実体ごと消えている。
  • 何十台ものサーバに ssh して grep して回るのは、台数が増えると現実的でない。

ログ集約は、各所のログを 発生したそばから中央へ送り、一元的に検索できる状態を作ることで、これを解決します。

構造化ログ:機械が読める形に

ログ集約の効果を最大化する前提が 構造化ログ(Structured Logging) です。これは、ログを 人間向けの文章ではなく、機械が解析できる構造(多くは JSON) で出力することを指します。

従来の素朴なログは、こうした自由なテキストでした。

2026-06-06 12:00:01 ERROR checkout failed for user 1234 (order 9876)

これだと「user が 1234 のものだけ」を正確に絞るのが難しく、正規表現で頑張ることになります。構造化すると、こうなります。

{
  "ts": "2026-06-06T12:00:01Z",
  "level": "error",
  "msg": "checkout failed",
  "user_id": "1234",
  "order_id": "9876",
  "trace_id": "abc123"
}

こうしておけば、level=error AND user_id=1234 のように フィールド単位で検索・集計 でき、ダッシュボード化も容易です。とくに trace_id を全ログに含める と、分散トレーシング(/devops/distributed-tracing/)と突き合わせて「1リクエストに関わる全ログ」を一気に引けます。

まずは構造化から

ログ集約基盤を入れる前に、アプリ側のログを 構造化(JSON 等) しておくと効果が段違いです。後から正規表現でパースするより、最初からフィールドで出すほうが、検索も集計もアラートも全部やりやすくなります。

集約の流れ:収集 → 保存 → 検索

ログ集約基盤は、おおむね3つの段階で構成されます。

段階役割担うものの例
収集(Collect / Ship)各所からログを拾い、中央へ転送するFluentd / Fluent Bit / Filebeat / Promtail
保存(Store / Index)受け取ったログを保管し、検索できる形にするElasticsearch / Loki
検索・可視化(Query)検索・集計し、ダッシュボードで見せるKibana / Grafana

ポイントは 収集を担う軽量なエージェント(log shipper)を各サーバ・各コンテナに置く構成です。アプリは「ログを出す」ことだけに集中し、それを拾って中央へ送る仕事はエージェントに任せます。コンテナ環境では、各ノードに1つエージェントを置いて全コンテナのログを集める形が一般的です。

代表的なスタック:ELK と Loki

ログ集約基盤の代表が ELK(Elastic Stack)Grafana Loki です。設計思想が対照的で、選択の分かれ目になります。

観点ELK / Elastic StackGrafana Loki
検索方式ログ本文を 全文インデックス(どんな語でも高速検索)ラベルで絞り込み、本文はインデックスしない
構成Elasticsearch + Logstash + KibanaLoki + Promtail + Grafana
強み強力で柔軟な全文検索・分析保存コストが軽い・メトリクスと統合しやすい
トレードオフインデックスが重く、ストレージを食う任意語の全文検索は不得手
  • ELK:ログ本文をすべてインデックスするため、どんなキーワードでも高速に検索 できます。分析力が高い反面、インデックスが大きくストレージとリソースを消費します。
  • Loki:「ログは ラベル(どのサービス・どの環境か) で絞り、あとは時間で範囲を切る」という Prometheus 流の設計。本文を全文索引しないので 低コスト ですが、任意の単語での横断検索は苦手です。Grafana 上でメトリクスと並べて見られるのが強みです。
全文検索か、コストか

「どんな語でも検索したい・分析を作り込みたい」なら ELK、「まずは安く・サービス単位で絞れれば十分、メトリクスと並べて見たい」なら Loki が合います。ログ量が多いほど保存コストが効いてくるので、何をどこまで検索したいか を先に決めて選びましょう。

運用上の注意

ログ集約は便利ですが、入れっぱなしだとコストとノイズの温床 になります。

  • 保持期間(リテンション)を決める:ログは放っておくと無限に増えます。「何日で消す/安いストレージへ移す」を決めないと、ストレージ費が膨張します。
  • 出しすぎない:DEBUG ログを本番で出し続けると、量が爆発し、肝心なログが埋もれます。重要度(レベル)で出し分けます。
  • 機密情報を残さない:パスワード、トークン、個人情報をログに含めると、集約先が 情報漏えいの的 になります。出力前にマスキングする設計が必須です。
ログに秘密を書かない

「とりあえず全部ログに出す」は危険です。集約基盤はログを一箇所に集める=漏れたときの被害も一箇所に集中 します。トークンや個人情報は そもそもログに出さない/マスクする を徹底し、アクセス権も絞りましょう。

オブザーバビリティの中での位置づけ

ログ集約は、オブザーバビリティ(/devops/observability/)の3本柱のうち ログ を支える基盤です。3本柱はそれぞれ役割が違います。

  • メトリクス:「何かおかしい」に気づく(傾向)。
  • トレース:「どのサービスのどこで遅い/失敗した」を絞る(横断)。
  • ログ:「具体的に何が起きたか」を読む(詳細)。

メトリクスのアラートから trace_id を拾い、その ID でログ集約を検索して詳細を読む——この一連の流れがスムーズに回ることが、調査時間の短縮に直結します。

まとめ

  • ログ集約は 散在するログを中央に集め、横断的に検索・分析 できるようにする仕組み。分散・コンテナ環境ほど効く。
  • 土台は 構造化ログ(JSON 等)。フィールド検索・集計が可能になり、trace_id でトレースと連携できる。
  • 基盤は 収集 → 保存 → 検索 の3段。代表は ELK(全文検索が強力)Loki(ラベルで絞る・低コスト)
  • 保持期間・出力量・機密マスキング を決めて運用する。オブザーバビリティの「ログ」を担う要。

DevOps/インフラ Article

ログ集約を実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

ログ集約

比較で見る軸

難易度: intermediate / カテゴリ: DevOps/インフラ / タグ数: 4

導入後に効く点

構造化ログ(JSON など)にすると機械が解析でき、フィールド単位の検索・集計が可能になる。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
intermediate
カテゴリ
DevOps/インフラ
タグ数
4

判断チェックリスト

  • 自社の用途が「ログ集約 / 構造化ログ」に近いか確認する。
  • 強みである「ログ集約は、多数のサーバ・コンテナに散らばるログを中央に集約し、横断検索・分析できるようにする仕組み。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

ログ集約構造化ログELKLokiログ集約構造化ログELKLoki
参考: 公式情報