New Relicアカウントを作成し(永久無料)、.NETエージェントをインストールすると、環境に合わせて.NETエージェントを設定できるようになります。
設定の概要
APMエージェントの設定オプションを使用すると、エージェントの動作に関するいくつかの側面を制御できます。これらの設定オプションの一部は基本的なインストールプロセス(ライセンスキーやアプリ名の設定など)の一部ですが、ほとんどはログレベルの設定、プロキシホストアクセスの設定、特定のプロパティの除外、ディストリビューティッド(分散)トレーシングの有効化など、より高度な設定です。
.NETエージェントは、インストールプロセスの一部として生成されるnewrelic.configファイルから設定を取得します。デフォルトではグローバルファイルnewrelic.configのみが作成されますが、マルチアプリシステムをより細かく制御するために、アプリローカルファイルnewrelic.configを作成することもできます。設定オプションを設定するその他の方法には、環境変数を使用する方法や、UIからサーバーサイドコンフィグレーションを設定する方法などがあります。各種の設定オプションと、設定が適用される優先順位については、設定の優先順位を参照してください。
特に明記されていない限り、.NETフレームワークと.NET Coreの両方のサポートは同じ設定オプションを使用し、同じAPM機能を持ちます。
設定ファイルを変更し、その形式が正しいことを検証したい場合は、任意のXSDバリデーターを使用してXSDファイル(たとえば、Windowsの場合はC:\ProgramData\New Relic\.NET Agent\newrelic.xsd)と照合できます。
重要
For IISnewrelic.configまたはapp.configファイルを変更した後、管理者権限のコマンドプロンプトからIISRESETを実行します。ログレベルの調整にはリセットは必要ありません。
メソッドと優先順位レベルを設定する
インストール時に、.NETエージェントの設定ファイル(newrelic.config)はすべての監視対象アプリケーションに適用されますが、他の方法でエージェントを設定することもできます。各種の設定オプションの優先順位を示す図を以下に示します。

