Grafana Tempo による分散トレース

Grafana Tempo による分散トレース

[[389241]]

Grafana Tempo は、新しいオープンソースの大容量分散トレース バックエンドです。

Tempo for Grafana は、Grafana Labs が提供する、使いやすくスケーラブルな分散トレース バックエンドです。 Tempo は Grafana、Prometheus、Loki と統合されており、動作にはオブジェクト ストレージのみが必要なので、低コストで簡単に運用できます。

私はこのオープンソース プロジェクトに最初から関わってきたので、Tempo の基本について説明し、クラウド ネイティブ コミュニティが Tempo に注目している理由を説明します。

分散トレース

アプリケーションに対して行われたリクエストに関するテレメトリ データを収集したいというのはよくあることです。しかし、今日のサーバーでは、通常、単一のアプリケーションが複数のマイクロサービスに分割され、複数の異なるノードで実行される場合があります。

分散トレースは、個別のサービスで構成されている可能性のあるアプリケーションのパフォーマンスに関する詳細な情報を取得する方法です。リクエストがアプリケーションに到着すると、リクエストのライフサイクルの統合ビューが提供されます。 Tempo の分散トレースは、モノリシック アプリケーションまたはマイクロサービス アプリケーションに使用でき、リクエスト スコープの情報を提供するため、可観測性の 3 番目の柱となります (他の 2 つはメトリックとログです)。

以下は、アプリケーションのガント チャートを生成する分散トレース システムの例です。 Jaeger HotROD デモ アプリケーションを使用してトレースを生成し、Tempo でホストされている Grafana Cloud に保存します。このグラフは、サービスと機能別に分類されたリクエスト処理時間を示します。

Grafana Tempo のガント チャート

インデックスのサイズを小さくする

トレースには、豊富で明確に定義されたデータ モデルに豊富な情報が含まれています。通常、トレース バックエンドとのやり取りには、メタデータ セレクター (サービス名や期間など) を使用してトレースをフィルター処理することと、フィルター処理されたトレースを視覚化することの 2 種類があります。

検索を強化するために、ほとんどのオープンソースの分散トレース フレームワークでは、サービス名、操作名、タグ、期間など、トレース内の多くのフィールドにインデックスを付けます。その結果、インデックスが大きくなり、Elasticsearch や Cassandra などのデータベースを使用する必要が生じます。しかし、これらは管理が難しく、大規模に運用するにはコストがかかるため、Grafana Labs の私のチームは、より良いソリューションを考案することに着手しました。

Grafana では、オンコール デバッグ ワークフローは、メトリック レポートの使用 (アプリケーションのメトリックを保存するために、Prometheus を拡張する Cloud Native Foundation のインキュベート プロジェクトである Cortex を使用) から始まり、問題をドリルダウンし、問題のあるサービスのログを精査し (ログは、ログ用の Prometheus に似た Loki に保存します)、特定のリクエストのトレースを調べます。フィルタリングに必要なすべてのインデックス情報は Cortex と Loki で利用できることがわかりました。ただし、これらのツールを通じてトレースの検出を可能にするための強力な統合と、トレース ID によるキー値の検索を行うための優れたストアが必要でした。

こうしてGrafana Tempoプロジェクトが始まりました。取得したトレース ID に基づいてトレースすることに重点を置くことで、Tempo は依存性が最小限で、大容量、低コストの分散トレース バックエンドとなるように設計されました。

操作が簡単でコスト効率が良い

Tempo はオブジェクト ストレージ バックエンドを使用しますが、これが唯一の依存関係です。単一バイナリでもマイクロサービス モードでも使用できます (簡単に開始する方法については、リポジトリ内の例を参照してください)。オブジェクト ストレージを使用すると、サンプリングなしで大量のアプリケーション トレースを保存することもできます。これにより、100 万件のリクエストのうち 1 件でエラーが発生したり、遅延が長くなったりしたリクエストのトレースが破棄されることがなくなります。

オープンソースツールとの強力な統合

Grafana 7.3 には Tempo データ ソースが含まれており、Tempo からのトレースを Grafana UI で視覚化できます。さらに、Loki 2.0 の新しいクエリ機能により、Tempo での追跡がさらに簡単になります。 Prometheusとの統合のために、チームは以下のサポートを追加しています。模範一例として、時系列データに追加できる高カーディナリティのメタデータ情報が挙げられます。メトリック ストレージ バックエンドはメトリックをインデックス化しませんが、Grafana UI でメトリック値を取得して表示できます。この例ではさまざまなメタデータを保存できますが、このユースケースでは、Tempo との緊密な統合のためにトラッキング ID が保存されます。

この例では、リクエスト レイテンシ ヒストグラムを使用したサンプルの使用法を示します。各サンプル データ ポイントは Tempo のトレースにリンクされています。

Tempo での例の使用

