Node.js 用の APM の設定
管理者は、以下の手順を使用して、これらのオプションの設定タスクを実行します。
apmdevops102jp
管理者は、以下の手順を使用して、これらのオプションの設定タスクを実行します。
Node.js プローブ エージェント名の設定
Node.js プローブ エージェントは、Node.js アプリケーションの設定を使用して自動的にその名前を検索します。これらの設定では、Node.js プローブ エージェントの設定は必要ありません。
チーム センター、WebView、および Workstation に特定の Node.js プローブ エージェント名を表示することが必要になる場合があります。いくつかの方法で、Node.js プローブ エージェントの名前を見つけるか、または指定するように、このエージェントを設定することができます。
Node.js プローブ エージェントが自動的に名前を決定する方法
CA APM の Node.js プローブ エージェントは、以下の順序で自動的に名前を検索します。エージェントの名前が 1 ステップで見つからない場合は、自動的に次のステップに進みます。
- Node.js アプリケーション
ファイル内にあるpackage.json
プロパティ。name
ファイルは、Node.js アプリケーションのルート ディレクトリにあります。package.json - Node.js アプリケーション起動スクリプト名(スクリプト名が
である場合を除く)。index.js - Node.js アプリケーションのルート ディレクトリ名。
- デフォルトの Node.js プローブ エージェント名は
です。NodeApplication
Node.js プローブ エージェントのカスタム名を設定する方法
Node.js プローブ エージェントのカスタム名を指定することができます。これにより、たとえば、同じ名前を持つ 2 つのアプリケーション インスタンスを実行しているときにメトリックを区別します。異なるエージェント名にすることで、パフォーマンス上の問題が発生しているアプリケーション インスタンスを特定できます。
プローブ エージェントの名前を指定する方法は、以下の点に基づいて決まります。
- ユーザの要件
Node.js プローブ エージェントは、以下の優先順位で名前を検索します。これは、設定可能なエージェントの命名方法に対応しています。 エージェントの名前が 1 ステップで見つからない場合は、自動的に次のステップに進みます。
ベスト プラクティス:
1 つ
の方法のみを使用して Node.js プローブ エージェント名を設定します。複数の方法で名前が設定されていると、混乱の元になります。たとえば、2 人の APM 管理者がいる場合、一方の管理者は ファイルに名前が設定されていると考えるかもしれません。もう一方の管理者は、環境変数に名前を設定しました。この場合、最初の管理者は、Investigator ツリーに表示されるエージェント名を見て混乱する可能性があります。config.json
- CA_APM_PROBENAME環境変数実行コンテキストに基づいて、Node.js コレクタ エージェントのプローブ名をデフォルト以外の値に設定します。以下の手順に従います。
- オペレーティング システムのコマンドを使用して、CA_APM_PROBENAME 環境変数を設定します。export CA_APM_PROBENAME=<probe-name>例:export CA_APM_PROBENAME=nodeapp-port-3001
- config.jsonファイルのプロパティで指定されているprobNameEnvKey環境キーNode.js アプリケーションで使用可能な環境キー変数は、別の場所で変数として使用することもできます。たとえば、この変数をスクリプト内で使用することができます。Node.js プローブ エージェントは、環境キー変数を使用して、プローブ エージェントの名前を指定できます。以下の手順に従います。
- <Node.js_Home>/ca-apm-probe ディレクトリに移動します。
- テキスト エディタでconfig.jsonファイルを開きます。
- 以下の環境キーを見つけます。チーム センター、WebView、および Workstation に表示するエージェント名を指定します。"probeNameEnvKey": "",例:"probeNameEnvKey": "NODE_APP_ID",
- ファイルを保存して閉じます。
- Node.js プローブ エージェント名は、
ステートメントを使用して、Node.js アプリケーション起動スクリプトで設定されます。この方法では、Node.js プローブ エージェント名に文字列または変数名を手動で追加します。require以下の手順に従います。- 以下の最初の行を Node.js アプリケーション起動スクリプトに追加して、Node.js プローブ エージェントを設定します。この方法を使用する場合、ホスト アドレス、ポート、およびプローブ名はすべて必須です。var probe = require('ca-apm-probe').start(<collector-agent-host>, <collector-agent-port>, <probe-name>);各項目の説明:
- <collector-agent-host> は、コレクタ エージェントのホスト アドレスです(通常、このアドレスは localhost です)。
- <collector-agent-port> は、コレクタ エージェントのポートです。
- <probe-name> は、メトリックがレポートされるプローブの名前です。
例:重要:ca-apm-proberequireステートメントを、コード内の最初のrequireステートメントとして配置します。たとえば、以下のとおりです。var probe = require('ca-apm-probe')({……var express = require('express');var mongoose = require('mongoose'); - スクリプト ファイルを保存して閉じます。
ファイルのconfig.json
プロパティこの方法では、静的な値の名前を指定します。probeName以下の手順に従います。- <Node.js_Home>/ca-apm-probe ディレクトリに移動します。
- テキスト エディタでconfig.jsonファイルを開きます。
- 以下のプロパティを見つけます。 チーム センター、WebView、および Workstation に表示する Node.js プローブ エージェント名を指定します。"probeName": "MyApplication",
- ファイルを保存して閉じます。
- 管理対象アプリケーションを再起動します。
config.json ファイルを使用した Node.js プローブ エージェント プロパティの設定
config.json
ファイルを編集して、Node.js プローブ エージェントのプロパティを設定できます。以下の手順に従います。
- <Node.js_Home>/ca-apm-probe ディレクトリに移動します。
- テキスト エディタでconfig.jsonファイルを開きます。
- 設定するプロパティの値を指定します。
- probeNameチーム センター、WebView、および Workstation に表示する Node.js プローブ エージェントの名前を指定します。
- probeNameEnvKey環境変数にプローブ名の値を指定します。
- portNode.js コレクタ エージェント用のポート番号を指定します。デフォルト値: 5005
- logFilezログ ファイルの場所を指定します。パスが相対パスである場合は、<Node.js_Home>/ca_apm-nodejs-probe ディレクトリにログが作成されます。${probeName}は、自動命名を有効にします。複数のプローブが実行されている場合は、異なるプローブ名を持つ各プローブには、独自のログ ファイルがあります。${probeName}は、ログ ファイルの名前にのみ適用され、パスまたはフォルダ名には適用されません。デフォルト値:../logs/Probe-${probeName}.log
- logLevelログ レベル(debug、error、info、warn、disabled)を指定します。無効な値が使用された場合、ログ記録が完全に無効になります。ログ ファイルに書き込み権限がない場合、ログ ファイルは、コンソールに書き込まれます。ログ ファイルのパスは、参照用に常にコンソールに書き込まれます。作成可能なログ ファイルの最大数は 5 です。各ファイルの最大サイズは 5 MB です。ログ ファイルに記録される時間は、UTC 時間が補正された現地時間です。デフォルト値: info以下のプロパティ値は、Node.js プローブ エージェントが正常に動作するために必要です。これらのデフォルト値は変更しないでください。
- collectorAgent hostNode.js コレクタ エージェントのホスト名を指定します。デフォルト値:localhost
- 間隔メトリックを収集するための間隔をミリ秒単位で指定します。デフォルト値:15000
- configReloadInterval設定の変更をポーリングする間隔をミリ秒単位で指定します。デフォルト値:60000
- virtualStackPollPeriodポーリングの期間または間隔を指定します。デフォルト値:10000
- maxTrxMapSizeトランザクションを格納するために使用されるマップの最大サイズを指定します。デフォルト値:5000
- httpReqDecEnabled送信 HTTP 要求に対する特別な HTTP ヘッダの挿入を有効および無効にします。相関機能が動作するには、この値が true である必要があります。デフォルト値:True
- maxPingDelayNode.js プローブ エージェントと Node.js コレクタ エージェントの間でメッセージが交換されます。通信(キープアライブ)間の遅延期間を指定します。デフォルト値:15000
- ファイルを保存して閉じます。
- 管理対象アプリケーションを再起動します。
例: Node.js プローブ エージェントのログ記録の設定
ログ プロパティを編集して、Node.js プローブ エージェントのログ記録を設定できます。
以下の手順に従います。
- <Node.js_Home>/ca-apm-probe ディレクトリに移動します。
- テキスト エディタで
n ファイルを開きます。config.jso - 以下のプロパティを見つけて、プローブ ログの場所の相対パスまたはフル パスを指定します。"logFile": "../logs/Probe-<ProbeName>.log",例:"logFile": "../MyDirectory/Probe-<ProbeName>.log",
- 以下のプロパティを見つけて、次のいずれかの値を指定します: debug|error|info|warn|disabled"logLevel": "info"例:"logLevel": "warn"
- ファイルを保存して閉じます。
- 管理対象アプリケーションを再起動します。
Node.js コレクタ エージェントの設定
IntroscopeCollectorAgent.profile ファイルを編集して、Node.js コレクタ エージェントのプロパティを設定できます。たとえば、Transaction Tracer や ErrorDetector などを設定できます。
以下の手順に従います。
- <Node.js_Home>/CollectorAgent/core/config に移動します。
- テキスト エディタでIntroscopeCollectorAgent.profileファイルを開きます。
- ファイルの指示に従って、プロパティの値を指定します。
- ファイルを保存して閉じます。
- プロパティによって必要になる場合は、管理対象アプリケーションを再起動します。
例: Node.js コレクタ エージェントのログ記録の設定
Node.js コレクタ エージェントのログ レベルおよび出力場所の値を設定することができます。たとえば、Node.js コレクタ エージェント接続の失敗のメッセージをログで検索できます。さらに、接続の問題のトラブルシューティングに役立つようログ レベルを上げることができます。ログ レベルを上げると、監視対象アプリケーションのパフォーマンスに影響する可能性があります。トラブルシューティング目的の場合のみ、ログ レベルを上げてください。
接続メッセージの例を以下に示します。
10-17-2014 09:55:31 AM <error> httpd2-prefork:|05779-05779|:cmd error(111) making command connection to the collector on port 5005: Connection refused
以下の手順に従います。
- <Node.js_Home>/CollectorAgent/core/config に移動します。
- テキスト エディタでIntroscopeCollectorAgent.profileファイルを開きます。
- 以下のセクションに移動します。# Logging Configuration
- セクション内の手順に従って、log4j.logger.IntroscopeAgent プロパティの値を指定します。log4j.logger.IntroscopeAgent=INFO, console, logfileこのプロパティは、ログ レベルと出力場所の両方を制御します。
- ファイルを保存して閉じます。このプロパティへの変更はただちに有効となり、管理対象アプリケーションを再起動する必要はありません。
例:
- ログ記録レベルを引き上げるには、プロパティを以下のように設定します。log4j.logger.IntroscopeAgent=VERBOSE#com.wily.util.feedback.Log4JSeverityLevel, console, logfile
- 出力をコンソールのみに送信するには、プロパティを以下のように設定します。log4j.logger.IntroscopeAgent=INFO, console
- 出力をログ ファイルのみに送信するには、プロパティを以下のように設定します。log4j.logger.IntroscopeAgent=INFO, logfile
- エージェントのログを無効にするには、このプロパティから以下のようにオプションを削除します。log4j.logger.IntroscopeAgent=
ProbeBuilder ディレクティブを使用した Node.js 監視の設定
WebView およびチーム センターに表示されるメトリックは、ProbeBuilder ディレクティブ(PBD)の機能です。PBD では、アプリケーションと、アプリケーションの実行時アクティビティをインスツルメントします。Node.js 監視用に PBD を設定できます。
nodejs-typical.pbl
ファイルには、以下のファイル名が含まれます。ファイル名 | 説明 |
nodejs-toggles- typical .pbd | 後続の *.pbd ファイル内の他のディレクティブに従うことを決めるために TurnOn を切り替えるスイッチを提供します。このファイルには、以下のトレーサ フラグが含まれます。注: デフォルトでは、これらのトレーサ フラグはオンになっています。
|
nodejs-common.pbd | 一般的な Node.js の各種構成要素のサポートを実装するディレクティブを提供します。このファイルは Introscope デフォルト ファイルと共に使用します。 |
以下の手順に従います。
- <Node.js_Home>/CollectorAgent/core/config に移動します。
- テキスト エディタでnodejs-toggles-typical.pbdファイルを開きます。
- ファイルの指示に従って PBD を設定します。
- TurnOnディレクティブをコメント化またはコメント化を解除して、追跡対象の Node.js コンポーネントのセットを変更できます。たとえば、エージェントのオーバーヘッドを最小限に抑えるために、高深度追跡を無効にすることができます。この設定は、アプリケーション パフォーマンスの追跡や診断を行うコンポーネントの特定が不要な場合に行います。このプロパティをコメント化します。
#TurnOn: NodeClassDeepTracing - ファイルを保存して閉じます。
詳細:
Node.js コレクタ エージェントには、Node.js 用に APM を最適化するための Java プロパティのサブセットがあります。プロパティとトレーサ タイプの詳細については、以下のトピックを参照してください。