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

Managed Service for OpenTelemetry:C++ アプリケーションデータのレポートに Jaeger を使用する

最終更新日:Apr 16, 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. Managed Service for OpenTelemetry コンソール にログオンします。 左側のナビゲーションウィンドウで、[統合センター] をクリックします。

  2. 統合センターページで、[オープンソースフレームワーク] セクションの [jaeger] カードをクリックします。

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

    説明

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

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

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

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

    image

古いコンソール

  1. Managed Service for OpenTelemetry コンソール にログオンします。

  2. 左側のナビゲーションウィンドウで、[クラスタ構成] をクリックします。 表示されるページで、[アクセスポイント情報] タブをクリックします。

  3. 上部のナビゲーションバーで、データをレポートするリージョンを選択します。 [クラスタ情報] セクションで、[トークンの表示] をオンにします。

  4. [クライアント] パラメーターを [jaeger] に設定します。

    表の [関連情報] 列で、エンドポイントをコピーします。jager中国.jpg

    説明

    アプリケーションが Alibaba Cloud 本番環境にデプロイされている場合は、VPC エンドポイントを使用します。 それ以外の場合は、パブリックエンドポイントを使用します。

背景情報

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

  • 次の図は、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

    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>