このページでは、Node.js エージェントの構成に使用できる設定について説明します。

いくつかの設定に環境変数を使用することもできます。設定を適用するには、モニタリング対象アプリケーションの Node.js エージェントの require ステートメントにそれらを追加します。

Node.js エージェントはバージョン 21.9 以降、プロキシをサポートしなくなりました。

一般設定

次の表は、アプリケーションコードに挿入する require ステートメントにある設定の完全なリストです。これらのすべての設定が必要なわけではありません。

プロパティ名説明
controllerHostNameコントローラの IP アドレスまたはホスト名。SaaS の場合は、AppDynamics からの Welcome メールにこの URL が記載。オンプレミスの場合は、コントローラのインストール時にこれらを設定。
controllerPort

エージェントがコントローラに接続するポート。オンプレミスコントローラの場合は 8090、SaaS コントローラの場合は 443。 

controllerSslEnabledSSL 経由でコントローラに接続する場合はこのプロパティを true に設定。
accountNameこのエージェントがレポートするコントローラのアカウント名。
accountAccessKeyコントローラのアカウントアクセスキー。
applicationNameAppDynamicsコンソールの中のアプリケーション全体を示す名前。
tierNameフローマップで Node.js アプリケーションまたはサービスを示す名前。
nodeNameこのエージェントにより監視されるNode.jsプロセスを示す名前。「Node Names」を参照してください。
noNodeNameSuffixオプション。エージェントが -0、-1、-2 などのサフィックスをノード名に追加しないようにする場合は、true に設定。「Node Names」を参照してください。
proxyHostproxyPortプロキシサーバ経由でコントローラにデータをルーティングする場合は、これらのオプションを設定。proxyHost はプロキシサーバのホスト名または IP アドレス、proxyPort は、使用しているプロキシサーバーの HTTP または HTTPS ポートです。ホストを設定した場合、ポートも設定する必要があります。
proxyUserproxyPasswordFileプロキシサーバにログイン情報が必要な場合は、プロキシのユーザ名とパスワードファイルを構成。
proxyJava プロキシバージョンの Node.js エージェントを使用する場合は、このプロパティを true に設定。
alwaysAddEumMetadataInHttpHeadersリクエストがクロスオリジンであってもビジネストランザクションのメタデータを XHR ヘッダーと cookie に書き込むように Node.js エージェントを構成する場合は、このプロパティを true に設定します。「アプリケーションエージェントのノードプロパティ参照資料」の同等の設定 always-add-eum-metadata-in-http-headers に関する説明を参照してください。 
btEntryPointDelayDisabledtrue | false:オプション。デフォルトは false です。このプロパティを true に設定すると、ビジネストランザクションの起動を高速化できますが、分散トランザクションでのドリルダウンに悪影響を与える可能性があります。
debugエージェントのデバッグレベルのログを有効にするには、このプロパティを true に設定。デフォルトは false。
loggingエージェントのログ記録に関連する場所、レベル、およびその他の設定。詳細については、Node.jsエージェントログを参照してください。
maxProcessSnapshotsPerPeriodオンプレミスの場合、HTTPのデフォルトは8090、HTTPSのデフォルトは8181です。デフォルトは 2。processSnapshotCountResetPeriodSeconds の秒数で許可される自動プロセススナップショットの数。 
processSnapshotCountResetPeriodSeconds(省略可)デフォルトは 60 です。自動プロセス スナップショット カウントが 0 にリセットされる頻度(秒単位)。
autoSnapshotDurationSeconds

(省略可)デフォルトは 10 です。自動トリガーされるプロセススナップショットの長さ(秒単位)。

proxyAutolaunchDisabled

true | false:オプション。デフォルトは false です。このエージェントのプロキシを手動で起動する必要がある場合は、このプロパティを true に設定。詳細については、Node.jsのプロキシを手動で起動を参照してください。 

proxyCtrlDirエージェントがAppDynamicsノードを起動するために使用するドメイン制御ソケットを含むディレクトリ用のディレクトリパス。オプション。エージェントが設定。マルチテナントプロキシを設定する場合に、手動で設定する。詳細については、Node.js エージェント間でのプロキシの共有を参照してください。
rootTmpDir

エージェントのファイルを保存するディレクトリのルート用ディレクトリパス。オプション。デフォルトは /tmp/appds

tmpDir監視対象ノード用ルートディレクトリのサブディレクトリのディレクトリパス。オプション。デフォルトは、インストゥルメント化されたノードのコントローラ情報のハッシュ。
reuseNode

ノード名を再利用できるようにするには、このプロパティを true に設定します。このプロパティは、寿命が短いノードが多数ある環境のモニタリングに役立ちます。デフォルトは false。

注:Node.js プロセスの SIGTERM(15)シャットダウンは、reuseNode 機能の要件です。 

reuseNodePrefixこのプロパティを、reuseNode が true に設定されているときにノード名のプレフィックスとなる文字列に設定。コントローラはこのプレフィックスを使用して、ノード名を動的に生成します。
certificateFile.pem SSL 証明書を含むディレクトリのディレクトリパス。
uniqueHostId一意のホスト ID は、ホストを識別する任意の値に設定できます。値を指定しない場合、エージェントによってホスト ID が生成されます。この設定は、プロキシなしバージョンの Node.js エージェントにのみ使用可能です。

分析の設定

デフォルトのトランザクションデータを分析エージェントに送信するように Node.js エージェントを構成できます。

分析のホストとポートの設定を次の形式で追加する場合、ホストとポート番号を指定します。分析エージェントは、Node.js エージェントと同じか、または異なるホストおよびポート番号について報告できます。

analytics: {
    host: <analyticsHostName>,
    port: <analyticsPortNumber>,
    ssl: <true / false>  
}
CODE

