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

Application Real-Time Monitoring Service:NGINXでのトレース分析にJaegerを使用する

最終更新日:Mar 03, 2025

NGINXは、HTTPサーバーおよびリバースプロキシとして機能する、無料のオープンソースの高性能サーバーです。アプリケーションの状態をより適切に監視するために、NGINXでトレース分析を実行できます。このトピックでは、NGINXでトレース分析を実行する方法について説明します。

前提条件

JaegerまたはZipkinのエンドポイントを取得するには、次の手順を実行します。

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

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

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

  4. クライアントパラメータをJaegerまたはZipkinに設定します。この例では、Jaegerが選択されています。

    下部の表の関連情報列で、JaegerまたはZipkinのエンドポイントを取得します。

    Jaeger/Zipkin接入点信息

    説明

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

概要

NGINXをプロキシとして使用するマイクロサービスで応答が遅い場合、データが収集されないため、応答が遅いことの影響を推定できません。この場合、トレース分析を使用してマイクロサービスのNGINXリクエストをトレースし、応答の遅延の影響を受けるページビューの数を計算できます。

DockerコンテナでのNGINXのデプロイとトレース

  1. Dockerfileをダウンロード、ビルド、デプロイします。

    wget https://arms-apm.oss-cn-hangzhou.aliyuncs.com/demo/nginx-jaeger-docker.tgz
    tar -xzvf nginx-jaeger-docker.tgz
    cd nginx-jaeger
    # Dockerfileをビルドします。
    docker build --rm --tag nginx-jaeger:0.1 .
  2. Dockerを実行します。

    docker run --rm  -p 80:80 -e "GRPC_HOST=${GRPC_HOST}" -e "GRPC_AUTH=${GRPC_AUTH}" -d jaeger-nginx:0.1

    ${GRPC_HOST}変数と${GRPC_AUTH}変数を、「前提条件」で取得したエージェントのエンドポイント情報に設定します。

    例:

    docker run --rm  -p 80:80 -e "GRPC_HOST=tracing-analysis-dc-hz.aliyuncs.com:1883" -e "GRPC_AUTH=123abc@123abc_789abc@456abc}" -d jaeger-nginx:0.1

ECSインスタンスでのNGINXのデプロイとトレース

  1. 次のコマンドを実行してNGINXをインストールします。

    1. NGINXのソースコードをダウンロードして解凍します。

      wget http://nginx.org/download/nginx-1.14.2.tar.gz
      tar -xzvf nginx-1.14.2.tar.gz
    2. NGINXのソースコードをコンパイルします。

      cd nginx-1.14.2
      ./configure --with-compat
      make
      sudo make install
  2. OpenTracingをインストールします。

    1. OpenTracingパッケージをダウンロードして解凍します。

      wget https://github.com/opentracing-contrib/nginx-opentracing/releases/download/v0.7.0/linux-amd64-nginx-1.14.0-ngx_http_module.so.tgz
      tar -xzvf linux-amd64-nginx-1.14.0-ngx_http_module.so.tgz
    2. .soファイルをNGINXのmodulesフォルダにコピーします。フォルダが存在しない場合は、フォルダを作成します。

      sudo mkdir /usr/local/nginx/modules
      sudo cp ngx_http_opentracing_module.so /usr/local/nginx/modules/ngx_http_opentracing_module.so
  3. Jaegerを使用してトレース分析を実行します。

    1. Jaegerを作業ディレクトリにダウンロードします。

      wget https://github.com/jaegertracing/jaeger-client-cpp/releases/download/v0.4.2/libjaegertracing_plugin.linux_amd64.so
      sudo cp /usr/local/lib/libjaegertracing_plugin.so /usr/local/lib/libjaegertracing.so
    2. /usr/local/nginx/conf/nginx.confファイルを構成します。

      load_module modules/ngx_http_opentracing_module.so;
      events {}
      http {
        opentracing on;
        opentracing_load_tracer /usr/local/lib/libjaegertracing_plugin.so /etc/jaeger-config.json;
        server {
          error_log /var/log/nginx/debug.log debug;
          listen 80;
          location  ~ {
            opentracing_operation_name $uri;
            opentracing_trace_locations off;
            // プロキシに移動するために使用するサービス。ビジネス要件に基づいて値を設定します。
            proxy_pass http://127.0.0.1:8081;
            opentracing_propagate_context;
          }
        }
      }
      説明

      パラメータの詳細については、opentracing-contribを参照してください。

    3. /etc/jaeger-config.jsonファイルでJaegerパラメータを設定します。

      {
        "service_name": "nginx",
        // サンプリングレートを指定します。
        "sampler": {
          "type": "const",
          "param": 1
        },
        "reporter": {
          "localAgentHostPort": "localhost:6831"
        }
      }
    4. 次のいずれかの方法を使用してJaegerエージェントを構成します。

      • セルフマネージドJaegerサービスを使用する場合は、ネイティブのJaegerエージェントをダウンロードし、collector.host-portパラメータを設定します。

        nohup ./jaeger-agent  --collector.host-port=10.100.**.**:142**   1>1.log 2>2.log &
      • Alibaba Cloudによって管理されているJaegerサービスを使用する場合は、トレース分析エージェントをダウンロードします。次に、collector.host-portパラメータを設定してエージェントを起動します。これにより、トレース分析にデータを報告できます。

        <endpoint>パラメータを、「前提条件」で取得したエンドポイントに設定します。「前提条件」で取得したエンドポイントの末尾にある「/api/traces」を削除します。たとえば、<endpoint>パラメータをhttp://tracing-analysis-dc-sh.aliyuncs.com/adapt_abc123@abc123_efg123@efg123に設定できます。

        # collector.host-portはエンドポイントを指定します。エンドポイントはリージョンによって異なります。例:
        nohup ./tracing-analysis-agent-linux-amd64 --collector.host-port=<endpoint>
    5. NGINXを実行し、NGINXサービスにアクセスします。

      sudo /usr/local/nginx/sbin/nginx
      curl "http://localhost"

他の環境でのNGINXのデプロイとトレース

  1. コンテナレジストリからイメージをプルします。

    docker pull registry.cn-hangzhou.aliyuncs.com/public-community/jaeger-nginx:0.1
  2. DockerコンテナでNGINXを実行します。

    docker run --rm  -p 80:80 -e "GRPC_HOST=${GRPC_HOST}" -e "GRPC_AUTH=${GRPC_AUTH}" -d registry.cn-hangzhou.aliyuncs.com/public-community/jaeger-nginx:0.1

    ${GRPC_HOST}変数と${GRPC_AUTH}変数を、「前提条件」で取得したエージェントのエンドポイント情報に設定します。

    例:

    docker run --rm  -p 80:80 -e "GRPC_HOST=tracing-analysis-dc-hz.aliyuncs.com:1883" -e "GRPC_AUTH=123abc@123abc_789abc@456abc}" -d jaeger-nginx:0.1
  3. ブラウザを使用してNGINXページに移動します。

    ブラウザのアドレスバーに「localhost/nginx.conf」と入力するか、「curl "localhost/nginx.conf"」と入力してNGINXページに移動します。

結果の確認

ARMSコンソールにログインします。左側のナビゲーションペインで、アプリケーション監視 > アプリケーションを選択します。「アプリケーション」ページで、アプリケーションの名前をクリックします。表示されるページで、トレースデータを表示します。

説明

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