メタデータの一貫性

コンテナ化されたアプリケーションとして実行されているアプリケーションによって発行されるテレメトリには、通常、何らかのメタデータが関連付けられています。これには、クラスター ID、名前空間、ポッド IP などが含まれます。これは、必要に応じて情報を提供するのに適していますが、メタデータに含まれる情報を生産的な目的に使用できるとさらに便利です。 たとえば、Grafana クラウド エージェントを使用してトレース情報を Tempo にインポートできます。エージェントは、Prometheus サービス検出メカニズムを使用して Kubernetes API からメタデータ情報をポーリングし、アプリケーションによって発行されたクロスドメイン データにこれらのタグを追加します。このメタデータも Loki でインデックス化されるため、メタデータを Loki ラベル セレクターに変換することで、トレースから特定のサービスのログの表示に簡単にジャンプできます。

以下は、Tempo トレースの特定の範囲のログを表示するために使用できる一貫したメタデータの例です。

クラウドネイティブ

Grafana Tempo はコンテナ化されたアプリケーションとして使用でき、Kubernetes や Mesos などのオーケストレーション エンジン上で実行できます。フェッチ/クエリ パスのワークロードに応じて、さまざまなサービスを水平方向にスケーリングできます。 Google Cloud Storage、Amazon S3、Tempo Azure Blog Storage などのクラウドネイティブ オブジェクト ストレージを使用することもできます。詳細については、Tempo ドキュメントのアーキテクチャ セクションを参照してください。

テンポを試す

これが私たちにとって役に立ったのと同様に、あなたにとっても役に立った場合は、ぜひ Tempo リポジトリをクローンして試してみてください。

<<:  2021 年のトップ 5 のエンタープライズ クラウド ストレージ ソリューション

>>:  Redis 分散ロックで発生するシリアル化の問題

推薦する

host1plus - 共有ホスティングが 55% オフ / VPS が 80% オフ / 南アフリカの VPS が 50% オフ

Host1plus の共有ホスティングと VPS の新しいプロモーションは 12 月 1 日から始ま...

国立スポーツ宝くじセンター:宝くじをオンラインで販売することは違法だとは言っていない

新浪科技は8日午前、民政部公益時報の報道によると、中国国家体育総局宝くじ管理センターに電話したところ...

VPS に移行するにはどうすればいいですか?

VPS (仮想プライベート サーバー) への移行には、通常、次の手順が含まれます。適切な VPS プ...

東中国でまた勝利!テンセントクラウド産業クラウド基地が江蘇省儀徴市に上陸

Tencent Cloud は中国東部地域で新たな躍進を遂げました。 10月22日、テンセントクラウ...

SEO 外部リンクとフレンドリーリンクの Nofollow タグ

最近、Han Tang Tea Cityとのリンク交換で、相手のリンクコードに以下のようにnofol...

サイトランキングがウェブサイトランキングに与える影響を分析する

友人とリンクを交換するときに、誰もがよく気にする質問は、「そのサイトは最初のサイトですか?」です。で...

VersioはEUドメイン名の登録を0.99ユーロで提供

Versio が逃げることはなさそうなので、あまり心配しないでください。この割引には登録数に制限はあ...

Kingsoft Cloud がクラウド上に「データシードウェアハウス」を構築する新しいアーカイブストレージ製品をリリース

はるか北極圏にあるスヴァールバル諸島の「最後の審判」種子貯蔵庫には、世界中から集められた何百万もの作...

Pinduoduoはどのようにして成功を収めたのでしょうか?どのように動作するのでしょうか?

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています最近、Xi...

インスタンス共有ウェブサイトは、ブラックリンクにリンクされている場合、ダウングレードされますか?

みなさんこんにちは。ウェブサイトが誤ってブラックリンクにリンクされた場合、それがいかに悲惨なことか、...

racknerd のニューヨークデータセンター AMD Ryzen 7950X シリーズの高性能 VPS のレビュー

Racknerdは、今年のブラックフライデーのプロモーションで初めてニューヨークデータセンターに高性...

SEO最適化に関する個人的な理解と誤解の分析

SEO について体系的かつ共有可能な記事を書いてから長い時間が経ちました。約 1 年間、私は外部リン...

Linux 仮想ファイルシステム (VFS) の関係を示す図

皆さんこんにちは。今日は Linux の仮想ファイルシステムについて説明します。仮想ファイルシステム...

Linode クラウド サーバーは、スナップショット バックアップやカスタム アップロード .img などの画像サービスを正式にサポートします。

6月16日、Linodeは画像サービスのサポートを正式に発表しました。このサービスは、VPSをスナッ...

Docker Desktop を置き換えますか? Podman Desktop GA バージョン 1.0 がリリースされました

Podman[1] (POD MANager)は、コンテナ、イメージ、ボリューム、およびPodをコン...