ログ集約

ELK Stack、Loki、Fluentd

分散システムでは各サービスのログを集中管理することが不可欠。 ログ集約により、横断的な検索、相関分析、長期保存が可能になります。

ログ集約アーキテクチャ

Apps
ログ出力
Shipper
Fluentd/Filebeat
Buffer
Kafka(任意)
Storage
ES/Loki
UI
Kibana/Grafana

ELK Stack

Elasticsearch + Logstash + Kibana。 最も広く使われているログ集約スタック。全文検索に強い。

Elasticsearch

分散検索エンジン。ログの保存と全文検索。

Logstash

データパイプライン。収集、変換、転送。

Kibana

可視化UI。ダッシュボード、検索、分析。

メリット

  • • 強力な全文検索
  • • 豊富なエコシステム
  • • 柔軟なクエリ(KQL、Lucene)

デメリット

  • • リソース消費が大きい
  • • 運用が複雑
  • • ライセンス変更(OpenSearch分岐)

Grafana Loki

Prometheus風のログ集約。ラベルベースでインデックス、 ログ本文はインデックスしない。軽量でコスト効率が良い。

メリット

  • • 軽量、低コスト
  • • Prometheusとの親和性
  • • Grafanaで統合可視化
  • • S3/GCS対応でスケール

デメリット

  • • 全文検索は弱い
  • • ラベル設計が重要
  • • 複雑なクエリは遅い
LogQL クエリ例
logql
1# 基本クエリ(ラベルでフィルタ)
2{app="api-gateway", env="production"}
3
4# キーワード検索
5{app="api-gateway"} |= "error"
6
7# 正規表現
8{app="api-gateway"} |~ "user_id=\d+"
9
10# JSON解析 + フィルタ
11{app="api-gateway"} | json | level="ERROR"
12
13# 集計(エラー数/分)
14count_over_time({app="api-gateway"} |= "error" [1m])

Fluentd / Fluent Bit

ログ収集・転送エージェント。 多様なInput/Outputプラグイン。CNCFプロジェクト。

Fluentd

Ruby製。プラグイン豊富。集約サーバー向き。

Fluent Bit

C製。軽量。エッジ/コンテナ向き。K8s標準。

fluent.conf(Fluentd設定例)
xml
1# Input: アプリケーションログ
2<source>
3 @type tail
4 path /var/log/app/*.log
5 pos_file /var/log/fluentd/app.pos
6 tag app.logs
7 <parse>
8 @type json
9 </parse>
10</source>
11
12# Filter: タグ追加
13<filter app.**>
14 @type record_transformer
15 <record>
16 hostname "#{Socket.gethostname}"
17 env production
18 </record>
19</filter>
20
21# Output: Elasticsearchへ転送
22<match app.**>
23 @type elasticsearch
24 host elasticsearch.example.com
25 port 9200
26 index_name app-logs
27 <buffer>
28 @type file
29 path /var/log/fluentd/buffer
30 flush_interval 5s
31 </buffer>
32</match>

ツール比較

項目ELK StackLoki
インデックス方式全文インデックスラベルのみ
全文検索強力限定的
リソース消費
コスト
Grafana統合プラグイン必要ネイティブ
適したユースケース複雑な検索、分析K8s、Prometheus環境

SRE/インフラ観点

設計ポイント

  • 保持期間: ホットデータ(検索用)vs コールドデータ(アーカイブ)
  • インデックス戦略: 日次インデックス、ILMポリシー
  • バッファ: Kafkaでピーク時の負荷を吸収

クラウドサービス

  • AWS: CloudWatch Logs、OpenSearch Service
  • GCP: Cloud Logging
  • Azure: Azure Monitor Logs
  • SaaS: Datadog Logs、Splunk