New Relic 属性 は、イベントやトランザクションのプロパティを決定する情報を含むキー・バリュー・ペアです。これらのキーバリューペアは、アプリケーションに対する洞察を深めたり、 がデータを照会する際にデータに注釈を付けたりするのに役立ちます 。また、 ユーザー情報を New Relic に自動的に転送することもできます。
デフォルト属性と カスタム 属性の両方が表示されます トランザクション追跡、分散追跡、およびエラー分析。 ダッシュボード の APM イベント と ブラウザ イベント。 これらの各宛先に送信される属性を正確にカスタマイズできます。
このドキュメントでは、Javaエージェントの属性について説明し、属性を有効または無効にする方法を詳細に説明しています。また、エージェントが デスティネーション のためにどの属性を含めるか、または除外するかを決定するために従うルールについても説明しています。
ヒント
これらの属性設定は、Javaエージェントのバージョン3.7.0以降に適用されます。それ以前のバージョンのエージェントを使用している場合は、 レガシー属性設定の更新 を参照してください。
Java特有の属性
デフォルトのAPM属性 に加えて、Javaエージェントは以下のソースから属性を収集します。
Web リクエストの応答ステータス コード。この属性のキーはhttp.statusCode
です。注: 8.0.0 より前のバージョンのエージェントでは、属性httpResponseCode
が使用されていました。
各デスティネーションのデフォルト設定は
- トランザクションのトレースEnabled
- エラー分析。有効
- APMのイベント有効
- ブラウザのイベント。使用不可
Web リクエストに存在する場合は、応答ステータス メッセージ。この属性のキーはhttp.statusText
です。注: 8.0.0 より前のバージョンのエージェントでは、属性httpResponseMessage
が使用されていました。
各デスティネーションのデフォルト設定は
- トランザクションのトレースEnabled
- エラー分析。有効
- APMのイベント有効
- ブラウザのイベント。使用不可
スレッドの名前。この属性のキーはjvm.thread_name
です。
各デスティネーションのデフォルト設定は
- トランザクションのトレースEnabled
- エラー分析。有効
- APMのイベント。使用不可
- ブラウザのイベント使用不可
ロックされたスレッドの名前。この属性のキーはjvm.lock_thread_name
です。
各デスティネーションのデフォルト設定は
- トランザクションのトレース。利用できません
- エラー分析。有効
- APMのイベントです。利用不可
- ブラウザのイベント使用不可
NewRelic.addCustomParameter(...) Java エージェント API の呼び出しによって追加される属性です。この属性のキーとなる名前は、このメソッドを呼び出す際に指定した内容によって異なります。
各デスティネーションのデフォルト設定は
トランザクションのトレースEnabled
エラー分析。有効
APMのイベント。使用不可
ブラウザのイベント。使用不可
重要
カスタム属性を作成する前に、New Relic の NRQL で使用される 予約語のリストを確認してください 。そうしないと、予期しない結果になる可能性があります。
NewRelic.getAgent().getTracedMethod().addCustomAttribute(...) JavaエージェントAPIの呼び出しによって追加される属性です。この属性のキー名は、メソッドの呼び出し時に指定した内容によって異なります。
これらの属性は、スパンイベントに追加されます。スパンイベントは、 分散型トレースUI で見つけることができますし、 クエリビルダー で直接検索することもできます。
重要
カスタム属性を作成する前に、NRQL で使用される New Relic の 予約語のリストを確認してください 。そうしないと、予期しない結果になる可能性があります。
JavaエージェントAPIのNoticeError()
呼び出しに追加された属性。この属性のキー名は、メソッドを呼び出すときに指定する内容によって異なります。
各デスティネーションのデフォルト設定は
- トランザクションのトレース。利用できません
- エラー分析。有効
- APMのイベントです。利用不可
- ブラウザのイベント使用不可
Java エージェントは、次の応答ヘッダーと要求ヘッダーを属性としてキャプチャできます。
HTTPリクエストヘッダを取得します。
request.headers.referer
request.headers.accept
request.headers.contentLength
request.headers.host
request.headers.userAgent
キャプチャされた応答ヘッダー:
response.headers.contentType
エージェントは他のリクエスト ヘッダーをキャプチャしません。
属性システムは、上記にリストされているもの以外のヘッダー値には適用されません。ここにリストされていない追加のリクエスト ヘッダーをキャプチャする場合は、 custom_request_headers構成オプションを使用して、エージェントがキャプチャするヘッダーを指定する必要があります。あるいは、 Java エージェント APIの
addCustomParameter()
メソッドを使用して、ヘッダーを自分で直接記録することもできます。各デスティネーションのデフォルト設定は
トランザクションのトレースEnabled
エラー分析。有効
APMのイベント有効
ブラウザのイベント。使用不可
Javaエージェントは、デフォルトでrequest.method
属性の一部としてリクエストメソッドGET、POST、およびPUTをキャプチャします。
トランザクションからのリクエストパラメータは、デフォルトではキャプチャされません。 addCustomParameter()
JavaエージェントAPIを使用して、リクエストパラメータをキャプチャします。
これらの属性のキーはrequest.parameters.*
です。機密情報の取得が懸念される場合は、次のオプションを使用できます。
attributes.include
でワイルドカードを使用することは避けてください。代わりに、キャプチャする各フィールドを明示的に指定してください。attributes.include
でワイルドカードを使用する場合は、attributes.exclude
を使用して機密フィールドを明示的に除外します。
ユーザー属性の収集
APMのJavaエージェントを使用すると、構成ファイルを編集することにより、ユーザー情報を自動的に収集できます。その後、カスタム属性を手動で作成しなくても、ユーザー情報に対してNRQLクエリを実行できます。この機能は、NewRelicのJavaエージェント3.10.0以降で使用できます。
重要
Java ユーザー属性は、高セキュリティ モードと互換性がありません。
Java エージェント 8.1.0 で パブリック API を介して enduser.id
ユーザー属性を収集するには以上の場合は、次のように呼び出します。
NewRelic.setUserId(String userId);
ユーザー ID を設定するコード スニペットの例を次に示します。
@Trace(dispatcher = true)public void run() { NewRelic.setUserId("example-user-id");}
Java エージェント 3.10.0 を使用したサーブレット インストルメンテーションを介してユーザー属性を収集するには以上:
newrelic.yml
を開きます。通常はnewrelic.jar
と同じディレクトリにあります。class_transformer
セクションで、com.newrelic.instrumentation.servlet-user
を編集してenabled
をtrue
に設定します。class_transformer:# This instrumentation reports the name of the user principal returned from# HttpServletRequest.getUserPrincipal() when servlets and filters are invoked.com.newrelic.instrumentation.servlet-user:enabled: trueWebサーバーを再起動します。
8.1.0 を 使用している場合Java エージェントのリリース以降では、 com.newrelic.instrumentation.servlet-user
を有効にするか、 パブリック API を 使用して数分待機することで、 enduser.id
属性をクエリできます。たとえば、次の NRQL クエリ を使用して、すべてのユーザーの一意の数を取得できます。
SELECT uniqueCount(enduser.id) FROM Transaction SINCE 1 day ago
または、 3.10.0 を 使用している場合Java エージェント以上のリリースで、 com.newrelic.instrumentation.servlet-user
有効になっている場合、数分以内に user
属性をクエリできます。
SELECT uniqueCount(user) FROM Transaction SINCE 1 day ago
どちらの場合も、エラーが報告された場合は、ユーザー属性を使用して 、特定のエラー グループで影響を受けるユーザーの数を確認できます。
属性の設定。有効にする、含める、除外する
JavaエージェントがNew Relicに報告する属性の種類、または特定の属性を設定することができます。これは、セキュリティ上の理由から、New Relic に報告してほしくない機密性の高い属性がある場合によく行われます。どのような設定が他の設定よりも優先されるかについては、 属性設定ルール を参照してください。
アトリビュートの設定オプション
行き先 | 設定オプション | デフォルト |
---|---|---|
すべて | トゥルー | |
トランザクショントレース | トゥルー | |
トランザクションセグメント | トゥルー | |
エラー解析 | トゥルー | |
APMイベント | トゥルー | |
ブラウザイベント | false | |
スパンイベント |
| トゥルー |
その他のリソース
- Java agent config file template をご覧ください。
- どのような設定が他の設定を上書きするかなど、アトリビュートの設定を管理する 規則を参照してください 。
行き先 | 設定オプション | デフォルト |
---|---|---|
すべて | (無し) | |
トランザクショントレース | (無し) | |
トランザクションセグメント | (無し) | |
エラー解析 | (無し) | |
APMイベント | (無し) | |
ブラウザイベント | (無し) | |
スパンイベント |
| (無し) |
その他のリソース
- Java agent config file template をご覧ください。
- どのような設定が他の設定を上書きするかなど、アトリビュートの設定を管理する 規則を参照してください 。
行き先 | 設定オプション | デフォルト |
---|---|---|
すべて | (無し) | |
トランザクショントレース | (無し) | |
トランザクションセグメント | (無し) | |
エラー解析 | (無し) | |
APMイベント | (無し) | |
ブラウザイベント | (無し) | |
スパンイベント | (無し) |
その他のリソース
- Java agent config file template をご覧ください。
- どのような設定が他の設定を上書きするかなど、アトリビュートの設定を管理する 規則を参照してください 。
アトリビュートルール
Javaエージェントは、これらのルールに従って、デスティネーションに含める属性や除外する属性を決定します。
メインのattributes.enabled
プロパティをfalse
に設定すると、エージェントは属性をまったく報告しません。
エージェントの設定。
attributes.enabled: false
attributes.include: request.parameters.*
error_collector.attributes.enabled: true
入力キー。
foo
bar
request.parameters.foo
request.parameters.bar
エージェントの出力です。
トランザクションの痕跡。属性なし
エラーアナリティクス。属性がありません
APMのイベントです。属性なし
ブラウザのイベントです。属性なし
宛先の有効をfalse
に設定すると、エージェントは包含/除外設定を無視し、その宛先の属性を報告しません。
エージェントの設定。
transaction_tracer.attributes.enabled: false
attributes.include: one, two*
transaction_tracer.attributes.include: three, four
入力キー。
one
two
three
four
エージェントの出力です。
トランザクションの痕跡。属性なし
エラー分析:
one
、two
APMイベント:
one
、two
ブラウザのイベントです。属性なし
.exclude
プロパティは.include
プロパティを上書きします。
エージェントの設定。
attributes.enabled: true
attributes.include: foo, myCustomAtt
attributes.exclude: password, myCustomAtt
入力キー。
foo
myCustomAtt
password
エージェントの出力です。
トランザクショントレース:
foo
エラー分析:
foo
APMイベント:
foo
ブラウザイベント:
foo
複数のincludeまたはexclude属性が同じキーに影響を与える場合は、最も具体的な設定が優先されます。
エージェントの設定。
attributes.enabled: true
attributes.include: foo, myCustomAtt
attributes.exclude: password, myCustomAtt
browser_monitoring.attributes.enabled: true
入力キー。
food
food.bread
food.fruit.banana
food.fruit.apple
エージェントの出力です。
トランザクショントレース:
food.fruit.apple
エラー分析:
food.fruit.banana
、food.fruit.apple
APMイベント:
food.fruit.banana
、food.fruit.apple
ブラウザイベント:
food.fruit.banana
、food.fruit.apple
.include
および.exclude
プロパティで指定されたキーでは、大文字と小文字が区別されます。
エージェントの設定。
attributes.enabled: true
attributes.exclude: password, PaSsWoRd
入力キー。
password
Password
PASSWORD
PaSsWoRd
PassWORD
エージェントの出力です。
トランザクショントレース:
Password
、PASSWORD
、PassWORD
エラー分析:
Password
、PASSWORD
、PassWORD
APMイベント:
Password
、PASSWORD
、PassWORD
ブラウザイベント:
Password
、PASSWORD
、PassWORD
キーの末尾にあるアスタリスク*
をワイルドカードとして使用できます。これは、同じプレフィックスを持つ属性のセットと一致します。
エージェントの設定。
attributes.enabled: true
attributes.include: custom*
attributes.exclude: request.parameters.*
入力キー。
custom
custom.key1
custom.key2
request.parameters.
request.parameters.foo
request.parameters.bar
エージェントの出力です。
トランザクショントレース:
custom
、custom.key1
、custom.key2
エラー分析:
custom
、custom.key1
、custom.key2
APMイベント:
custom
、custom.key1
、custom.key2
ブラウザイベント:
custom
、custom.key1
、custom.key2