注記
「このトピックのローカライズは最善を尽くしていますが、保証はできません。最新のドキュメントについては、英語版に切り替えてご覧ください。」
Lokiの概要
Lokiは、Prometheusにインスパイアされた水平スケーラブルで高可用性のマルチテナントログアグリゲーションシステムです。Lokiは、メトリクスではなくログに焦点を当て、プルではなくプッシュでログを収集する点でPrometheusとは異なります。
Lokiは非常にコスト効率が高く、高いスケーラビリティを持つように設計されています。他のログシステムとは異なり、Lokiはログの内容をインデックス化せず、各ログストリームのラベルセットとしてログのメタデータのみをインデックス化します。
ログストリームとは、同じラベルを共有する一連のログのことです。ラベルは、Lokiがデータストア内でログストリームを見つけるのに役立つため、質の高いラベルセットを持つことが効率的なクエリ実行の鍵となります。
ログデータは圧縮され、Amazon Simple Storage Service (S3) や Google Cloud Storage (GCS) などのオブジェクトストア、または開発やコンセプト実証のためにファイルシステムにチャンクとして保存されます。小さなインデックスと高度に圧縮されたチャンクにより、操作が簡素化され、Lokiのコストが大幅に削減されます。
典型的なLokiベースのログスタックは、3つのコンポーネントで構成されています:
エージェント - エージェントまたはクライアント、例えばLokiに同梱されているPromtailやGrafana Agent。エージェントはログを収集し、ラベルを追加してログをストリームに変換し、HTTP APIを通じてLokiにストリームを送信します。
Loki - ログの取り込みと保存、クエリの処理を担当するメインサーバー。3つの異なる構成で展開することができ、詳細についてはデプロイメントモードを参照してください。
**ログデータのクエリと表示にはGrafana**を使用します。コマンドラインからLogCLIを使用したり、Loki APIを直接使用してログをクエリすることもできます。
Lokiの特徴
拡張性 - Lokiはスケーラビリティを念頭に設計されており、Raspberry Pi上での実行から一日にペタバイトのデータを取り込むことまでスケールできます。 最も一般的なデプロイメントである「シンプルスケーラブルモード」では、Lokiはリクエストを読み取りパスと書き込みパスに分離するため、それぞれを独立してスケールでき、柔軟な大規模インストールを可能にします。 これにより、任意の時点でワークロードに迅速に対応できます。必要に応じて、Lokiの各コンポーネントはKubernetes内でネイティブに動作するように設計されたマイクロサービスとして実行することもできます。
マルチテナント - Lokiは、複数のテナントが単一のLokiインスタンスを共有できるようにします。マルチテナンシーでは、各テナントのデータとリクエストは他のテナントから完全に分離されています。マルチテナンシーは、エージェントにテナントIDを割り当てることで構成されます。
サードパーティとの統合 - いくつかのサードパーティ製エージェント(クライアント)は、プラグインを介してLokiをサポートしています。これにより、既存のオブザーバビリティセットアップを維持しながら、ログをLokiに送信することができます。
効率的なストレージ - Lokiはログデータを高度に圧縮されたチャンクで保存します。同様に、Lokiのインデックスはラベルのセットのみをインデックス化するため、他のログ集約ツールよりも大幅に小さくなります。 データストレージメカニズムとしてオブジェクトストレージのみを活用することで、Lokiは基盤となるオブジェクトストアの信頼性と安定性を引き継ぎます。また、ローカルに接続されたソリッドステートドライブ(SSD)やハードディスクドライブ(HDD)などの他のストレージメカニズムと比べて、オブジェクトストレージのコスト効率と運用の簡素さを活用します。 圧縮されたチャンク、小さいインデックス、低コストのオブジェクトストレージの使用により、Lokiの運用コストは低くなります。
LogQL, Lokiのクエリ言語 - LogQLはLokiのクエリ言語です。既にPrometheusのクエリ言語であるPromQLに精通しているユーザーは、LogQLを使ってログに対するクエリを生成するのに親しみやすく柔軟であると感じるでしょう。この言語はまた、ログデータからメトリクスを生成することも可能にし、ログアグリゲーションを超えた強力な機能を提供します。
アラート - Lokiにはrulerと呼ばれるコンポーネントが含まれており、ログに対するクエリを継続的に評価し、その結果に基づいてアクションを実行できます。これにより、異常やイベントを監視することができます。LokiはPrometheus AlertmanagerやGrafana内のアラートマネージャーと統合されます。
Grafanaインテグレーション - LokiはGrafana、Mimir、およびTempoと統合されており、完全なオブザーバビリティスタックを提供し、ログ、メトリクス、トレース間のシームレスな連携を実現します。