イベント コレクション一括コピー インターフェイス

AppFabric は、SQL Server のための既定一括コピー プロバイダーを提供し、これにより、容量の大きいイベント データを監視ストアに書き込む場合のパフォーマンスを向上します。ただし、イベント監視データを SQL Server でないストアに格納する場合もあります。この場合、データベースに特化した一括コピー プロバイダーを作成し、非 SQL Server ストアへのイベント データの一括コピーに対応する必要があります。特定のデータ ストアについて適した一括コピー プラグインが登録されていない場合は、イベント コレクション サービスは ADO.NET 一括挿入モードに戻って監視ストアにイベントを書き込みます。

データベースに特化した一括コピー プロバイダーを作成するため、.NET Framework 4 オブジェクト クラスは一括コピー プロバイダーの機能の一部として Microsoft.ApplicationServer.Monitoring.EventCollector.IBulkCopy インターフェイスを実装しています。これにより、ルート Web.config ファイルにプロバイダーを登録します。一括コピー プロバイダーを登録すると、イベントをストアに書き込む必要がある場合に、イベント コレクション サービスがプロバイダーの IBulkCopy インターフェイスを呼び出します。イベント コレクション サービスのみが、このインターフェイスにプログラムによってアクセスできます。一括コピー プロバイダーを呼び出すと、Windows イベント トレーシング (ETW) セッションからキャッシュされた大量のイベント データを監視ストアに転送します。

一括コピー プロバイダーの構成

AppFabric が提供する既定の SQL Server 一括コピー プロバイダーである System.Data.SqlClient が イベント コレクション サービスにどのように登録されているかを示す例です。データベースに特化した一括コピー プロバイダーも同様の方法で登録します。

<microsoft.applicationServer>
  <monitoring lockElements="bulkCopyProviders, collectors">
    <bulkCopyProviders>
        <bulkCopyProvider providerName="System.Data.SqlClient" type="Microsoft.ApplicationServer.Monitoring.EventCollector.SqlServerBulkCopy, Microsoft.ApplicationServer.Monitoring, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        </bulkCopyProviders>
    <collectors>
        <collector name="" session="0">
        <settings retryCount="10" eventBufferSize="10000" retryWait="00:00:15" maxWriteDelay="00:00:05" />
        </collector>
    </collectors>
    <default enabled="true" connectionStringName="DefaultMonitoringConnectionString" monitoringLevel="HealthMonitoring" />
  </monitoring>
</microsoft.applicationServer>
    
<connectionStrings>
    <add connectionString="Data Source=localhost;Initial Catalog=ApplicationServerMonitoring;Integrated Security=True" name="DefaultPersistenceConnectionString" providerName="System.Data.SqlClient" />
    <add connectionString="Data Source=localhost;Initial Catalog=ApplicationServerMonitoring;Integrated Security=True" name="DefaultMonitoringConnectionString" providerName="System.Data.SqlClient" />
</connectionStrings>

Microsoft.ApplicationServer.Monitoring.EventCollector.SqlServerBulkCopy は、IBulkCopy インターフェイスを実装するプロバイダー クラスの種類です。一括コピー操作は、次の条件のどちらかが満たされた場合に発生します。

  • イベント コレクション サービス イベント バッファー内のイベント数が eventBufferSize 属性を超える場合。この例では、10,000 件のイベント制限に到達した場合に書き込むよう設定されています。

  • maxWriteDelay 属性で時間間隔の期限となった場合。この例では、5 秒ごとに書き込むよう設定されています。

イベント コレクション サービスおよび一括コピー プロバイダーの構成方法の詳細については、「イベント コレクション サービスの構成」を参照してください。

Microsoft.ApplicationServer.Monitoring.EventCollector.IBulkCopy (インターフェイス)

次に、IBulkCopy インターフェイスの定義を示します。WriteServer メソッドを実装して、データベースに特化したプロバイダー クラスを使用してデータベースに特化したイベント データの書き込みタスクを処理します。

Namespace: Microsoft.ApplicationServer.Monitoring.EventCollector
namespace Microsoft.ApplicationServer.Monitoring.EventCollector
{
    using System;
    using System.Data;
    using System.Data.Common;


    public interface IBulkCopy
    {
        //Number of rows in each batch. At the end of each batch, the rows in the batch are written to store
        int BatchSize { get; set; }
      
        //The destination table name in the store to write the rows
        string DestinationTableName { get; set; }

        //The database connection to the store to which the rows are written
        DbConnection Connection { get; set; }

        //Copies all rows from the supplied IDataReader to the destination table specified by the DestinationTableName property, on the store specified by the Connection property
        void WriteToServer(IDataReader dataReader);
    }
}

DataTable クラスの詳細については、「DataTable Class」 (https://go.microsoft.com/fwlink/?LinkId=168571) を参照してください。

  2012-03-05