現代のクラウド環境では、アプリケーションの信頼性とパフォーマンスを確保するため、observability(可観測性)が不可欠です。特に、大規模なサービスアーキテクチャにおいては、分散されたログやメトリクスを統合的に管理する集中ログ管理(centralized logging)が重要な役割を果たします。本記事では、Dropboxが高スケールなログ管理を実現するために選んだLokiと、その実裝における技術的選択肢と設計哲學を解説します。
Observabilityは、システムの內部狀態を外部から推測する能力を指します。これには、ログ(log)、メトリクス(metric)、トレース(trace)の3要素が含まれます。特に、集中ログ管理は、分散されたログを統合的に収集・検索・分析するためのアプローチであり、システムのトラブルシューティングや監視に不可欠です。
Lokiは、CNCF(Cloud Native Computing Foundation)がサポートするオープンソースのログコレクションツールで、**メタデータベース(label-based indexing)**を採用し、コスト効率の高いスケーラビリティを実現しています。Lokiは、Grafanaと深く統合されており、視覚化と分析を容易にします。
Lokiは、ログ內容を直接保存せず、**メタデータ(label)**のみをインデックス化します。これにより、ストレージコストを削減し、検索効率を向上させます。例えば、service=node1
やcluster=prod
などのラベルでログをフィルタリングできます。
Lokiは、ログを時間順に分塊(Chunk)として保存し、対象のオブジェクトストレージ(例:S3、Google Cloud Storage)に圧縮して格納します。これにより、高スケールなログ処理を実現します。
Lokiは、多租戶環境をサポートし、各サービスやプロジェクトごとにログを隔離します。また、端到端の暗號化(MTLS)やPII(Personally Identifiable Information)保護、動的アクセス制御を実裝することで、セキュリティを強化しています。
Dropboxは、7.03億ユーザーをサポートするクラウドストレージサービスであり、以下の課題に直面していました:
Dropboxは、以下の5つの評価基準を設定し、Lokiを選定しました:
Dropboxは、Lokiを以下のように実裝しました:
Lokiは、メタデータベースと分塊ストレージの設計により、高スケールなログ管理を実現します。Dropboxは、Grafanaとの統合により、集中ログ管理と迅速なクエリを実現し、コスト効率とセキュリティを確保しました。Lokiは、クラウドネイティブ環境における集中ログ管理の選択肢として、高い柔軟性とスケーラビリティを提供します。