Download PDF
Download page Node.js エージェントのインストール.
Node.js エージェントのインストール
コントローラのエージェントダウンロードウィザードは、AppDynamics Node.jsエージェントをすぐに使い始めるための最も簡単な方法を提供します。ウィザードは、入力に基づいてエージェント用に事前構成された require ステートメントを作成します。
このページには、Node.jsエージェントをインストールするための追加情報とオプションを記載しています。
Node.jsエージェントをインストールするための準備
Node.jsエージェントをインストールするには、Node.jsアプリケーションのソースコードにrequireステートメントを追加する必要があります。このため、実行中のAppDynamicsコントローラに加えて、アプリケーションのソースコードへの書き込みアクセス権と、Node.jsアプリケーションを再起動してエージェントをインストールする機能が必要です。
AppDynamicsコントローラの「はじめに」ウィザードは、requireステートメントを自動的に生成します。このステートメントには、コントローラの接続設定と、AppDynamicsでNode.jsアプリケーションをモデリングするためのウィザードに指定した値がステートメントに入力されます。
Windowsにインストールする場合:
- ご使用の Windows バージョンのサポートを確認してください。
- Visual Studio 2015 の Visual C++ 再頒布可能パッケージをインストールします。
Node.jsエージェントのノードIDについて
ノード名設定を使用して、node.jsアプリケーションインスタンスのIDを構成します。デフォルトでは、エージェントは nodeName
に対して構成された値をプレフィックスとして使用し、ダッシュと数字をサフィックスとして追加します。たとえば、次のように設定します。
nodeName=MyNode
この構成で開始する最初のノードは MyNode-0
という名前になります。ノード名の自動で番号付けされたサフィックスは、複数のワーカープロセスを持つマシンで最も有用です。
複数のワーカープロセスを実行していない場合に、ノード名に自動番号付けが行われないようにするには、noNodeNameSuffix
を true
に設定します。次の例では、ノードはMyNodeという名前になります。
nodeName=MyNode noNodeNameSuffix=true
各マシンでワーカープロセスをインストゥルメント化する場合は、アプリケーション名とノード名の各組み合わせは一意にする必要があります。このため、たとえば 1 番目のサーバに nodeName=Server1
を、2 番目のサーバには nodeName=Server2
を構成して、各サーバには異なるノード名プレフィックスを指定してください。
PM2プロセスマネージャを使用するNode.jsアプリケーションをインストゥルメント化している場合は、ノードサフィックス名をprocess.env.pm_idに設定します。
Node.jsノードでのマシンエージェントの実行
インストゥルメント化された Node.js をホストするマシンに Machine Agentをインストールして、マシンエージェントの controller-info.xml
ファイルにティア名とノード名を指定する場合、Node.js Agentは登録に失敗します。
この問題を回避するには、
- まず、Node.js Agentをインストールして、次のエージェントをインストールします。Machine Agent。
- インストゥルメント化された Node.js ノードをホストするマシンにマシンエージェントをインストールする場合、マシンエージェントの
controller-info.xml
ファイルにアプリケーション、ティア、またはノードの名前を指定しないでください。これを行うとNode.jsエージェントが登録に失敗する可能性があります。
Node.js エージェントのインストール
エージェントをインストールするには、モニタリングしたい各ディレクトリーでnpmインストールコマンドを実行してから、アプリケーションにエージェントモジュールを追加するためのrequireコマンドを追加します。
Node.js 0.8.1 ~ 0.8.18 を使用している場合は、「Node.js 0.8.1 から 0.8.18 までのユーザエージェントを設定」を参照してください。
npm経由でのインストール
AppDynamics Node.js エージェントのどのバージョンがご使用のコントローラと互換性があるかを判断するには、「エージェントとコントローラの互換性」を参照してください。
最新の4.5エージェントをインストールするには、以下のコマンドを実行します。
npm install appdynamics@next
インストールしたいNode.jsエージェントの具体的なバージョンがわかっている場合は、それを指定できます。
npm install appdynamics@<x.y.z>
npm 5 を使用している場合は、npm 構成設定で package-lock=false
を設定してロックファイルを無効化する必要があります。
Java プロキシを使用した Node.js のインストール
Java プロキシを使用して Node.js をインストールするには、エージェントのインストール時に次のコマンドを実行します。
npm install appdynamics@<x.y.z> --appd_include_java_proxy=true
Node.js v6 に付属している npm のバージョンは、エージェントの 4.5.12 以降のバージョンで使用されているインストール後スクリプトの自動実行がサポートされません。新しい Node.js バージョンの使用をお勧めします。Node.js v6 を使用する必要がある場合は、エージェントをインストールする前に npm を更新する必要があります。 npm install -g npm
Requireステートメントの追加
他のrequireステートメントの前に、アプリケーションのソースコードの最初の行として次のrequireステートメントを貼り付けます。変数を設定用の値に置き換えます。アカウント名とアクセスキーを調べるには、AppDynamics UI の右上にある設定()アイコンをクリックし、次に [License] をクリックします。
require("appdynamics").profile({ controllerHostName: '<controller host name>', controllerPort: <controller port number>, controllerSslEnabled: false, // Set to true if controllerPort is SSL accountName: '<AppDynamics_account_name>', accountAccessKey: '<AppDynamics_account_key>', //required applicationName: 'your_app_name', tierName: 'choose_a_tier_name', nodeName: 'choose_a_node_name' });
設定に関する参照情報、および使用可能なその他の設定については、「Node.js設定参考資料」を参照してください。
コードの最初の行として表示される別のモジュールの require ステートメントの最初の行として、require
ステートメントを配置できます。
この場合、ポイントオブエントリ ソース ファイルの変更が必要な場合があります。エージェントへのコールを配置するファイルを require() するために 1 行を追加することもあります。例:require(“<script-that-initializes-the-agent>”
。また、複数のバージョンのエージェント初期化スクリプトを使用せずに、profile() コールをパラメータ化して、異なるインスタンスに名前を付けることもできます。
requireステートメントをコードの最初の行として配置できない場合は、ステートメントを他の場所に挿入できますが、インストゥルメント化する必要のあるコアまたはサードパーティ製モジュールのrequire()の前に置く必要があります。一般に、require(“appdynamics”)
ステートメントはコード内でできるだけ早期に実行する必要があります。
構成のテスト
インストールを確認するには、アプリケーションを再起動して負荷をかけます。構成で指定したビジネスアプリケーションのフローマップに新しいノードが表示されます。
Node.jsアプリケーションの停止
インストゥルメント化されたNode.jsインスタンスを停止するために使用されるスクリプトまたは他のメカニズムは、可能であればSIGTERMシグナルを使用する必要があります。
SIGKILL (kill -9) を使用すると、エージェントの Java プロキシのリソースが正しく解放されなくなります。
他のプロファイリングツールを使用して実行
エージェントは他のプロファイリングツールと互換性がありません(例:--inspect
フラグを付けてノードプロセスを実行する)。
Node.jsクラスタをインストゥルメント化
アプリケーションでクラスタモジュールが使用されている場合、マスターおよびワーカープロセスの両方に、appdynamics.profile require
ステートメントを配置します。このシナリオでは、プロキシを手動で起動する必要はありません。
アプリケーションで PM2 のような外部のプロセスマネージャを使用する場合、プロキシコンポーネントを手動で起動する必要があります。次を参照してください。 Sharing a Proxy Among Node.js Agents
Node.js 0.8.1から0.8.18までのユーザーエージェントを設定します
0.8.1 ~ 0.8.18 のバージョンの Node.js を実行している場合、npm install
コマンドを実行する前に、user-agent npm
プロパティを設定する必要があります。
構文は次のとおりです。
npm config set user-agent "node/<version> {linux|darwin} {x64|i86}"
例:
npm config set user-agent “node/v0.8.14 linux x64"
Node.jsに関するインストレーション問題の解決
対応しないバージョンの Node.js に Node.js Agentをインストールしようとすると、インストールが失敗し次のようなメッセージが表示されます。
npm ERR! notsup Unsupported npm ERR! notsup Not compatible with your version of node/npm: appdynamics@3.9.3 npm ERR! notsup Required: {"node":">=0.8.0 <=0.10.31"} npm ERR! notsup Actual: {"npm":"1.4.28","node":"0.10.32"} ...
Node.js のバージョンについては、「Node.js対応環境」を参照してください。