Managed Service for OpenTelemetry は、Jaeger を使用してアプリケーションをインストルメントし、トレースデータをレポートした後、アプリケーションを監視します。 トポロジー、トレース、異常および低速のトランザクション、SQL 分析データなどのモニタリングデータを表示できます。 このトピックでは、Jaeger を使用して C++ アプリケーションをインストルメントし、そのデータをレポートする方法を示します。
OpenTelemetry Protocol(OTLP)を使用して、アプリケーションを Managed Service for OpenTelemetry に接続することをお勧めします。 この場合、より多くの機能、より高度なトレース機能、および最高のユーザーエクスペリエンスが提供されます。
Alibaba Cloud は、OpenTelemetry をアプリケーションと統合する方法、および Managed Service for OpenTelemetry をすぐに使い始めるのに役立つ OpenTelemetry の使用に関するベストプラクティスについて、詳細な手順を提供しています。 詳細については、「Managed Service for OpenTelemetry を使用する準備」をご参照ください。
前提条件
背景情報
はじめに
次のコマンドを実行して、公式 Web サイトから jaeger-client-cpp を取得します。
wget https://github.com/jaegertracing/jaeger-client-cpp/archive/master.zip && unzip master.zipパッケージを解凍してディレクトリを入力します。 次に、次のコマンドを実行してプロジェクトをビルドします。
説明CMake が必要であり、GCC のバージョンは V4.9.2 以降である必要があります。
mkdir build cd build cmake .. makeJaeger エージェント をダウンロードし、次のパラメーターを指定してエージェントを起動し、Managed Service for OpenTelemetry コンソールにデータをレポートします。
説明<endpoint>は、前提条件 セクションで取得したものに置き換えます。# reporter.grpc.host-port パラメーターはエンドポイントを指定します。 エンドポイントはリージョンによって異なります。 例: nohup ./jaeger-agent --reporter.grpc.host-port=tracing-analysis-dc-sz.aliyuncs.com:1883 --jaeger.tags=<endpoint>jaeger-client-cpp の example ディレクトリを入力し、テストコマンドを実行します。
./app ../examples/config.ymlManaged Service for OpenTelemetry コンソール の [アプリケーション] ページで、アプリケーションの名前をクリックします。 表示されるページで、トレースデータを表示します。
Jaeger エージェントを使用してデータをレポートする
Jaeger クライアントをインストールします。 Jaeger クライアントのダウンロード方法の詳細については、jaeger-client-cpp をご参照ください。
Tracer オブジェクトを作成します。
たとえば、YAML 構成に基づいて Trace オブジェクトを生成できます。
void setUpTracer(const char* configFilePath) { auto configYAML = YAML::LoadFile(configFilePath); // YAML ファイルから構成をインポートします。 auto config = jaegertracing::Config::parse(configYAML); // Tracer オブジェクトのサービス名とロガーを設定します。 auto tracer = jaegertracing::Tracer::make( "example-service", config, jaegertracing::logging::consoleLogger()); // Tracer オブジェクトをグローバル変数として設定します。 opentracing::Tracer::InitGlobal( std::static_pointer_cast<opentracing::Tracer>(tracer)); }YAML 構成例:
disabled: false reporter: logSpans: true sampler: type: const param: 1スパンを作成します。
// 親スパンが存在するシナリオでスパンを作成します。 void tracedSubroutine(const std::unique_ptr<opentracing::Span>& parentSpan) { auto span = opentracing::Tracer::Global()->StartSpan( "tracedSubroutine", { opentracing::ChildOf(&parentSpan->context()) }); } // 親スパンが存在しないシナリオでスパンを作成します。 void tracedFunction() { auto span = opentracing::Tracer::Global()->StartSpan("tracedFunction"); tracedSubroutine(span); }Jaeger エージェント をダウンロードし、次のパラメーターを指定してエージェントを起動し、Managed Service for OpenTelemetry コンソールにデータをレポートします。
説明<endpoint>は、前提条件 セクションで取得したものに置き換えます。# reporter.grpc.host-port パラメーターはエンドポイントを指定します。 エンドポイントはリージョンによって異なります。 例: nohup ./jaeger-agent --reporter.grpc.host-port=tracing-analysis-dc-sz.aliyuncs.com:1883 --jaeger.tags=<endpoint>

