このページでは、Windows マシンで Node.js エージェントを Java プロキシモードで実行する方法について説明します。 

プロキシポート

WindowsのNode.js環境によっては、Node.jsのrequireステートメントに3つのポートを設定する必要があります。これらのポート設定は以下のとおりです。

  • proxyCommPort:デフォルトは 10101
  • proxyRequestPort:デフォルトは 10102
  • proxyReportingPort:デフォルトは 10103

3 つのポートはすべて、1024 65535 の範囲に含まれる必要があります

Windows環境の自動起動

デフォルトの動作では、エージェントは Java プロキシを自動起動します(proxyAutolaunchDisabledfalse)。

エージェントの自動起動を許可し、マシンごとに 1 つの Node.js プロセスがある場合、エージェントは利用可能なデフォルトのポート値を自動的に使用します。この場合、これらの設定を行う必要はありません。

デフォルトのポートが使用できない場合は、require ステートメントでこれらの設定を require ステートメントで利用可能なポートに構成します。

1台のマシンに複数のNode.jsプロセスがあり、それぞれが独自のプロキシに報告している場合、各プロセスには独自のポートが必要です。この場合、各プロセスの require ステートメントで 3 つのポートすべてに固有の設定を構成します。

Windows環境の手動起動

一部の環境では同じマシンで複数のNode.jsプロセスが存在し、すべてが単一のプロキシに報告されます。これらの環境では、手動でプロキシを起動し(proxyAutolaunchDisabledtrue)、3 つのポート設定を構成する必要があります。

require ステートメントの proxyCommPort 設定と runProxy.cmdcommPort オプションは同じ値である必要があります。エージェントとプロキシには同じポートを使用する必要があります。

proxyRequestPortproxyReportingPort2 つの未使用の TCP ポートです。プロキシを実行するユーザには、Windows でこれらのポートにバインドする権限があります。

1 台のマシンにおけるそれぞれのアプリケーション、ティア、ノードの組み合わせでは、異なる要求ポートと報告ポートを使用する必要があります。同じアプリケーションティアノードとして報告する2つのプロセスは、同じ要求および報告ポートを使用する場合があります。各アプリケーション/ティア/ノードの組み合わせごとに、これらのポートを require ステートメントに設定します。

WindowsでrunProxyを手動で実行する

デフォルトでは、プロキシコンポーネントはエージェントを起動すると自動で開始します。プロキシを手動で起動するようにエージェントを構成している場合は、次のコマンドを使用します。 

インストゥルメントされたサーバでトラフィックを実行する前に、runProxy.cmd を実行し、以下の構文を使用してプロキシを開始します。-d オプションを選択する場合は、-j オプションの前に指定する必要があります。

Usage: runProxy.cmd [-d <proxyDir>] -j <jreDir> [logDir] [commPort]

Options:
  -d <proxyDir> the directory where the proxy is installed; optional, defaults to the directory containing the runProxy.cmd script
  -j <jreDir> the directory where the JRE is installed; required
  logDir the directory the proxy should log to; optional, defaults to <proxyDir>\logs
  [commPort] port used for the proxy control channel on Windows; defaults to 10101; if specified it must match the proxyCommPort setting in the require statement
CODE


次の例では、コマンドがエージェントによりインストゥルメントされた Node.js アプリケーションの root から実行されることを前提としています。

.\node_modules\appdynamics\node_modules\appdynamics-proxy\proxy\runProxy.cmd 
		-j .\node_modules\appdynamics\node_modules\appdynamics-jre\jre /var/log/proxy 
		.\node_modules\appdynamics\node_modules\appdynamics-proxy\proxy\logs
		10101
CODE

WindowsタスクスケジューラでrunProxyコマンドを手動で実行する

WindowsタスクスケジューラでrunProxyコマンドをスケジュールできます。

  1. タスクスケジューラを開きます。
  2. Create Basic Task をクリックします。
  3. 全般タブで、タスクの名前を入力します。
  4. [Run whether user is logged on or not] を選択します。
  5. [Run with highest privileges] を確認します。
  6. トリガータブで、新しいトリガーを追加します。デバイスの起動時にトリガーを設定してください。
  7. アクションタブで、新しいアクションを作成します。アクションを [Start a program] に設定します。
  8. [Program/script] フィールドに、
    <app_root>/node_modules/appdynamics-proxy/proxy/runProxy.cmd と入力します。
  9. [Add arguments] フィールドに、
    -d <app_root>/node_modules/appdynamics-proxy -j <app_root>/node_modules/appdynamics-jre/jre %TEMP% 10101 と入力します。
  10. [Start in] フィールドに、
    <app_root>/node_modules/appdynamics-proxy/proxy と入力します。
  11. [OK] をクリックしてウィザードを終了します。
  12. システムを再起動し、タスクマネージャでJavaプロセスを確認します。