ログ集約
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 # 集計(エラー数/分) 14 count_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 Stack | Loki |
|---|---|---|
| インデックス方式 | 全文インデックス | ラベルのみ |
| 全文検索 | 強力 | 限定的 |
| リソース消費 | 大 | 小 |
| コスト | 高 | 低 |
| Grafana統合 | プラグイン必要 | ネイティブ |
| 適したユースケース | 複雑な検索、分析 | K8s、Prometheus環境 |
SRE/インフラ観点
設計ポイント
- • 保持期間: ホットデータ(検索用)vs コールドデータ(アーカイブ)
- • インデックス戦略: 日次インデックス、ILMポリシー
- • バッファ: Kafkaでピーク時の負荷を吸収
クラウドサービス
- • AWS: CloudWatch Logs、OpenSearch Service
- • GCP: Cloud Logging
- • Azure: Azure Monitor Logs
- • SaaS: Datadog Logs、Splunk