すべてのプロダクト
Search
ドキュメントセンター

Application Real-Time Monitoring Service:C++ アプリケーションデータのレポートに Jaeger を使用する

最終更新日:Nov 10, 2025

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 を使用する準備」をご参照ください。

前提条件

エンドポイントを取得する

  1. ARMS コンソール にログオンします。 左側のナビゲーションウィンドウで、[統合センター] をクリックします。

  2. 統合センターページで、[サーバーサイド アプリケーション] セクションの [jaeger] カードをクリックします。

  3. [jaeger] パネルで、[統合の開始] タブをクリックし、データをレポートするリージョンを選択します。

    説明

    初めてリージョンにアクセスすると、リソースが自動的に初期化されます。

  4. [接続タイプ] パラメーターと [エクスポート プロトコル] パラメーターを構成し、エンドポイントをコピーします。

    • 接続タイプ: サービスが Alibaba Cloud にデプロイされており、選択したリージョンに存在する場合は、このパラメーターを Alibaba Cloud VPC ネットワークに設定することをお勧めします。 それ以外の場合は、このパラメーターをパブリックネットワークに設定します。

    • エクスポートプロトコル: クライアントでサポートされているプロトコルに基づいて、このパラメーターを HTTP(推奨)または gRPC に設定します。

    image.png

背景情報

データはどのようにレポートされますか?

  • 次の図は、Jaeger エージェントを使用せずにデータをレポートする方法を示しています。

    image
  • 次の図は、Jaeger エージェントを使用してデータをレポートする方法を示しています。

    image

はじめに

  1. 次のコマンドを実行して、公式 Web サイトから jaeger-client-cpp を取得します。

    wget https://github.com/jaegertracing/jaeger-client-cpp/archive/master.zip && unzip master.zip
  2. パッケージを解凍してディレクトリを入力します。 次に、次のコマンドを実行してプロジェクトをビルドします。

    説明

    CMake が必要であり、GCC のバージョンは V4.9.2 以降である必要があります。

    mkdir build
        cd build
        cmake ..
        make
  3. 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>
  4. jaeger-client-cpp の example ディレクトリを入力し、テストコマンドを実行します。

    ./app ../examples/config.yml

    ARMS コンソール にログオンします。 左側のナビゲーションウィンドウで、[アプリケーションモニタリング] > [アプリケーション] を選択します。 [アプリケーション] ページで、アプリケーションの名前をクリックします。 表示されるページで、トレースデータを表示します。

    説明

    image アイコンが [言語] 列に表示されている場合、アプリケーションは Application Monitoring に接続されています。ハイフン(-)が表示されている場合は、アプリケーションは Managed Service for OpenTelemetry に接続されています。

Jaeger エージェントを使用してデータをレポートする

  1. Jaeger クライアントをインストールします。 Jaeger クライアントのダウンロード方法の詳細については、jaeger-client-cpp をご参照ください。

  2. 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
  3. スパンを作成します。

    // 親スパンが存在するシナリオでスパンを作成します。
    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);
    }
  4. 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>