FIXER cloud.config Tech Blog
Grafana Tempo×OpenTelemetryの導入方法
2023年09月06日 16時45分更新
本記事は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自体のストレージの設定が必要になります。
また自分の失敗談としてmetricsGeneratorをmetrics_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年度入社しました。朝食は元気の源
この連載の記事
-
TECH
WSL2でのGitHubの認証をできる限り簡単に行う方法 -
TECH
Grafana TempoとLokiの連携で進化するログ解析とトレーシング -
TECH
「Microsoft 365開発者プログラム」のアクティベーション方法 -
TECH
サインインなしでも使える! 開発者向けAI検索エンジン「Phind」をご紹介 -
TECH
え、高級言語しか触ったことないのにCPUを自作するんですか!? -
TECH
Github Copilotで、コミットメッセージもAIに考えてもらう方法 -
TECH
Github Copilot Chatをさらに便利にする3つの機能 -
TECH
はじめてのOSSコントリビュートで“推しからのリプ”をもらった話 -
TECH
Kubernetesのcert-managerについて簡潔にまとめておきますね -
TECH
GTM経由でカスタムディメンションを取得するTypeScript - この連載の一覧へ