新機能
includeおよびexcludeルールによるエージェント属性のフィルタリングを追加しました。
エージェント属性は、きめ細かい包含および除外ルールを使用して制御できるようになりました。以下で説明するこれらのルールは、
capture_paramsおよびignored_paramsを置き換えます。attributes.excludeが明示的に設定されていない限り、ignored_paramsにリストされているすべての属性は内部的にattributes.excludeに移行されます。ルート設定と各宛先に、3つの新しい設定プロパティが追加されました(宛先については後述します)。これらの新しい設定は次のとおりです:
attributes.enabled- 宛先に対する属性の収集を有効にします。attributes.include- 含める属性またはワイルドカードルールのリスト。attributes.exclude- 除外する属性またはワイルドカードルールのリスト。
インクルードルールとエクスクルードルールは、完全一致ルール(たとえば
request.headers.contentLength)、または属性キーの先頭のみに一致するワイルドカードルール(たとえばrequest.headers.*は任意のリクエストヘッダーに一致します)にすることができます。これらのルールは、設定のルートでグローバルに、または特定の宛先に対して指定できます。これらの宛先は次のとおりです:
transaction_tracer- トランザクショントレース属性を制御します。transaction_events- トランザクションイベント属性を制御します。error_collector- エラーイベントの属性を制御します。browser_monitoring- ブラウザ/RUMトランザクション属性を制御します。
addCustomParameterをaddCustomAttributeに名前変更しました。addCustomParameterメソッドは非推奨となり、エージェントの将来のリリースで削除される予定です。addCustomAttributeメソッドは、そのドロップイン代替手段です。エージェント属性のフィルタリングにキャッシュを追加しました。
属性ルールの適用によるオーバーヘッドを最小限に抑えるため、エージェントは特定の属性キーと宛先のフィルタリング結果をキャッシュします。キャッシュはデフォルトで1,000個の宛先とキーのペアに制限されていますが、
attributes.filter_cache_limitで設定できます。このキャッシュにより、キャッシュのヒットに対するフィルタールールの適用が10倍向上します。設定オプションに
allow_all_headersを追加し、httpの計装を更新しました。trueに設定すると、エージェントはすべてのリクエストヘッダーを収集します。この収集は、エージェント属性の包含および除外ルールに従います。デフォルトの除外ルールセットはnewrelic.jsで提供されています。これらのルールは、すべてのCookieと認証ヘッダーを除外します。セグメントをopaqueとしてフラグ付けできるようになり、内部セグメントがトランザクショントレースから除外されるようになりました。
改良点
監視オーバーヘッドを抑えるため、エージェント属性に制限を追加しました。
属性のキーと値は、それぞれ255バイトに制限されています。255バイトを超えるキーは破棄され、警告メッセージがログに記録されます。255バイトを超える値は、マルチバイトUTF-8エンコーディングを考慮して255バイトに切り捨てられます。カスタムアトリビュートは、トランザクションごとに64個に制限されています。64番目を超える属性は、暗黙的に無視されます。
コレクター接続失敗のログメッセージにエラーを追加しました。
request_uri属性の名前をrequest.uriに変更しました。これにより、属性名が他のすべてのリクエスト属性と一致するようになります。
https-proxy-agentの依存関係を^0.3.5から^0.3.6に更新しました。インストゥルメントされたモジュールのほとんどのマイナーバージョンが期待どおりに動作することを確認するため、該当する場合はバージョン管理されたテストを更新しました。
Mongoドライバーのv1ラインのテストが停止する問題を修正しました。
Hapi 404トランザクションが正しく名前付けされたメトリクスになることを検証するテストを追加しました。
Hapiの計装は正しく機能していましたが、この特定のケースに対するテストがありませんでした。
バグ修正
crypto.DEFAULT_ENCODINGが変更されたときに、エージェントがクラッシュすることはなくなります。以前は、エージェントは
hash.digest()の結果がBufferのインスタンスであると想定していました。crypto.DEFAULT_ENCODINGが変更されると、hash.digest()は文字列を返し、エージェントはクラッシュしていました。エージェントは、処理を進める前に値がBufferインスタンスであることを確認するようになりました。process.config.variables.node_prefixが欠落している場合のエラーを修正しました。process.config.variables.node_prefixがfalseyの場合(これはelectronを使用している場合に発生する可能性があり、この問題https://support.newrelic.com/s/hubtopic/aAX8W0000008ZMO/new-relic-on-electron-nodejsにつながります)lib/environment.jsのgetGlobalPackages関数は、エラーになるべきではないときにエラーを返します。修正を提供してくれたJarred Filmer(@BrighTide)に感謝します!