このページの本文へ

FIXER Tech Blog - Development

FIXER cloud.config Tech Blog

Grafana Tempo×OpenTelemetryの導入方法

2023年09月06日 16時45分更新

文● 秋山 直輝/FIXER

  • この記事をはてなブックマークに追加
  • 本文印刷

 本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「OpenTelemetry×Grafana Tempo」を再編集したものです。

Grafana Tempoとは

 Grafana Tempoとはオープンソースの分散トレーシングバックエンドです。特徴として、Grafana、Prometheus、Lokiと相性がいい点が挙げられます。また、OpenTelemetryのプロトコルを取り込むことができます。

 従来のトレーシングツールはElasticsearchやCassandraのようなデータベースを必要としスケールアップや管理が難しい点がありました。対してTempoは依存関係がオブジェクトストレージのみとなっており、コスト効率が高くなっています。

アーキテクチャ

引用元:Tempo architecture | Grafana Tempo documentation

 Tempoは上記のコンポーネントで構成されています。主要なコンポーネントをいくつか紹介します。

distributor

 様々なフォーマットのスパンを受け取り、ingesterにルーティングする。スパンとはトレースを構成するリクエスト内の各処理の情報。

Metrics generator

 オプションの機能。トレースからメトリクスを導出し、Prometheusのようなメトリクスストレージに書き込む。

 後で紹介するServiceGraphという機能に必要になります。

ServiceGraph

 様々なサービス間の相互関係を視覚的に表す機能です。分散システムの構造、コンポーネント間の接続や依存関係を理解するのに役立ちます。Azure Application Mapに類似してますね。

引用元:Service graph view | Grafana Tempo documentation

 エラー率やレイテンシなどの関連データを表示できます。

実装

Grafana Tempoのインストール

tempo_values.yml

 prometheusへリモート書き込みする設定が必要です。

 また上記のほかにTempo自体のストレージの設定が必要になります。

 また自分の失敗談としてmetricsGeneratormetrics_generatorと記述していてずっと動かなかったです。。

 こちらのドキュメントを参考にしていたのですが、失敗の原因にもなった重要な点としてHelmのチャートのvalueファイルとkuberetesリソースのYAMLファイルでプロパティの書き方が違うという点があります。大変勉強になりました。

Opentelemetry Collectorを修正

collector.yml

 exportersにdistributorへエクスポートする設定を追記します。

Prometheusの設定追記

 Prometheusのvalueファイルに下記を追記してRemoteWriteを有効化します。

Grafanaで表示

 Tempoのデータソースの設定でServiceGraphの欄にMetrics generatorの書き込み先にしているPrometheusを設定します。

ServiceGraph表示

 ServiceGraphを選択しRun queryを押すとService Graphが表示されるはずです。

まとめ

 今回、Grafana Tempoを実装する際日本語のドキュメントがほぼない状態だったのでなら自分が書くかと思った次第です。少しでも導入の手助けになれば幸いです。最後まで読んでいただきありがとうございます。

秋山 直輝/FIXER
(あきやま なおき)
HAL東京を卒業し、2023年度入社しました。朝食は元気の源

カテゴリートップへ

この連載の記事