この図は、.NETエージェントの各種設定方法の優先順位を示しています。
図に示されている設定方法の詳細と、それぞれの優先順位を以下に示します。
.NET configuration | Details and precedence |
|---|---|
| これらのファイルで設定された構成設定が最も優先されます。 エージェントがローカルまたはグローバル
|
環境変数 | 2番目に高い優先順位。これらについての詳細は、.NET環境変数を参照してください。 |
サーバーサイドコンフィグレーション | 3番目に高い優先順位。利用できるサーバーサイドコンフィグレーションの設定数には限りがあります。他の設定は他の設定ソースから取得されます。 |
アプリローカル | 4番目に高い優先順位。マルチアプリシステムでは、アプリローカルファイル エージェントは、以下のディレクトリにあるアプリローカル設定ファイルをこの順序で検索します。
|
デフォルト(グローバル) | デフォルトのソースであり、優先順位は最も低くなります。他の設定ファイルが存在しない場合、ホスト上のすべてのアプリケーションを設定します。グローバル設定ファイルは、New Relicエージェントのホームディレクトリにあります。 |
必須の環境変数
New Relicの.NET エージェントは、環境変数を利用して、.NET共通言語ランタイム(CLR)にNew Relicプロセスに接続するように指示します。一部の.NET エージェントインストールプロシージャ(MSIインストーラなど)では、これらの変数が自動的に設定されます。一部の手順では、手動で設定する必要があります。
注意
セキュリティ上の推奨事項:ユーザーがシステム環境変数を設定できる内容を考慮する必要があります。アプリケーションが実行されるアカウントを保護し、ユーザー環境変数がシステム環境変数を上書きしないようにする必要があります。
システムが以前に監視サービス(New Relic以外)を使用していた場合、New Relicエージェントをインストールして使用しようとすると「プロファイラーの競合」が発生する可能性があります。詳細はこちら:
具体的なインストール手順については、.NETエージェントのインストールに関するドキュメントを参照してください。
任意の環境変数
New Relicの.NETエージェントの一部の設定オプションは、設定ファイルで設定する代わりに、環境変数で設定できます。以下は、.NETエージェントによって認識される環境変数のリストと値の例です。
NEW_RELIC_LICENSE_KEY=YOUR_LICENSE_KEYNEW_RELIC_APP_NAME=Descriptive NameMAX_TRANSACTION_SAMPLES_STORED=500MAX_EVENT_SAMPLES_STORED=500NEW_RELIC_DISTRIBUTED_TRACING_ENABLED=trueNEW_RELIC_SPAN_EVENTS_ENABLED=falseNEW_RELIC_SPAN_EVENTS_MAX_SAMPLES_STORED=2000NEW_RELIC_INFINITE_TRACING_TRACE_OBSERVER_HOST=myhost.infinitetracing.comNEW_RELIC_LABELS="foo:bar;zip:zap"NEW_RELIC_PROCESS_HOST_DISPLAY_NAME=Custom NameNEW_RELIC_HOST=gov-collector.newrelic.comNEW_RELIC_PROXY_HOST=hostnameNEW_RELIC_PROXY_URI_PATH=path/to/something.aspxNEW_RELIC_PROXY_PORT=5000NEW_RELIC_PROXY_USER=YOUR_USER_NAMENEW_RELIC_PROXY_PASS=YOUR_PROXY_PASSWORDNEW_RELIC_PROXY_DOMAIN=mydomain.comNEW_RELIC_PROXY_PASS_OBFUSCATED=YOUR_OBFUSCATED_PROXY_PASSWORDNEW_RELIC_CONFIG_OBSCURING_KEY=YOUR_OBSCURING_KEYNEW_RELIC_SEND_DATA_ON_EXIT=trueNEW_RELIC_SEND_DATA_ON_EXIT_THRESHOLD_MS=2000NEW_RELIC_HIGH_SECURITY=trueNEW_RELIC_DISABLE_SAMPLERS=trueNEW_RELIC_LOG=MyApp.logNEW_RELIC_LOG_ENABLED=trueNEWRELIC_LOG_LEVEL=infoNEW_RELIC_LOG_CONSOLE=trueNEWRELIC_PROFILER_LOG_DIRECTORY=path\to\a\directory # not configurable via config fileNEWRELIC_LOG_DIRECTORY=path\to\a\directory # Insert a directory where you want to put the agent and profiler logs. You can't set this directory for both agent and profiler logs in the configuration file.NEW_RELIC_LOG_ROLLING_STRATEGY=dayNEW_RELIC_LOG_MAX_FILE_SIZE_MB=100NEW_RELIC_LOG_MAX_FILES=2NEW_RELIC_ERROR_COLLECTOR_IGNORE_ERROR_CODES=401, 403.18NEW_RELIC_ERROR_COLLECTOR_EXPECTED_ERROR_CODES=401, 501-503NEW_RELIC_APPLICATION_LOGGING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_METRICS_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_CONTEXT_DATA_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_CONTEXT_DATA_INCLUDE="myCustomAttribute1, myOtherCustomAttribute*"NEW_RELIC_APPLICATION_LOGGING_FORWARDING_CONTEXT_DATA_EXCLUDE="myCustomAttribute2, myOtherCustomAttributeMoreSpecificName"NEW_RELIC_APPLICATION_LOGGING_FORWARDING_MAX_SAMPLES_STORED=10000NEW_RELIC_APPLICATION_LOGGING_FORWARDING_LOG_LEVEL_DENYLIST="debug, warn"NEW_RELIC_APPLICATION_LOGGING_LOCAL_DECORATING_ENABLED=trueNEW_RELIC_ALLOW_ALL_HEADERS=trueNEW_RELIC_ATTRIBUTES_ENABLED=trueNEW_RELIC_ATTRIBUTES_INCLUDE=request.headers.*,foo.barNEW_RELIC_ATTRIBUTES_EXCLUDE=request.headers.cookie,request.headers.authorizationNEW_RELIC_UTILIZATION_DETECT_AWS=trueNEW_RELIC_UTILIZATION_DETECT_AZURE=trueNEW_RELIC_UTILIZATION_DETECT_GCP=trueNEW_RELIC_UTILIZATION_DETECT_PCF=trueNEW_RELIC_UTILIZATION_DETECT_DOCKER=trueNEW_RELIC_UTILIZATION_DETECT_KUBERNETES=trueNEW_RELIC_FORCE_NEW_TRANSACTION_ON_NEW_THREAD=trueNEW_RELIC_CODE_LEVEL_METRICS_ENABLED=trueNEW_RELIC_AI_MONITORING_ENABLED=trueNEW_RELIC_AI_MONITORING_RECORD_CONTENT_ENABLED=trueNEW_RELIC_CLOUD_AWS_ACCOUNT_ID=123456789012New Relic CodeStreamを使用してIDEからパフォーマンスを監視する場合は、リポジトリをサービスに関連付け、ビルドSHAまたはリリースタグをエラーに関連付ける必要があります。
エラーインボックスの設定
次のタグのいずれかを設定すると、エラーが発生しているソフトウェアのバージョンを特定するのに役立ちます。
NEW_RELIC_METADATA_SERVICE_VERSIONデプロイされているコードのバージョン(多くの場合、1.2.3などのセマンティックバージョン)を含むイベントデータにtags.service.versionが作成されますが、常にそうとは限りません。NEW_RELIC_METADATA_RELEASE_TAGリリースタグを含むイベントデータにtags.releaseTagを作成します(v0.1.209またはリリース-209など)。NEW_RELIC_METADATA_COMMITコミットSHAを含むイベントデータに対してtags.commitを作成します。SHA全体、または最初の7文字(例:734713b)のみを使用することもできます。
エラーインボックスの今後のリリースでは、ソフトウェアのどのバージョンでエラーが発生しているかを自動追跡します。どのバージョンデータもCodeStreamに表示されます。
セットアップオプション、newrelic.config
これらのオプションを使用して、newrelic.configファイル経由でエージェントをセットアップおよび設定します。.NETエージェントは、次のカテゴリのセットアップオプションをサポートしています。
設定項目
設定ドキュメントのルート項目はconfiguration項目です。
<configuration xmlns="urn:newrelic-config" agentEnabled="true" maxStackTraceLines="50">configuration項目は、以下の属性をサポートしています。
サービス項目
configuration項目の最初の子項目はservice項目です。サービス項目では、エージェントとNew Relicサービスとの接続を設定します。
<service licenseKey="YOUR_LICENSE_KEY" sendEnvironmentInfo="true" syncStartup="false" sendDataOnExit="false" sendDataOnExitThreshold="60000" autoStart="true"/>service項目は、以下の属性をサポートしています。
難読化キー項目
obscuringKey項目は、service項目のオプションの子項目です。.NETエージェントは、この値を使用して、サポートされている設定値の難読化を解除します。例えば、難読化されたプロキシパスワードを指定した場合、このキーを使用して難読化が解除されます。
<service licenseKey="YOUR_LICENSE_KEY"> <obscuringKey>OBSCURING_KEY</obscuringKey></service>難読化キーは、環境変数NEW_RELIC_CONFIG_OBSCURING_KEYを設定することによっても設定できます。
注意
セキュリティ上の推奨事項:難読化キーを難読化された値として同じ設定ファイルに配置すると、セキュリティ上のリスクが生じる可能性があります。難読化キーと難読化されたプロキシパスワードを環境変数に格納し、環境内での環境変数へのアクセスを制限することを検討してください。
プロキシ項目
proxy項目は、service項目のオプションの子項目です。proxy項目は、エージェントがプロキシ経由でNew Relicバックエンドサービスと通信するときに使用されます。
<service licenseKey="YOUR_LICENSE_KEY"> <proxy host="hostname" port="PROXY_PORT" uriPath="path/to/something.aspx" domain="mydomain.com" user="PROXY_USERNAME" password="PROXY_PASSWORD" passwordObfuscated="OBFUSCATED_PROXY_PASSWORD"/></service>proxy項目は、以下の属性をサポートしています。
ログ項目
log項目は、configuration項目の子項目です。log項目はNew Relicのログ設定を行います。エージェントは、アプリケーションのログとは別にログ情報を保管するために、独自のログファイルを生成します。
<log enabled="true" level="info" auditLog="false" console="false" directory="PATH\TO\LOG\DIRECTORY" fileName="FILENAME.log" />log項目は、以下の属性をサポートしています。
アプリケーション項目(必須)
application項目は、configuration項目の子項目です。この必須項目は、アプリケーション名を定義し、サンプリングを有効または無効にします。
データ伝送項目
dataTransmission項目は、configuration項目の子項目です。この項目は、New Relicへのデータ送信方法に影響を与え、特定のデータ送信要件がある場合に使用できます。
<dataTransmission putForDataSend="false" compressedContentEncoding="deflate"/>dataTransmission項目は、以下の属性をサポートしています。
ホスト名
APM UIのデフォルトのホスト名ラベルが役に立たない場合は、New Relic UIでその名前に表示名を追加できます。アプリケーションプロセスが再起動され、.NETエージェントが再びレポートすると、表示名がServersドロップダウンリストに表示されます。このホスト名設定は、アプリケーションのSummaryページのホスト一覧には影響しません。
表示名を設定するには、以下のいずれかのオプションを選択してください。環境変数は設定ファイルの値よりも優先されます。次に、アプリケーションを再起動して、New Relic UIで変更を確認します。
クラウドプラットフォームの利用
utilization設定項目は、エージェントが利用状況情報を収集し、それをNew Relicサービスに送信して価格を決定する方法を制御します。エージェントは、Amazon Web Services(AWS)EC2インスタンス、Dockerコンテナ、Microsoft Azure、Google Cloud Platform、Pivotal Cloud Foundry、Kubernetesから情報を収集できます。
<configuration . . . > <utilization detectAws="true" detectAzure="true" detectGcp="true" detectPcf="true" detectDocker="true" detectKubernetes="true" /></configuration>utilization項目は、以下の属性をサポートしています。
インストゥルメンテーションのオプション
これらのオプションを使用して、アプリケーションと環境のどの要素を計装するかを設定できます。New Relic for .NETは、以下のカテゴリの計装オプションをサポートしています。
計装項目
instrumentation項目は、configuration項目の子項目です。デフォルトでは、.NET エージェントはIIS ASPワーカープロセスとMicrosoft Azure Webおよびワーカーロールを計装します。他のプロセスを計装するには、カスタムアプリケーションの計装を参照してください。
ルール項目(計装)
重要
この機能は、.NETエージェント10.21.0以降で利用できます。
rules項目は、instrumentation項目の子項目です。rules項目は、任意の数のignore子項目をサポートします。これにより、指定されたアセンブリで定義されたメソッドを計装しないようにプロファイラーに指示できます。他のアセンブリで定義されたメソッドは引き続き計装されます。
<instrumentation> <rules> <ignore assemblyName="NameOfAssemblyToIgnore" /> </rules></instrumentation>ignoreルールを使用すると、クラス名を任意で定義できます。次の例では、アセンブリMyAssembly内のMyNamespace.MyClassで定義されているメソッドのみが無視されます。プロファイラーは、そのアセンブリ内や他のアセンブリ内の他のクラスのメソッドを無視しません。
<instrumentation> <rules> <ignore assemblyName="MyAssembly" className="MyNamespace.MyClass" /> </rules></instrumentation>無視ルールは複数指定できます。次の例では、Confluent KafkaとStackExchange Redis計装の両方を無効にします。
<instrumentation> <rules> <ignore assemblyName="Confluent.Kafka" /> <ignore assemblyName="StackExchange.Redis" /> </rules></instrumentation>カスタムインストゥルメンテーションは、rules項目を介して無視できないことに注意してください。
アプリケーション項目(計装)
applications項目は、instrumentation項目の子項目です。applications項目は、どの非Webアプリを計装するかを指定するapplication子項目をサポートします。application項目にはname属性が含まれています。さらに、エージェントバージョン10.48.0以降では、任意のinclude属性(デフォルト値:true)が追加されました。エージェントがそのプロセスの計装を防ぐには、このプロパティを「false」に設定します。
重要
これは、configuration項目の子項目であるapplication(設定)項目とは異なります。
<instrumentation> <applications> <application name="MyService1.exe" /> <application name="MyService2.exe" /> <application name="MyService3.exe" include="false" /> </applications></instrumentation>または、エージェントバージョン10.48.0以降では、アプリケーションの環境変数でNEW_RELIC_INCLUDED_APPLICATION_NAMESやNEW_RELIC_EXCLUDED_APPLICATION_NAMESを設定してください。
NEW_RELIC_INCLUDED_APPLICATION_NAMES="MyService1.exe,MyService2.exe"NEW_RELIC_EXCLUDED_APPLICATION_NAMES="MyService3.exe"除外設定は含める設定よりも優先されることに注意してください。
属性項目
属性は、イベントまたはトランザクションのプロパティを決定するキーと値のペアです。各属性は、APMトランザクショントレース、APMエラートレース、Spanイベント、Transactionイベント、TransactionErrorイベント、PageViewイベントに送信されます。プライマリのattributes項目項目、.NETエージェントの属性収集を有効または無効にし、収集または除外する特定の属性を定義します。属性設定は、宛先ごとに個別に構成することもできます。
この例では、エージェントはキーがmyApiKeyで始まるすべての属性(myApiKey.bar、myApiKey.value)を除外しますが、カスタムアトリビュートmyApiKey.fooを収集します。
<attributes enabled="true"> <exclude>myApiKey.*</exclude> <include>myApiKey.foo</include></attributes>.NET APM属性は、.NETエージェントの属性ページで確認できます。エージェントAPI呼び出しAddCustomAttributeを使用してカスタムアトリビュートを定義することもできます。
機能オプション
これらのオプションを使用して、New Relicの機能を有効化、無効化、および設定します。New Relic for .NETでは、以下の機能を構成できます。
- アプリプール
- エラー収集
- 高セキュリティモード
- 例外メッセージの削除
- Transactionイベント
- カスタムイベント
- カスタムパラメーター
- タグ/ラベル
- ブラウザのインストゥルメンテーション
- スロークエリ
- トランザクショントレース
- データストアトレーサー
- ディストリビューティッド(分散)トレーシング
- 無限トレーシング
- クロスアプリケーショントレース
- スパンイベント
- HTTPリクエストヘッダーのキャプチャ
- アプリケーションロギング
- コードレベルのメトリクス
- クラウドプロバイダーのメタデータ
- AIモニタリング
アプリプール
重要
これはシステムのグローバル設定ファイルにのみ適用されます。
重要
この設定は、IISホスティングモデルがインプロセスに設定されている場合にのみ適用されます。
applicationPools項目は、configuration項目の子項目です。applicationPools要素は、プロファイラーに対してどのアプリケーション プールを計装するかを正確に指定し、IIS アプリケーション プール名と同じ名前を使用します。 この設定要素は、アプリケーションプールのごく一部だけを計測する必要がある場合に便利です。 たとえば、特定のサーバーには数百のアプリケーションプールがある可能性がありますが、.NET エージェントによって計装される必要があるのは、そのうちの少数のプールだけです。
特定のアプリケーションプールに対して計装を無効にする例を次に示します。
<applicationPools> <applicationPool name="Foo" instrument="false"/> <applicationPool name="Bar" instrument="false"/></applicationPools>以下は、サーバー上で現在実行されているすべてのアプリケーションプールの計装を無効にし、特定のアプリケーションプールの計装を有効にする例です。
<applicationPools> <defaultBehavior instrument="false"/> <applicationPool name="Foo" instrument="true"/> <applicationPool name="Bar" instrument="true"/></applicationPools>applicationPools項目は、以下の項目をサポートしています。
エラー収集
errorCollector項目は、configuration項目の子項目です。errorCollectorはエラー収集を設定します。これは、捕捉されなかった例外に関する情報をキャプチャし、New Relicに送信します。
<errorCollector enabled="true" captureEvents="true" maxEventSamplesStored="100"> <ignoreClasses> <errorClass>System.IO.FileNotFoundException</errorClass> <errorClass>System.Threading.ThreadAbortException</errorClass> </ignoreClasses> <ignoreMessages> <errorClass name="System.Exception"> <message>Ignore message</message> <message>Ignore too</message> </errorClass> </ignoreMessages> <ignoreStatusCodes> <code>401</code> <code>404</code> </ignoreStatusCodes> <expectedClasses> <errorClass>System.ArgumentNullException</errorClass> <errorClass>System.ArgumentOutOfRangeException</errorClass> </expectedClasses> <expectedMessages> <errorClass name="System.Exception"> <message>Expected message</message> <message>Expected too</message> </errorClass> </expectedMessages> <expectedStatusCodes>403,500-505</expectedStatusCodes> <attributes enabled="true"> <exclude>myApiKey.*</exclude> <include>myApiKey.foo</include> </attributes></errorCollector>ヒント
APMでのエラー設定の概要については、APMでのエラーの管理を参照してください。
重要
expectedClasses、expectedMessages、およびexpectedStatusCodes設定には、.NET エージェントバージョン8.31.0.0以降が必要です。
errorCollector項目は、以下の項目と属性をサポートしています。
高セキュリティモード
highSecurity項目は、configuration項目の子項目です。高セキュリティモードを有効にするには、このプロパティをtrueに設定し、New Relicユーザーインターフェースで高セキュリティプロパティを有効にします。高度なセキュリティを有効にすると、SSLが有効になります。リクエスト問題、カスタム問題、および HTTP リクエストヘッダーは収集されません。例外メッセージの削除が有効になっています。そして、書き込みをそのままの形式でNew Relicに送信することはできません。
例外メッセージの削除
stripExceptionMessages項目は、configuration項目の子項目です。例外メッセージを削除するには、このプロパティをtrueに設定します。デフォルトでは、これは false に設定されています。つまり、エージェントはすべての例外からのメッセージを New Relic コレクターに送信します。高セキュリティモードを有効にすると、これは自動的にtrueに変更され、エージェントは例外からメッセージを削除します。
Transactionイベント
transactionEvents項目は、configuration項目の子項目です。トランザクションイベントを設定するには、transactionEventsを使用します。
<transactionEvents enabled="true" maximumSamplesStored="10000"> <attributes enabled="true"> <exclude>myApiKey.*</exclude> <include>myApiKey.foo</include> </attributes></transactionEvents>transactionEvents項目は、以下の属性をサポートしています。
カスタムイベント
customEvents項目は、configuration項目の子項目です。カスタムイベントを設定するには、customEventsを使用します。
<customEvents enabled="true" maximumSamplesStored="10000"/>customEvents項目は、以下の属性をサポートしています。
カスタムパラメーター
customParameters項目は、configuration項目の子項目です。customParametersを使用してカスタムパラメーターを構成します。
<customParameters enabled="true" />customParameters項目は、以下の属性をサポートしています。
ラベル(タグ)
labels項目は、configuration項目の子項目です。
これはタグ名と値を設定します。このリストは、セミコロンで区切られた、コロンで区切られた名前と値のペアのリストです。環境変数NEW_RELIC_LABELSと組み合わせて使用することもできます。例:
<labels>foo:bar;zip:zap</labels>NEW_RELIC_LABELS="foo:bar;zip:zap"ブラウザのインストゥルメンテーション
browserMonitoring項目は、configuration項目の子項目です。browserMonitoringは.NETアプリケーションでを設定します。ブラウザを使用すると、エンドユーザーのパフォーマンスエクスペリエンスを洞察できます。これは、少量のJavacriptコードを書くページのヘッダーとフッターに挿入することで、ユーザーのブラウザがウェブページのダウンロードとレンダリングにかかる時間を測定して行われます。
// If you use both the Exclude and Attribute elements// the Exclude element must be listed first.<browserMonitoring autoInstrument="true"> <requestPathsExcluded> <path regex="url-regex-1"/> <path regex="url-regex-2"/> ... <path regex="url-regex-n"/> </requestPathsExcluded> <attributes enabled="true"> <exclude>myApiKey.*</exclude> <include>myApiKey.foo</include> </attributes></browserMonitoring>browserMonitoring項目は、以下の属性をサポートしています。
Browser計装は、環境変数によって有効または無効にすることもできます。
NEW_RELIC_BROWSER_MONITORING_AUTO_INSTRUMENT= true | 1 | false | 0スロークエリ
slowSql項目は、configuration項目の子項目です。slowSql、スロークエリに関する情報のキャプチャを構成し、これらのクエリの実行計画をキャプチャして難読化します。
<slowSql enabled="true"/>slowSql項目は、以下の属性をサポートしています。
トランザクショントレース
transactionTracer項目は、configuration項目の子項目です。transactionTracerはトランザクショントレースを設定します。トレースには、発行されたクエリステートメントを含む、トランザクションの正確な呼び出しシーケンスが含まれます。
<transactionTracer enabled="true" transactionThreshold="apdex_f" recordSql="obfuscated" explainEnabled="true" explainThreshold="500" maxSegments="3000" maxExplainPlans="20"> <attributes enabled="true"> <exclude>myApiKey.*</exclude> <include>myApiKey.foo</include> </attributes> </transactionTracer>transactionTracer項目は、以下の属性をサポートしています。
データストアトレーサー
datastoreTracer項目は、configuration項目の子項目です。
<datastoreTracer> <instanceReporting enabled="true" /> <databaseNameReporting enabled="true" /> <queryParameters enabled="false" /></datastoreTracer>datastoreTracer項目は、以下のサブ項目をサポートしています。
ディストリビューティッド(分散)トレーシング
distributedTracing項目は、configuration項目の子項目です。
<distributedTracing enabled="true" excludeNewrelicHeader="false"/>ディストリビューティッド(分散)トレーシングでは、リクエストが分散システムを経由するパスを見ることができます。.NET エージェントバージョン8.6.45.0以降が必要で、.NETエージェント9.0.0.0以降ではデフォルトで有効になります。
重要
ディストリビューティッド(分散)トレーシングを有効にすると、クロスアプリケーショントレーシングが無効になり、APM機能に他の影響があります。有効化する前に、計画ガイドをお読みください。
ディストリビューティッド(分散)トレーシングの設定の詳細についてはNET アプリケーションのディストリビューティッド(分散)トレーシングを有効にするを参照してください。
distributedTracing項目は、以下の属性をサポートしています。
サンプラー設定
重要
サンプラー設定は、.NET エージェントバージョン10.45.0以降で利用可能です。
.NETエージェントは現在、ディストリビューティッド(分散)トレーシングで使用するために構成できる4つの異なるサンプリングアルゴリズムをサポートしています。
Sampler Type | Description |
|---|---|
適応型サンプラー | .NET エージェントによって使用されるオリジナルのサンプリングアルゴリズム。デフォルトで有効になっています。サンプリングの決定はランダムに行われ、サンプリング期間ごとに設定された数のサンプルを保持することを目標とします。 |
トレースID比率ベースのサンプラー | (ランダムに生成された)トレースIDに基づいて、設定された割合のトレースをサンプリングする、オープンテレメトリートレースID比率ベースのサンプラーの実装。 |
常時有効サンプラー | 名前が示すように、このサンプラーはすべてのトレースをサンプリングします。このサンプラーを有効にすると、アプリケーションのパフォーマンスに影響があり、データの取り込みが増加する可能性があることに注意してください。 |
常時無効サンプラー | 「常時有効」とは正反対で、このサンプラーはトレースを一切サンプリングしません。非常に特殊なケースで役立ちます。 |
サポートされているサンプラーは、複数のレベルで設定できます。
Sampler Level | Description |
|---|---|
Root | これは、トレースの開始時に適用されるサンプラーです。デフォルトでは、適応型サンプラーがルートサンプラーとして構成されています。 |
遠隔地の親がサンプリングされている | これは、トレースにサンプリング済みのリモート親(つまり、トレースが上流サービスで発生した場合)がある場合に適用されるサンプラーです。例えば、常時有効サンプラーを使用するように設定することで、現在のアプリケーション内のすべてのトレースがサンプリングされるようにすることができます。 |
遠隔地の親がサンプリングされていない | これは、トレースにサンプリングされなかったリモート親(つまり、トレースが上流サービスで発生した場合)がある場合に適用されるサンプラーです。 |
<sampler>設定項目は<distributedTracing>項目の子項目であり、以下のように構成されています。
<distributedTracing ... > <sampler> <root> <!-- sampler type --> </root> <remoteParentSampled> <!-- sampler type --> </remoteParentSampled> <remoteParentNotSampled> <!-- sampler type --> </remoteParentNotSampled> </sampler></distributedTracing>各サンプラーレベルについて、以下のいずれかのサンプラー設定を指定できます。
<default /> <!-- default is a synonym for <adaptive /> --><adaptive /><traceIdRatioBased ratio="0.12" /><alwaysOn /><alwaysOff /><traceIdRatioBased>項目には必須のratio属性があり、これは0.0から1.0の間の値で、サンプリングするトレースの割合を指定します。
重要
特定のサンプラーレベルで設定が指定されていない場合、またはそのレベルの設定項目がまったく指定されていない場合は、Adaptive Sampler [適応型サンプラー]が使用されます。
次の環境変数を使用して、サンプラータイプに可能な値の1つを指定して、さまざまなサンプラーレベルでディストリビューティッド(分散)トレーシングサンプラーを構成できます。
NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_ROOT = default | adaptive | traceIdRatioBased | alwaysOn | alwaysOffNEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_REMOTE_PARENT_SAMPLED = default | adaptive | traceIdRatioBased | alwaysOn | alwaysOffNEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_REMOTE_PARENT_NOT_SAMPLED = default | adaptive | traceIdRatioBased | alwaysOn | alwaysOffこれらの環境変数のいずれかの値としてtraceIdRatioBasedが指定されている場合、同じサンプラーレベルに対して比率を指定する対応する環境変数も必要です。
NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_ROOT_TRACE_ID_RATIO_BASED_RATIO = 0.12NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_REMOTE_PARENT_SAMPLED_TRACE_ID_RATIO_BASED_RATIO = 0.12NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_REMOTE_PARENT_NOT_SAMPLED_TRACE_ID_RATIO_BASED_RATIO = 0.12スパンイベントレポート
ディストリビューティッド(分散)トレーシングはスパンイベントを報告します。スパンイベントレポートはデフォルトで有効になっていますが、スパンをレポートするにはディストリビューティッド(分散)トレーシングを有効にする必要があります。スパンイベントを無効にするには、以下のいずれかのオプションを選択してください。
無限トレーシング
Infinite Tracingは、エージェントの外部にあるトレースオブザーバーを採用することで、ディストリビューティッド(分散)トレーシングサービスを拡張します。このツールは、さまざまなサービスにわたるアプリケーションのトレースを100%監視し、問題をより迅速に解決するための実用的なデータを提供します。
Infinite Tracingを有効にするには、.NETエージェントバージョン8.30以降を使用し、ディストリビューティッド(分散)トレーシングを有効にします。次に、以下の追加設定を追加します。
<configuration . . . > <distributedTracing enabled="true" /> <infiniteTracing> <trace_observer host="YOUR_TRACE_OBSERVER_HOST" /> </infiniteTracing></configuration>重要
Infinite Tracingの範囲は、transactionTracer.maxSegments設定によって制限できます。
infiniteTracing項目は、以下の項目をサポートしています。
クロスアプリケーショントレース
crossApplicationTracer項目は、configuration項目の子項目です。crossApplicationTracerはアプリケーション全体に渡ってトランザクショントレースをリンクします。サービス指向アーキテクチャーでリンクされると、HTTP経由で相互に通信するすべてのインストゥルメントされたアプリケーションは、トランザクショントレースを呼び出し先のアプリケーションおよび呼び出し元のアプリケーションと「リンク」します。クロスアプリケーショントレーシングを使用すると、サービスとアプリケーション間のパフォーマンスの関係をより簡単に理解できます。
重要
クロスアプリケーショントレースはエージェントv9.0.0で非推奨となり、デフォルトで無効になっています。今後のエージェントバージョンで削除されます。エージェントのv9以降でCATを使用するには、crossApplicationTracer.enabled = trueとdistributedTracing.enabled = falseの両方を設定する必要があります。ディストリビューティッド(分散)トレーシングを有効にするとクロスアプリケーショントレーシングが無効になります。
<crossApplicationTracer enabled="true"/>crossApplicationTracer項目は、以下の属性をサポートしています。
スパンイベント
spanEvents項目は、configuration項目の子項目です。スパンイベントを設定するには、spanEventsを使用します。
<spanEvents enabled="true"> <attributes enabled="true"> <exclude>myApiKey.*</exclude> <include>myApiKey.foo</include> </attributes></spanEvents>spanEvents項目は、以下の属性をサポートしています。
HTTPリクエストヘッダーのキャプチャ
allowAllHeaders項目は、configuration項目の子項目です。これをtrueに設定すると、.NETエージェントがすべてのHTTPリクエストヘッダーをキャプチャし、それらをSpanおよびTransactionイベントにrequest.headers.{http-header-name}属性として適用できるようになります。これをfalseに設定すると、.NETエージェントが次のHTTPリクエストヘッダーのみを収集できるようになります。
request.headers.refererrequest.headers.acceptrequest.headers.content-lengthrequest.headers.hostrequest.headers.user-agent
重要
allowAllHeaders設定は、.NETエージェントバージョン8.40.0以降でのみ使用できます。allowAllHeadersを使用して属性をキャプチャする場合、キャプチャされたリクエストヘッダー属性は、ルートレベルおよび送信先レベルの属性設定によって引き続き制御されます。attributes項目の下にあるincludeリストのrequest.header.*を設定しなくても(以下を参照)、.NETエージェントはすべてのヘッダー属性をフィルタリングします。デフォルトのnewrelic.configはrequest.header.*を含むように設定されています。
<allowAllHeaders enabled="true" /><attributes enabled="true"> <include>request.headers.*</include> ...</attributes>デフォルト値のnewrelic.configは、.NETエージェントが不要なデータを収集するのを防ぐために、以下のHTTPリクエストヘッダーを明示的に除外するように設定されています。
<attributes enabled="true"> <exclude>request.headers.cookie</exclude> <exclude>request.headers.authorization</exclude> <exclude>request.headers.proxy-authorization</exclude> <exclude>request.headers.x-*</exclude></attributes>アプリケーションロギング
重要
これらの設定オプションは、.NETエージェントバージョン9.7.1以降でのみ使用できます。コンテキストデータ(カスタムアトリビュート)に関連するオプションは、.NETエージェントバージョン10.4.0以降でのみ使用できます。
applicationLogging項目は、configuration項目の子項目です。applicationLoggingを使用して、アプリケーションのロギングアクティビティの計装を設定します。
主なサブ機能は3つあります。
メトリクス:収集サイクルごとに書き込まれるログ行の総数(
Logging/lines)と、特定のログレベル(例:Logging/lines/ERROR)で書き込まれるログ行の数に関するメトリクスを収集します。ログ転送:有効にすると、エージェントはログデータをキャプチャし、New Relicに送信します。
- コンテキストデータ(
AddCustomAttribute経由):有効にすると、エージェントはカスタムログ属性をキャプチャして転送します。includeとexclude項目は、他のエージェント属性設定と同じルールに従って、含める属性名と除外する属性名をカンマで区切ったリストです。デフォルトでは両方とも空になっているため、すべてのログコンテキストデータがキャプチャされ、転送されます。 - ログレベルフィルタリング:カンマ区切りのリストで1つ以上のログレベルを設定すると、エージェントはそれらのレベルのメッセージがキャプチャされ、転送されるのを防ぎます。
- ラベル:有効にすると、エージェントはエージェントに転送されるログにカスタムラベルを追加します。大文字小文字を区別しない、カンマ区切りのラベル名のリストである
exclude属性を使用できます。デフォルトでは、exclude属性が空の場合、エージェントはカスタムラベルを追加します。
- コンテキストデータ(
ローカルログの装飾:有効にすると、既存のログが、エラーなどの他のNew Relicデータとログをリンクするメタデータで装飾されます。
詳細については、コンテキスト内での.NET エージェントログの使用に関するドキュメントを参照してください。
<applicationLogging enabled="true"> <metrics enabled="true" /> <forwarding enabled="true" maxSamplesStored="10000" logLevelDenyList=""> <contextData enabled="false" include="" exclude="" /> <labels enabled="false" exclude="" /> </forwarding> <localDecorating enabled="false" /></applicationLogging>これらの機能は環境変数によっても設定できます。
NEW_RELIC_APPLICATION_LOGGING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_METRICS_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_CONTEXT_DATA_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_CONTEXT_DATA_INCLUDE="myCustomAttribute1, myOtherCustomAttribute*"NEW_RELIC_APPLICATION_LOGGING_FORWARDING_CONTEXT_DATA_EXCLUDE="myCustomAttribute2, myOtherCustomAttributeMoreSpecificName"NEW_RELIC_APPLICATION_LOGGING_FORWARDING_MAX_SAMPLES_STORED=10000NEW_RELIC_APPLICATION_LOGGING_FORWARDING_LOG_LEVEL_DENYLIST="debug, warn"NEW_RELIC_APPLICATION_LOGGING_FORWARDING_LABELS_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_LABELS_EXCLUDE="label1, label2"NEW_RELIC_APPLICATION_LOGGING_LOCAL_DECORATING_ENABLED=trueapplicationLogging項目は、以下の属性とサブ項目をサポートしています。
コードレベルのメトリクス
codeLevelMetrics項目は、configuration項目の子項目です。codeLevelMetrics使用して、スパンイベントの属性としてキャプチャされた追加のインストゥルメントされたメソッドメタデータを介してCodeStreamでのコードレベルメトリクスサポートを有効にします。
詳細については、New Relic CodeStreamインテグレーションのドキュメントを参照してください。
<codeLevelMetrics enabled="true" />これは環境変数によっても設定できます。
NEW_RELIC_CODE_LEVEL_METRICS_ENABLED=trueクラウドプロバイダーのメタデータ
cloud項目は、configuration項目の子項目です。cloudを使用して、アプリケーションのcloudプロバイダーのメタデータを構成します。
cloud項目は、以下のサブ項目をサポートしています。
AIモニタリング
デフォルトでは、AI監視は無効になっています。AI 監視を有効にするには、aiMonitoring項目でenabled属性をtrueに設定します。aiMonitoring項目は、configuration項目の子項目です。
重要
AIモニタリングを有効にすると、モニタリング対象として選択したモデルとの間で送受信される入力と出力のストリーミングコピー(そこに含まれる個人情報も含む)が記録されます。AIモニタリングを使用する場合、AIモニタリング機能を提供する目的でモデルユーザーのインタラクションが第三者(New Relic)によって記録される可能性があることについて、モデルユーザーから同意を得る責任があります。
<aiMonitoring enabled="true" />これは環境変数によっても設定できます。
NEW_RELIC_AI_MONITORING_ENABLED=trueaiMonitoring項目は、以下のサブ項目をサポートしています。
app.configまたはweb.configの設定
ASP.NETおよび.NETフレームワークのコンソールアプリの場合、アプリのapp.configまたはweb.configの最も外側の項目<configuration>内で次の設定を構成することもできます。
appsettings.jsonの設定
.NET Coreアプリケーションの場合、以下の条件が満たされている場合は、appsettings.jsonで以下の設定を構成できます。
appsettings.jsonファイルは、アプリケーションの現在の作業ディレクトリに配置する必要があります。アプリケーションには以下の依存関係が必要です。
重要
ASP.NET Coreアプリの場合、ASPNETCORE_ENVIRONMENT変数を設定すると、.NETエージェントはappsettings.{environment}.jsonから読み取ります。