NGINX エージェントのアーティファクトは、GitHub からダウンロードできます。このアーティファクトの詳細については、「OTel Web Server Module」を参照してください。NGINX エージェントは CentOS 7 に基づいていて、Apache および NGINX インストゥルメンテーション用の共有ライブラリが含まれています。共有ライブラリは、それぞれの Web サーバーの、WebServerModule/Apache または WebServerModule/Nginx で使用できます。ただし、OpenTelemetry の共通ライブラリは sdk_lib/lib/ で入手できます。共有ライブラリは、Apache と NGINX の両方のインストゥルメンテーションに使用されます。

現在、NGINX エージェントのビルドは x86-64 アーキテクチャに基づいています。したがって、アーティファクトは、x86-64 プラットフォームで実行されていて、glibc バージョンが 2.17 以降のすべての Linux ディストリビューションで動作するはずです。

エージェントのダウンロードとインストール

  1. GitHub から NGINX エージェントをダウンロードします。 
  2. /opt にエージェントを解凍し、インストールします

    tar -xf opentelemetry-webserver-sdk-x64-linux.tgz -C /opt
    cd /opt/opentelemetry-webserver-sdk/
    ./install.sh
    CODE
  3. conf/nginx/opentelemetry_module.conf ファイルを /opt/ にコピーします。「OpenTelemetry モジュール構成ファイルのサンプル」を参照してください。
  4. 導入環境に応じてディレクティブ値を編集します。たとえば、NginxModuleOtelExporterEndpoint はコレクタの URL を指す必要があります。
  5. nginx.conf ファイルを編集して、opentelemetry_module.conf への参照および共有ライブラリを指定します。「NGINX 構成ファイルのサンプル」を参照してください。
  6. conf/nginx/nginx.conf を参照しながら、以下のコマンドシーケンスと場所に従ってください。

    load_module /opt/opentelemetry-webserver-sdk/WebServerModule/Nginx/ngx_http_opentelemetry_module.so;
    include /opt/opentelemetry_module.conf;
    CODE
  7. NGINX エージェントを開始する前に、LD_LIBRARY_PATH を更新して OpenTelemetry の依存関係をロードします。

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/opentelemetry-webserver-sdk/sdk_lib/lib
    
    CODE

Sample opentelemetry_module.conf

NginxModuleEnabled ON;
#NginxModule Otel Exporter details
NginxModuleOtelSpanExporter otlp;
NginxModuleOtelExporterEndpoint docker.for.mac.localhost:4317;
# SSL Certificates
#NginxModuleOtelSslEnabled ON
#NginxModuleOtelSslCertificatePath 
#NginxModuleOtelSpanProcessor Batch
#NginxModuleOtelSampler AlwaysOn
#NginxModuleOtelMaxQueueSize 1024
#NginxModuleOtelScheduledDelayMillis 3000
#NginxModuleOtelExportTimeoutMillis 30000
#NginxModuleOtelMaxExportBatchSize 1024
NginxModuleServiceName DemoService;
NginxModuleServiceNamespace DemoServiceNamespace;
NginxModuleServiceInstanceId DemoInstanceId;
NginxModuleResolveBackends ON;
NginxModuleTraceAsError ON;
#NginxModuleWebserverContext DemoService     DemoServiceNamespace DemoInstanceId
#NginxModuleSegmentType custom
#NginxModuleSegmentParameter 15,1,6,7
CODE


Sample nginx.conf

user nginx;
	worker_processes 1;
	 
	error_log /var/log/nginx/error.log warn;
	pid /var/run/nginx.pid;
	 
	load_module /opt/opentelemetry-webserver-sdk/WebServerModule/Nginx/ngx_http_opentelemetry_module.so;
	 
	events {
	 worker_connections 1024;
	}
	 
	 
	http {
	 include /etc/nginx/mime.types;
	 default_type application/octet-stream;
	 
	 log_format  main '$remote_addr - $remote_user [$time_local] "$request" '
	 '$status $body_bytes_sent "$http_referer" '
	 '"$http_user_agent" "$http_x_forwarded_for"';
	 
	 access_log /var/log/nginx/access.log  main;
	 
	 sendfile  on;
	 #tcp_nopush on;
	 
	 keepalive_timeout 65;
	 
	 #gzip on;
	 
	 include /etc/nginx/conf.d/*.conf;
	include /opt/opentelemetry_module.conf;
	}
CODE

構成ディレクティブ

これらのディレクティブは、展開のニーズに基づいて構成できます。表のセル内のダッシュ(「-」)は、この列がディレクティブに関連していないことを示します。

ディレクティブデフォルト値設定要件備考
NginxModuleEnabledONオプションNGINX Web サーバーをインストゥルメントするために必要です。
NginxModuleOtelSpanExporterotlpオプション使用するスパンエクスポータを指定します。現在、サポートされている値は otlpostream です。
NginxModuleOtelExporterEndpoint:
RequiredOpenTelemetry は、このエンドポイントにエクスポートします。たとえば、docker.for.mac.localhost:4317 のようになります。
NginxModuleOtelSpanProcessorbatchオプションサポートされている値は simplebatch です。
NginxModuleOtelSamplerAlwaysOnオプションサポートされている値は AlwaysOnAlwaysOff です。
NginxModuleOtelMaxQueueSize2048オプション最大スパンキューサイズ。このサイズ制限に達すると、スパンはドロップされます。
NginxModuleOtelScheduledDelayMillis5000オプション2 つの連続するエクスポート間のミリ秒単位の遅延間隔。
NginxModuleOtelExportTimeoutMillis30000オプションエクスポートがキャンセルされる前に実行できるミリ秒単位の時間。
NginxModuleOtelMaxExportBatchSize512オプションすべてのエクスポートの最大バッチサイズ。maxQueueSize より小さいか等しい必要があります。
NginxModuleServiceName-必須ServiceName の名前空間。
NginxModuleServiceNamespace-必須サービスの論理名。
NginxModuleServiceInstanceId-必須サービスインスタンスの文字列 ID。
NginxModuleTraceAsError-オプションApache ログに記録するためのトレースレベル。
NginxModuleWebserverContext-オプション3 つの値(スペースで区切られます)、ServiceNameServiceNamespace、および ServiceInstanceId をとります。
NginxModuleSegmentType-オプションスパン名の作成でフィルタリングする文字列(FIRST/LAST/CUSTOM))を指定します。
NginxModuleSegmentParameter-オプションスパン作成時に表示するセグメント数またはセグメント番号を指定します。

Splunk AppDynamics での可視化

この画像は、NGINX エージェントデータがコントローラでどのように可視化されるかを示しています。