OpenTelemetry コミュニティデモの発表

Blog posts are not updated after publication. This post is more than a year old, so its content may be outdated, and some links may be invalid. Cross-verify any information before relying on it.

TL;DR

OpenTelemetry コミュニティは、既存の優れたデモ(Google に感謝!)を引き継ぎ、さらに改善する取り組みを進めています。 すべての GA SDK(Swift を除く)が対象となり、デモのサポートはメトリクスとログに拡大され、各シグナルのための標準的なシナリオがフォールトインジェクションなどとともにドキュメント化される予定です。

詳細を飛ばしたい場合は、リポジトリをクローンして、コマンドラインから docker compose up1 を実行してください。 いくつかの技術的な前提条件があるので、そちらも確認してください。

デモの初回ビルドには15〜20分かかるため、その間にストレッチをしたり水分補給をすることをお勧めします。

コマンドラインの出力は次のようになります。

コンソール出力

おめでとうございます! これでショッピングを楽しみながらテレメトリーを送信できます。 まさに勝利です。

共有財産の成功

この共同デモの取り組みの推進力となっている、いくつかの普遍的な課題があります。

OpenTelemetry が成熟するにつれ、ユーザーや企業は、サービスを新しいパラダイムへ移行するためのベストプラクティスガイドや、新しいツールを自分で試すためのデモアプリケーションを求めるようになっています。 しかし、コミュニティのワーキンググループやベンダーには、自身の技術をデモンストレーションするための統一された洗練されたプラットフォームがありません。 “Hello, World!” だけでは限界があるのです。

複数のベンダーが独自のデモアプリケーションを作成していますが、開発と継続的なサポートの全責任を負っています。 既存のデモはそれぞれ不足している部分があり、言語のサポートが欠けていたり、バックエンドの選択肢が制限されていたり、計装ライブラリに過度に依存していたりします。

プロジェクトの目標

  • 開発者に対して、OpenTelemetry の計装を学ぶために使用できる堅牢なサンプルアプリケーションを提供する。
  • オブザーバビリティベンダーに対して、さらにカスタマイズしたり、そのまま使用できる、単一の十分にサポートされたデモプラットフォームを提供する。
  • OpenTelemetry コミュニティに対して、OTel の API、SDK、ツールの機能と能力を示す生きた成果物を提供する。
  • OpenTelemetry のメンテナーやワーキンググループに対して、実際のシナリオに近い環境で新機能やコンセプトをデモンストレーションするプラットフォームを提供する。

現在の状態

出発点として、人気のある GCP マイクロサービスデモのフォークを選択しました。 最初の機能追加として、単一の docker compose ファイルにプロジェクトを統合してローカルデプロイを簡素化し、ドキュメントを更新し、既存のサービスを Ruby の例に置き換えました。 それ以外は、GCP デモの既存の機能セットがそのまま維持されています。

  • 6つの言語(C#、Go、Java、Node.js、Python、Ruby)をサポートする10個のアプリケーションマイクロサービス
    • Ruby サポートは公開日の直近2週間以内に追加された
  • ローカルの docker 上で動作するように設計
  • Redis キャッシュを使用
  • 計装ライブラリを使用した自動計装で、gRPC、Redis、HTTP ライブラリのトレースをサポート
  • OpenTelemetry Collector で転送された分散トレースの Jaeger 可視化
  • 常時サンプリング(テレメトリーの100%が送信される)と合成負荷生成

現在のアーキテクチャ

現在のアーキテクチャ

BYOB(Bring Your Own Backend)

Jaeger は素晴らしいですが(本当に)、お好みの APM ベンダーで試したい場合はどうすればよいでしょうか。 ベンダーの Collector エクスポーターを使用するように Collector 設定ファイルを変更するか、ベンダーのデモのフォークを使用することで、お好みのバックエンドにデータを送信できます。

Lightstep は、フォークしたバージョンのデモから自社のエクスペリエンスを強化するためのデータ送信を開始する方法について、素晴らしいブログ記事を公開しています。

将来の状態

今後の新機能

このアプリケーションを OpenTelemetry の全機能を示す標準的な例に仕上げるために、計画中または進行中の多くのエキサイティングな改善があります。 以下は今後の機能のほぼ網羅的なリストですが、ここに記載された項目だけに限定されるわけではありません。

  • C++、Erlang/Elixir、PHP、Rust の言語例
  • すべての GA SDK に対するメトリクスとログのサポート拡大
  • メトリクスを表示する可視化コンポーネント
  • 複数の計装手法の実装
  • サイドカーでのエージェントによる自動計装
  • すべてのシグナルの手動計装
  • Service Level Objective(SLO)の定義とトラッキング
  • 必要に応じた追加の計装ライブラリの導入
  • バゲージやその他のカスタムタグを追加する機能のデモンストレーション
  • 以下のようなその他のクラウドネイティブ技術の継続的な活用
  • 取り込み、変換、エクスポートのための強化された OpenTelemetry Collector ゲートウェイ機能
  • 確率ベースのサンプリング
  • フォールトインジェクションや、フィーチャーフラグに依存するサービスからテレメトリーを出力する方法などのさまざまなシナリオをデモンストレーションするフィーチャーフラグサービス

将来のアーキテクチャ

将来のアーキテクチャ

今後について

私たちはまだ旅の始まりにいますが、このプロジェクトには大きな勢いがあります。 貢献に興味がある方は、ぜひご参加ください。 GitHub リポジトリに参加方法のリンクがあり、そこから全体の進捗を追跡できます。


  1. docker-compose は非推奨です. 詳細は、 Migrate to Compose V2 を確認してください。 ↩︎