本記事はGrafana Labs blog の記事を翻訳し転載しています
Salva Corts, Sandeep Sukhani, Steven Dungan, Julie Stickler • 2024-04-09
Grafana Lokiの新たな章が始まりました!5年間にわたる献身的な開発、継続的な改善活動、貴重なコミュニティからのサポートの結果として、ついにGrafana Loki 3.0が一般公開されたことをご報告いたします。
2.0から3.0への移行で、Lokiは多くの印象的な変更がありました。Lokiは効率性とシンプルさという原点に忠実でありつつ、より高性能に、より大きなスケールを扱うことが可能となりました。
この進歩はコミュニティ(ここまで来るのを助けてくれたコミュニティには、感謝してもしきれない!)から高く評価されています。20,000のGitHubスター、100,000を超えるアクティブ クラスタなど、この1年でいくつもの画期的なマイルストーンを達成してきました。
プロジェクトが成功し、Loki3.0のクールな機能たちにもますます期待が高まります。Lokiのルーツは、大きなスケールをシンプルにすること、また開発者のためのトレードオフを最適に行うことです。このルーツに忠実であり続けながら、Lokiが開発者にとって最も使いやすいログ集約プラットフォームになるよう、さらに進歩を続けていることがおわかりいただけると思います。
さっそく見ていきましょう!
ブルームフィルタでクエリを高速化
Loki3.0に追加された新しい機能のひとつ、ブルームフィルタによるクエリの高速化を紹介しよう。 これは実験的な機能で、ログデータを今までよりも格段に速く見つけることができます。
何百万ものメッセージの中から、お目当てのメッセージを一つ見つけるのは、干し草の山から針を探すようなものです。Lokiは大まかな場所がわかる場合(つまり、フィルタリングするラベルセレクタ)、迅速にログデータを見つけることができるよう構築されています。ブルームフィルタでクエリを高速化することで、この「干し草の山の中の針」のようなユースケースを、よりサポートできるようになりました。
ブルームフィルタができる前は、Lokiは探しているメッセージを見つけるには、一致するストリーム内のログ行をすべて調べなければなりませんでした。昨日のデータから情報を一つ見つけるには、Lokiはその日のデータをすべて読み込み、ログ行を1つ1つチェックする必要がありました。保存されるログデータの量が増えれば増えるほど、Lokiはクエリ時のデータ処理により高い計算能力が必要となります。Grafana LabsはLokiを大規模に運用しているため、膨大なデータの中で行うデータフィルタリングを最適化するチャンスは、いくらでもあると考えました。
そこで登場したのが、ブルームフィルタです。ログデータの検索時に、Lokiをより賢く、効率的にしてくれる優れものです。すべてのログをチェックするのではなく、ブルームフィルタを使用することで、Lokiは注文IDやユーザーIDなどの文字列を検索し、求めている情報を含まない大きなデータの塊をスキップできる。干し草の山の中で、針がありそうな場所を示す地図があるようなもので、全体を検索する必要はありません。
ブルームフィルタが実に効果的であることが、あらゆる側面からもわかります。初期の社内テストでは、ブルームフィルタを使うことで、クエリを実行する際にかなりの割合のログデータをスキップできることが示されました。開発環境でのテストでは、以前はクエリ処理に必要だったチャンクの70%から90%をフィルタリングできるようになりました。
以下の例で、ブルームフィルタを使って「干し草の山の中の針」検索を実行した結果をみてみましょう。このクエリにはいくつかのフィルタリング条件が含まれており、Lokiが提供するGrafana Cloud Logsでお客様が実行する典型的なユースケースを表しています。バイパスしたチャンクとストリームの数が一目瞭然です。
素晴らしい結果です!触れるデータが少なくなり、検索リターン時間が高速化し、リソースの負荷が軽減しました。
実験的な機能としてはかなり有望であり、Lokiでよりシンプルかつ高速にすることで、さらに将来性があります!クエリの高速化の詳細や、Lokiクラスタでブルームフィルタを有効にする方法については、クエリの高速化のドキュメントをご覧ください。
OpenTelemetry のネイティブサポート
LokiチームはOpenTelemetryが急速に普及しつつあることに注目しています。2024 年 Observability Survey では、回答者の 54% が昨年よりも OpenTelemetry を使用していると答えました。OpenTelemetry は、言語、インフラ、ランタイム環境に関係なく、アプリケーションやシステムを簡単に計測する、ベンダーにとらわれない方法を提供します。このビジョンは、ユーザーがあらゆる場所でどこにいても利用できるという Loki の原則に合致しています。
Loki Exporterを使用してOTelのログをLokiに取り込むのは以前からできましたが、最適なクエリ エクスペリエンスを提供できていませんでした。以前はデータをJSONでシリアライズしており、ログレコードのOTel属性やメタデータと対話するためにクエリ時にデシリアライズする必要がありました。可能ではありましたが、簡単ではありません。
OpenTelemetryを使いたいユーザーに、ネイティブなOTelロギング体験を提供すべく、我々はLoki 3.0にネイティブなOpenTelemetryのインジェスト サポートを追加しました。
LokiのネイティブなOpenTelemetryのエンドポイントがLoki Exporterにもたらすメリットは、以下の通りです。
- インジェストパイプラインの簡素化: OpenTelemetry コレクター(Grafana Alloy など)と Grafana Cloud の間に Loki Exporter を配置する必要がなくなり、ログのインジェスト;パイプラインがよりシンプルになりました。エンドポイントを更新するだけで、他のOTel互換のログストレージからLokiに簡単に切り替えることができます。
- 改善されたクエリ エクスペリエンス: 構造化されたメタデータを活用することで、Loki のネイティブな OpenTelemetry 実装は、デシリアライズを全くしなくても、クエリ時にすべての OpenTelemetry 属性とログイベントのメタデータを操作できる。以下は画面キャプチャの例で、Loki Exporterと比べ、LokiのネイティブOTelインジェスト エンドポイントを経由してインジェストされたOTelログのクエリが、いかに簡単かを示しています。
OpenTelemetry ログの Loki での保存方法は次のとおりです。
- インデックス: リソース属性はLokiのインデックスラベルに適切にマッピングされます。両方とも、ログのソースがわかるからだ。Lokiはインデックスラベルの限られたセットで適切に機能するため、デフォルトでは、Lokiはインデックスラベルとして保存されるいくつかのキー属性を選択し、残りのリソース属性は各ログエントリの構造化メタデータとして保存されます。
- タイムスタンプ:
LogRecord.TimeUnixNano
またはLogRecord.ObservedTimestamp
のどちらか1つが設定されます。両方が設定されていない場合はインジェストタイムスタンプが使用されます。 - ログライン:
LogRecord.Body
は、ログの本文を保持します。ただし、Lokiは文字列形式のログ本体しかサポートしていないため、OTELコレクターlibのAsStringメソッドを使用して文字列以外の値を文字列化します。 - 構造化メタデータ: インデックスラベルやLogLineに格納できないものは、構造化メタデータとして格納されます。
OTelのログがLokiにどのように保存されるか、またテナントごとのOTLP構成でLokiにデータを保存する方法の変更については、ドキュメントをご覧ください。
Loki ドキュメントの改善
Lokiはシンプルを重視し、良いドキュメントが製品をより使いやすくすると信じている。ドキュメンテーションチームとエンジニアリングチームの両方で、Lokiのドキュメンテーションの更新に取り組み、新しいユーザーにとってより使い始めやすくしています。
Get Started セクションの内容を一新したことに加え、Grafanaでログデータを確認できるよう、いくつかのサンプルクエリを説明する新しいクイックスタートトピックを導入しました。また、最も訪問者の多いセクションに洗練させました。 API ドキュメント、構成リファレンス、ストレージドキュメントにすべて、非推奨を反映して更新し、古い設定オプションは削除されました。
Grafana Enterprise Logs (GEL) ドキュメントも再編成し、古い Loki コンテンツも更新しました。
「LogQLを学びたくない」
おっと…このブログを間違えました!何のことか知りたい方は、Explore Logsについて他の記事をチェックしてみてください
改善とアップグレードについて
このメジャーリリースの機会に、Lokiを使いやすくすべく、ユーザーとメンテナのためのQOLを改善します。Helm チャートの改善が含み、Lokiの実行をこれまで以上に簡単になります。リリースノートやアップグレードガイドにじっくりと目を通し、Loki 3.0 を試してみてください!
今回のLoki 3.0のリリースで、オープンソースで提供しているLokiと、Lokiを利用したエンタープライズ向けサービスGrafana Enterprise Logs (GEL)のセマンティックバージョンアップを行いました。GEL 3.0は4月11日にリリース予定です。Grafana Enterprise Logs (GEL)をご利用の方は、GEL 3.0にアップグレードする前に、リリースノートや関連ドキュメントをご覧ください。
Grafana Lokiコミュニティに感謝します!
Loki 3.0に到達できたのは、コミュニティの努力の賜物です。Grafana Labs と Lokiチームを代表し、心からすべてのユーザーやコントリビュータの努力とコミットメントに感謝を述べたいと思います。
ご意見をお待ちしております!Grafana LabsコミュニティSlackの#loki-3チャンネルにアクセスするか、GitHubでLokiを見つけて、皆さんの意見をお聞かせください。
Grafana Cloud で、メトリクス、ログ、トレース、ダッシュボードなどを簡単に始めましょう。お得な永久無料プランをはじめ、あらゆるユースケースに対応するプランを用意しています。今すぐ無料でサインアップしてください!
原文:Loki 3.0 release: Bloom filters, native OpenTelemetry support, and more!