Kubernetesでは、アプリケーションやシステムのログが複数のPodやNodeに分散して出力されるため、次のような課題が出てきます。
- Podが再起動するとログが消える
- 複数Podにまたがるエラーを時系列で追いにくい
kubectl logs
だけではリアルタイム集約が難しい
こうした問題を解決するために登場するのが、ログ収集・集約・可視化のためのロギングスタックです。
✅ ロギングスタックとは?
ロギングスタックは、Kubernetesクラスター内外のログを一元的に「収集→転送→保存→検索」できるようにする仕組みです。
代表的な構成:
[アプリケーションログ]
↓
[ログ収集] Fluentd / Fluent Bit
↓
[ログ保存] Elasticsearch / Loki
↓
[可視化] Kibana / Grafana
このように、役割ごとにツールを組み合わせて構築します。
🧩 主な構成例とツール
● Fluentd(または Fluent Bit):ログの収集・転送
Fluentd は、Kubernetesでよく使われるログ収集エージェントです。DaemonSetとして各Nodeに配置し、次のようなログを収集します:
/var/log/containers/*.log
→ 各コンテナの標準出力ログ- Kubernetesのメタデータ(Pod名やNamespaceなど)も付与可能
Fluent BitはFluentdの軽量版で、より高速・省メモリです。
● Loki:軽量なログ保存・検索エンジン(Grafana製)
Elasticsearchの代替として最近人気なのが Loki です。以下の特徴があります:
- ログに特化した時系列データベース
- メトリクスのようなクエリが可能(Prometheusと連携しやすい)
- Grafanaで直接クエリ・可視化できる
- 軽量で構成がシンプル(Elasticsearchより導入が簡単)
Lokiは「ログを構造化しない」点が特徴で、メタデータ(label)で絞り込みます。
● Kibana / Grafana:可視化ツール
- Kibana:Elasticsearchのログを検索・グラフ表示するUI
- Grafana:Lokiと連携して、ログを時系列でフィルタ・表示可能
Grafanaでは、メトリクスとログを同じダッシュボードで可視化することもできます。
🚀 具体的な構成例(Loki + Fluent Bit + Grafana)
aaa
このように、ログは各NodeのFluent Bitが集めてLokiに送り、Grafanaで確認します。
🔧 Helmを使った Loki Stack の導入例
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm install loki-stack grafana/loki-stack
このコマンドで以下がセットアップされます:
- Fluent Bit(もしくはPromtail)
- Loki(ログストレージ)
- Grafana(可視化ツール)
🔍 Grafana でのログ検索例
{job="kubernetes", namespace="default", pod="my-app"} |= "ERROR"
|= "ERROR"
は「文字列ERRORを含むログ」namespace
,pod
などのラベルでフィルタできます
📝 まとめ
ツール名 | 役割 |
---|---|
Fluentd / Fluent Bit | ログ収集(Node上でログを拾う) |
Loki | ログ保存とクエリ(Prometheusライク) |
Elasticsearch | より高度な全文検索・集計(やや重い) |
Grafana / Kibana | ログの可視化・ダッシュボード化 |
Kubernetesの運用において、ログはトラブルシューティングや監査に不可欠です。まずは軽量な Loki + Fluent Bit + Grafana から始めて、必要に応じてスケールさせていくのがおすすめです。