NGINX は、HTTP サーバーおよびリバースプロキシとして機能する、無料のオープンソースの高性能サーバーです。アプリケーションの状態をより適切に監視するために、NGINX でトレース分析を実行できます。このトピックでは、NGINX でトレース分析を実行する方法について説明します。
前提条件
概要
NGINX をプロキシとして使用するマイクロサービスでレスポンスが遅い場合、データが収集されないため、レスポンスが遅い影響を推定できません。この場合、トレース分析を使用してマイクロサービスの NGINX リクエストをトレースし、レスポンスの遅延の影響を受けるページビューの数を計算できます。
Docker コンテナでの NGINX のデプロイとトレース
Dockerfile をダウンロード、ビルド、デプロイします。
wget https://arms-apm.oss-cn-hangzhou.aliyuncs.com/demo/nginx-zipkin-docker.tgz tar -xzvf nginx-zipkin-docker.tgz cd nginx-zipkin // Dockerfile をビルドします。 docker build --rm --tag nginx-zipkin:0.1Docker を実行します。
docker run --rm -p 80:80 -e "COLLECTOR_HOST=${ZIPKIN_ENDPOINT}?" -d nginx-zipkin:0.1${ZIPKIN_ENDPOINT}変数を、「前提条件」でコピーした Zipkin のバージョン 1 エンドポイントに設定しますが、「http://」を削除し、値の末尾に疑問符(?)を追加します。例:
docker run --rm -p 80:80 -e "COLLECTOR_HOST=tracing-analysis-dc-hz.aliyuncs.com/adapt_123@abc_456@efg/api/v1/spans?" -d nginx-zipkin:0.1
ECS インスタンスでの NGINX のデプロイとトレース
NGINX をインストールします。
NGINX のソースコードをダウンロードして解凍します。
wget http://nginx.org/download/nginx-1.14.2.tar.gz tar -xzvf nginx-1.14.2.tar.gzNGINX のソースコードをコンパイルします。
cd nginx-1.14.2 ./configure --with-compat make sudo make install
OpenTracing をインストールします。
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.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
Zipkin を使用してトレース分析を実行します。
Zipkin を作業ディレクトリにダウンロードします。
wget https://github.com/rnburn/zipkin-cpp-opentracing/releases/download/v0.5.2/linux-amd64-libzipkin_opentracing_plugin.so.gz gunzip linux-amd64-libzipkin_opentracing_plugin.so.gz sudo cp linux-amd64-libzipkin_opentracing_plugin.so /usr/local/lib/libzipkin_opentracing_plugin.so/usr/local/nginx/conf/nginx.conf ファイルを構成します。
load_module modules/ngx_http_opentracing_module.so; events {} http { opentracing on; opentracing_load_tracer /usr/local/lib/libzipkin_opentracing.so /etc/zipkin-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 を参照してください。
/etc/zipkin-config.json ファイルで Zipkin パラメーターを設定します。
{ "service_name": "nginx", "collector_host": "zipkin" }Alibaba Cloud によって管理されている Zipkin サービスを使用する場合は、_collector_host_ パラメータを Zipkin のエンドポイントに設定します。
説明「前提条件」でコピーした Zipkin のバージョン 1 エンドポイントを入力しますが、「http://」を削除し、値の末尾に疑問符(?)を追加します。
"collector_host": "tracing-analysis-dc-hz.aliyuncs.com/adapt_abc123@abc456_abc123@abc356/api/v1/spans?"_sample_rate_ パラメータを設定してサンプリング比率を指定します。
// サンプリング比率を 10% に設定します。 "sample_rate":0.1NGINX を実行し、NGINX サービスにアクセスします。
sudo /usr/local/nginx/sbin/nginx curl "http://localhost"
他の環境での NGINX のデプロイとトレース
コンテナレジストリからイメージをプルします。
sudo docker pull registry.cn-hangzhou.aliyuncs.com/public-community/nginx-zipkin:0.1Docker コンテナで NGINX を実行します。
docker run --rm -p 80:80 -e "COLLECTOR_HOST=${ZIPKIN_ENDPOINT}?" -d registry.cn-hangzhou.aliyuncs.com/public-community/nginx-zipkin:0.1${ZIPKIN_ENDPOINT}変数を、「前提条件」でコピーした Zipkin のバージョン 1 エンドポイントに設定しますが、「http://」を削除し、値の末尾に疑問符(?)を追加します。例:
docker run --rm -p 80:80 -e "COLLECTOR_HOST=tracing-analysis-dc-hz.aliyuncs.com/adapt_******_******/api/v1/spans?" -d registry.cn-hangzhou.aliyuncs.com/public-community/nginx-zipkin:0.1ブラウザを使用して NGINX ページに移動します。
ブラウザのアドレスバーに _localhost/nginx.conf_ または _curl "localhost/nginx.conf"_ と入力して NGINX ページに移動します。
結果の確認
のアプリケーションページManaged Service for OpenTelemetry コンソールで、アプリケーションの名前をクリックします。表示されるページで、トレースデータを確認します。
