から混亂へ明確性:Dropboxにおける集中ログ管理とLokiの活用

はじめに

現代のクラウド環境では、アプリケーションの信頼性とパフォーマンスを確保するため、observability(可観測性)が不可欠です。特に、大規模なサービスアーキテクチャにおいては、分散されたログやメトリクスを統合的に管理する集中ログ管理(centralized logging)が重要な役割を果たします。本記事では、Dropboxが高スケールなログ管理を実現するために選んだLokiと、その実裝における技術的選択肢と設計哲學を解説します。

技術の定義と基本概念

Observabilityは、システムの內部狀態を外部から推測する能力を指します。これには、ログ(log)、メトリクス(metric)、トレース(trace)の3要素が含まれます。特に、集中ログ管理は、分散されたログを統合的に収集・検索・分析するためのアプローチであり、システムのトラブルシューティングや監視に不可欠です。

Lokiは、CNCF(Cloud Native Computing Foundation)がサポートするオープンソースのログコレクションツールで、**メタデータベース(label-based indexing)**を採用し、コスト効率の高いスケーラビリティを実現しています。Lokiは、Grafanaと深く統合されており、視覚化と分析を容易にします。

重要な特性と機能

メタデータベースによる効率的な検索

Lokiは、ログ內容を直接保存せず、**メタデータ(label)**のみをインデックス化します。これにより、ストレージコストを削減し、検索効率を向上させます。例えば、service=node1cluster=prodなどのラベルでログをフィルタリングできます。

分塊(Chunk)によるスケーラビリティ

Lokiは、ログを時間順に分塊(Chunk)として保存し、対象のオブジェクトストレージ(例:S3、Google Cloud Storage)に圧縮して格納します。これにより、高スケールなログ処理を実現します。

多租戶とセキュリティ

Lokiは、多租戶環境をサポートし、各サービスやプロジェクトごとにログを隔離します。また、端到端の暗號化(MTLS)PII(Personally Identifiable Information)保護動的アクセス制御を実裝することで、セキュリティを強化しています。

Dropboxの実裝と課題

ログ管理の課題

Dropboxは、7.03億ユーザーをサポートするクラウドストレージサービスであり、以下の課題に直面していました:

  • 非構造化ログ:アプリケーションからの出力がスキーマを持たず、手動処理が必要
  • ホストローテーション:7日間のホスト交換によりログが失われる
  • Kubernetesの移行:コンテナの一時性によりログの永続性が保証されない
  • SSH操作の制限:圧縮ログやコンテナログの検索が困難

評価基準と選定

Dropboxは、以下の5つの評価基準を設定し、Lokiを選定しました:

  1. コスト:TCO(総所有コスト)を最小化
  2. パフォーマンス:150TB/日のログ処理、P99注入遅延<30秒、クエリ応答<10秒
  3. スケーラビリティ:大規模なログ処理をサポート
  4. ユーザー體験:Grafanaとの統合
  5. セキュリティ:端到端暗號化、PII保護、アクセス制御

Lokiの実裝詳細

Dropboxは、Lokiを以下のように実裝しました:

  • 書き込みパス:Distributorがログを受信し、Ingesterが圧縮してオブジェクトストレージに保存
  • 読み取りパス:Query Frontendがクエリを分割し、関連するログブロックを検索
  • バックグラウンド処理:Compactorがブロックをマージし、圧縮処理を実行
  • オブジェクトストレージ:內部のMagic Pocketシステムを使用し、4MBブロック最適化を実施

技術的課題と解決策

  • ハッシュと分散ストレージ:Lokiの初期バージョンでは、SCD(Storage Class Device)のBlob更新が競合を引き起こしたため、GrafanaのMember Listを採用し、Delta更新を実裝
  • 書き込み信頼性:Write Ahead Log(WAL)を無効化し、可用性を優先
  • クエリインデックス:BoldDBからGrafanaのTSDBに切り替え、クエリパフォーマンスを向上

結論

Lokiは、メタデータベースと分塊ストレージの設計により、高スケールなログ管理を実現します。Dropboxは、Grafanaとの統合により、集中ログ管理と迅速なクエリを実現し、コスト効率とセキュリティを確保しました。Lokiは、クラウドネイティブ環境における集中ログ管理の選択肢として、高い柔軟性とスケーラビリティを提供します。