分析の設定では、サポートされているデータ型で変数の値を指定してください。

変数サポートされているデータ型
host文字列
port番号
sslブール型

分析データ制限を設定するには、「Node.js、PHP、および Python アプリケーション用のトランザクション分析の設定」を参照してください。

Windows 設定

Windows で、Node.js エージェントは追加のポートを 3 つ要求します。

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

詳細については、Windows での Node.js エージェントの実行を参照してください。

機密データのフィルタ

アプリケーションにコントローラに表示すべきではない機密データが含まれている場合は、Node.js エージェントの require ステートメントに次のデータフィルタを適用できます。

機密データフィルタを追加する

機密データフィルタを有効にすると、コントローラは一致する環境変数またはシステムプロパティの値に対してアスタリスクを表示します。

dataFilters: [{
   "appliesTo": "http-headers",
   "matchPattern": "host"
}],
CODE

環境変数フィルタ

デフォルトでは、Node.js エージェントは、大文字と小文字を区別しない部分文字列「password|key」を含む環境変数/システムプロパティを使用して機密データフィルタを有効にします。

dataFilters: [{
   "appliesTo": "env-vars",
   "matchPattern": "password|key"
}],
CODE

機密 URL フィルタ

機密 URL フィルタを使用して、Transaction Snapshot詳細の URL から機密情報を難読化するようにエージェントを構成できます。

urlFilters: [{
   "delimiter": "/",
   "segment": "1",
   "matchPattern": "a",
   "paramPattern": "bar"
}],
CODE

機密 URL フィルタは、1 つのセグメントで matchPattern をチェックします追加のセグメントを確認するには、追加の JSON 配列を追加します。

フィルタは、/aa/bb/cc***/bb/cc の形式で要求を処理します。 

matchpattern/parampattern は標準の正規表現です。

プロパティ名説明
urlFilters
セグメントにルールを追加する場合は、オブジェクトをさらに追加できる配列。
delimiter
必要な文字を URL セグメントエンドポイントとして指定します。エージェントは各区切り文字インスタンスでURLを接続してセグメントを作成します。
segment
少なくとも 1 つの数字を昇順で指定する必要があります(3,52,6 など)。ワイルドカード(*)は使用できません。

URL セグメントフィルタ

matchpattern 正規表現を使用して、Node.js エージェントは指定されたセグメントをフィルタ処理するかどうかを決定します。

複数のルールがある場合は、一般的なルールの前に具体的なルールをリストします。配列にリストされているルールは、順序に基づいて評価されます。  

ルール A:

{
 'delimiter': '/',
 'matchPattern': '[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}\/.{50,}',
 'segment': '3,5'
}
CODE

ルール B:

{
 'delimiter': '/',
 'matchPattern': '[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}',
 'segment': '3'
}
CODE

この例では、最初のルール A は 3 番目と 5 番目のセグメントをマスクするため、ルール B の前にルール A をリストする必要があります。

ルール B がルール A の前にリストされて評価された場合、3 番目のセグメントはマスクされますが、5 番目のセグメントはマスクされず、機密情報が漏洩する可能性があります。 

URL パラメータフィルタ

paramPattern 正規表現を使用して、Node.js エージェントは指定されたクエリパラメータをフィルタ処理するかどうかを決定します。 

すべての URL パラメータをマスクする必要がある場合は、さらに指示を配列に追加できます。

{ "delimiter": "/", "matchPattern": "", "segment": "99", "paramPattern": ".+"}
CODE

Node.js エージェントは、すべての URL パラメータをフィルタで除外します。 

機密メッセージフィルタ

機密メッセージフィルタを使用して、エージェントがログメッセージから収集したテキストメッセージ、または例外からの詳細メッセージに含まれる機密情報を難読化するようにエージェントを構成できます。

messageFilters: [{
   "messageType": 
"throwable",
   "matchPattern": 
"Error.*MySQL.",
   "redactionRegex": "SQL"
}]
CODE

環境変数

requireステートメントで必要な設定を指定していない場合、エージェントは以下の環境設定の値を使用します(すでにその変数が設定済みの場合)。両方が設定されている場合、require ステートメントの値が環境変数より優先されます。

環境変数へのマップ
APPDYNAMICS_CONTROLLER_HOST_NAME controllerHostName
APPDYNAMICS_CONTROLLER_PORTcontrollerPort
APPDYNAMICS_CONTROLLER_SSL_ENABLEDcontrollerSslEnabled
APPDYNAMICS_AGENT_ACCOUNT_NAMEaccountName
APPDYNAMICS_LOGGER_OUTPUT_TYPEユーザーは、値を console に設定することで、stdout にログをストリーミングできます。

APPDYNAMICS_LOGGER_LEVEL

エージェントのログレベルを設定できます。

可能な値は FATALERRORWARNINFODEBUG、および TRACE です。

APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEYaccountAccessKey
APPDYNAMICS_AGENT_APPLICATION_NAMEapplicationName
APPDYNAMICS_AGENT_TIER_NAMEtierName
APPDYNAMICS_AGENT_NODE_NAMEnodeName
APPDYNAMICS_AGENT_UNIQUE_HOST_ID-
APPDYNAMICS_ANALYTICS_HOST_NAMEhost(Analytics 設定内)
APPDYNAMICS_ANALYTICS_PORTport(Analytics 設定内)
APPDYNAMICS_ANALYTICS_SSL_ENABLEDssl(Analytics 設定内)
UNIQUE_HOST_ID

uniqueHostId

一意のホスト ID は、ホストを識別する任意の値に設定できます。値を指定しない場合、エージェントによってホスト ID が生成されます。

この環境変数はデフォルトで使用できます(Java プロキシモードでは使用できません)。