X-Ray SDK for .NET - AWS X-Ray

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

X-Ray SDK for .NET

X-Ray SDK for .NET は、SqlCommand の代わりに使用できる TraceableSqlCommand という名前の System.Data.SqlClient.SqlCommand のラッパークラスを提供します。TraceableSqlCommand クラスを使用して、SQL コマンドを初期化できます。

同期メソッドと非同期メソッドを使用した SQL クエリのトレース

以下の例では、TraceableSqlCommand を使用して自動的に SQL Server クエリを同期的および非同期的にトレースする方法を示しています。

Controller.cs - SQL クライアント計測 (同期)
using Amazon; using Amazon.Util; using Amazon.XRay.Recorder.Core; using Amazon.XRay.Recorder.Handlers.SqlServer; private void QuerySql(int id) { var connectionString = ConfigurationManager.AppSettings["RDS_CONNECTION_STRING"]; using (var sqlConnection = new SqlConnection(connectionString)) using (var sqlCommand = new TraceableSqlCommand("SELECT " + id, sqlConnection)) { sqlCommand.Connection.Open(); sqlCommand.ExecuteNonQuery(); } }

ExecuteReaderAsync メソッドを使用して、クエリを非同期的に実行できます。

Controller.cs - SQL クライアント計測 (非同期)
using Amazon; using Amazon.Util; using Amazon.XRay.Recorder.Core; using Amazon.XRay.Recorder.Handlers.SqlServer; private void QuerySql(int id) { var connectionString = ConfigurationManager.AppSettings["RDS_CONNECTION_STRING"]; using (var sqlConnection = new SqlConnection(connectionString)) using (var sqlCommand = new TraceableSqlCommand("SELECT " + id, sqlConnection)) { await sqlCommand.ExecuteReaderAsync(); } }

SQL Server に対して実行された SQL クエリの収集

SQL クエリによって作成されたサブセグメントの一部として SqlCommand.CommandText のキャプチャを有効にできます。SqlCommand.CommandText は、サブセグメント JSON のフィールド sanitized_query として表示されます。デフォルトでは、この機能はセキュリティのために無効になっています。

注記

SQL クエリに機密情報をクリアテキストとして含める場合は、収集機能を有効にしないでください。

SQL クエリの収集を有効にするには、以下の 2 つの方法があります。

  • アプリケーションのグローバル設定で CollectSqlQueries プロパティを true に設定する。

  • インスタンス内の呼び出しを収集するには、TraceableSqlCommand インスタンスの collectSqlQueries パラメータを true に設定する。

Global CollectSqlQueries プロパティを有効にする

以下の例では、.NET および .NET Core の CollectSqlQueries プロパティを有効にする方法を示しています。

.NET

NET のアプリケーションのグローバル設定で CollectSqlQueries プロパティを true に指定するには、ここで示しているように App.config または Web.config ファイルの appsettings を変更します。

App.config または Web.config – SQL クエリの収集をグローバルに有効にする
<configuration> <appSettings> <add key="CollectSqlQueries" value="true"> </appSettings> </configuration>
.NET Core

.NET Core のアプリケーションのグローバル設定で CollectSqlQueries プロパティを true に指定するには、ここで示しているように appsettings.jsonX-Ray キーの ファイルを変更します。

appsettings.json – SQL クエリの収集をグローバルに有効にする
{ "XRay": { "CollectSqlQueries":"true" } }

collectSqlQueries パラメータを有効にする

TraceableSqlCommand インスタンスの collectSqlQueries パラメータを true に設定することで、そのインスタンスを使用して実行された SQL Server クエリの SQL クエリテキストを収集できます。このパラメータを false に設定すると、TraceableSqlCommand インスタンスの CollectSqlQuery 機能が無効になります。

注記

TraceableSqlCommand インスタンスの collectSqlQueries の値は、CollectSqlQueries プロパティのグローバル設定で指定された値を上書きします。

例 サンプル Controller.cs – インスタンスの SQL クエリの収集を有効にする
using Amazon; using Amazon.Util; using Amazon.XRay.Recorder.Core; using Amazon.XRay.Recorder.Handlers.SqlServer; private void QuerySql(int id) { var connectionString = ConfigurationManager.AppSettings["RDS_CONNECTION_STRING"]; using (var sqlConnection = new SqlConnection(connectionString)) using (var command = new TraceableSqlCommand("SELECT " + id, sqlConnection, collectSqlQueries: true)) { command.ExecuteNonQuery(); } }