15 イベントの記録と再生を使用したデバッグ

イベントの記録と再生の機能を使用して、実行中のOracle Stream Analyticsアプリケーションをデバッグできます。アプリケーションの実行中に、EPNコンポーネントから永続ストアにフローするイベントを記録します。後のステージで、イベントBeanなどのアプリケーションでイベントを再生します。イベントBeanでイベントを問い合せ、その結果に基づいてアプリケーションを修正します。

この章のサンプル・コードは、/Oracle/Middleware/my_osa/examples/source/applications/recplayにあるイベントの記録と再生のサンプルからとったものです。

この章の内容は次のとおりです。

15.1 イベント・フロー

simpleEventSourceアダプタは、イベントを記録するように構成されています。記録は、アダプタからのイベント・フローとして実行されます。eventStreamチャネルは、イベントを再生するように構成されています。再生は、チャネルへのイベント・フローとして実行されます。

次の図は、イベントの記録と再生の例のEPNを示し、どこでイベントを記録でき、どこでイベントを再生できるかを示しています。

図15-1 EPNでの記録と再生の構成

図15-1の説明が続きます
「図15-1 EPNでの記録と再生の構成」の説明

15.2 Berkeley DB

Berkeley DBは、産業レベルの信頼性や可用性のある、高速でスケーラブルなトランザクション・データベースです。

イベントを記録する場合、Oracle Stream Analyticsサーバーでは、デフォルトで、Oracle Stream Analyticsサーバーにバンドルされた永続イベント・ストアであるBerkeley DBにイベントが格納されます。Berkeley DBの詳細は、次を参照してください。

http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/overview/index.html

記録と再生の機能を使用するように構成されているアプリケーションをデプロイする場合、Oracle Stream AnalyticsサーバーはBerkeley DBのデータベース・スキーマとインスタンスを次のディレクトリに作成します。

/Oracle/Middleware/my_oep//user_projects/domains/domainname/servername/bdb

注意:

データベース・キーは、レコード時間およびシーケンス番号です。

デフォルトBerkeleyデータベース構成はそのままで使用できます。Berkeleyデータベース・インスタンスの位置をカスタマイズしたり、またはパフォーマンスをチューニングする場合のみ、構成を変更する必要があります。Berkeley DBの構成方法の詳細は、Berkeley DBの構成を参照してください。

イベント・ストアAPIを使用して、記録時間の範囲とイベント記録元のコンポーネントを指定することで、ストア内の過去のイベントに対する問合せを実行できます。実際に使用する問合せはイベント・リポジトリ・プロバイダによって異なります。たとえば、Oracle Stream Analyticsに付属のデフォルト永続イベント・ストア・プロバイダではOracle CQLを使用します。これらのAPIを使用してイベント・ストアの古いイベントを削除することもできます。

15.3 イベントの記録

プロセッサ、アダプタ、チャネル、イベントBeanなど、イベントを生成するEPNの任意のコンポーネントの記録を構成できます。プロセッサとチャネルは常にイベントを生成します。

アダプタとイベントBeanは、EventSourceインタフェースを実装する必要があります。

EPNの異なるコンポーネントからのイベントを異なる永続ストアに格納したり、すべてのイベントを同じストアに格納したりするよう構成できます。コンポーネントによって出力されるイベントのみが記録されます。

コンポーネントのイベントの記録を有効にするには、構成ファイルを更新し、record-parameters要素を追加します。record-parametersの子要素を使用して、イベントの記録先となるイベント・ストア、記録が行われる最初の期間、格納するイベント・タイプのリストなどを指定します。

アプリケーションのデプロイが完了し、イベントがネットワーク内で循環を開始すると、特定の開始時間を構成した場合は記録が自動的に開始され、または管理ツールを使用して記録が動的に開始されます。記録が構成された各コンポーネントについて、Oracle Stream Analyticsではコンポーネントを離れたイベントが、記録時のタイムスタンプとともに適切なストアに格納されます。

15.4 イベントの再生

プロセッサ、アダプタ、ストリーム、イベントBeanなど、EPNの任意のコンポーネントの再生を構成できます。一般に、再生コンポーネントはネットワーク内でイベントを記録するステージよりも後のステージです。

コンポーネントのイベントの再生を有効にするには、構成ファイルを更新し、playback-parameters要素を追加します。playback-parametersの子要素を使用して、イベントを再生するイベント・ストア、再生するイベント・タイプのリスト(デフォルトではすべて再生)、再生する記録されたイベントの期間などを指定します。Oracle Stream Analyticsでは、デフォルトで、時間に正確にイベントが再生されます。ただし、イベントが記録元のコンポーネントを離れたときの元の速度よりも速いまたは遅い速度で再生されるように構成できます。

アプリケーションのデプロイが完了し、イベントがネットワーク内で循環を開始すると、Oracle Stream Analytics Visualizerまたはwlevs.Adminを使用して再生を開始する必要があります。Oracle Stream Analyticsでは永続ストアからイベントが読み込まれ、EPNの適切な場所に挿入されます。

コンポーネントが再生イベントを取得した場合は、元のイベントとまったく同じように見えます。イベントを記録するようにダウンストリーム・コンポーネントが構成されている場合、Oracle Stream Analyticsでは着信した再生イベントとリアルタイム・イベントが記録されます。

15.5 Berkeley DBの構成

デフォルトBerkeley DB構成はそのままで使用できます。Berkeleyデータベース・インスタンスの位置をカスタマイズしたり、キャッシュ・サイズを設定してパフォーマンスをチューニングする場合のみ、構成を変更する必要があります。

Oracle Stream Analyticsサーバーにイベント・ストアを構成するには、次のようにします。

  1. Oracle Stream Analyticsサーバー・インスタンスが実行中の場合には、停止します。
  2. サーバーのconfig.xmlファイルを開いて編集します。

    ファイルは、/Oracle/Middleware/my_oep/user_projects/ domains/<domain_name>/<server_name>/configにあります。

  3. config.xmlファイルのbdb-config要素を編集します。

    次の例では、完全に構成済のbdb-config要素を示しています。

    <bdb-config>
        <db-env-path>bdb</db-env-path>
        <cache-size>1000</cache-size>
    </bdb-config>
    

    表15-1bdb-configの子要素の一覧を示します。

    表15-1 bdb-configの子要素

    子要素 説明

    db-env-path

    OracleEvent Processingサーバーが、サーバーのconfigディレクトリと相対的にBerkeley DBインスタンスを作成するサブディレクトリを指定します。

    デフォルト: bdb

    cache-size

    Berkeley DBのキャッシュ・エントリに使用可能なメモリー量をバイト単位で指定します。キャッシュ・サイズを調整し、Berkeleyデータベースのパフォーマンスをチューニングできます。キャッシュ・サイズは2の累乗である必要がありますが、そうでない場合は、使用可能なメモリーとパフォーマンスの考慮事項によってのみ制限されます。

    デフォルト: je.maxMemoryPercent * JVM最大メモリー

  4. Oracle Stream Analyticsサーバーを再起動します。

15.6 イベントを記録するコンポーネントの構成

アプリケーションの任意のプロセッサ、アダプタ、チャネル、またはイベントBeanでイベントの記録を構成できます。

この項では、イベントを記録するアダプタ構成を更新します。

  1. コンポーネント構成ファイルを開き、次のように、イベントの記録を構成するコンポーネントにrecord-parameters子要素を追加します。
        <csv-adapter>
          <name>StockTradeCSVAdapter</name>
          <record-parameters>
              ...
          </record-parameters>
        </csv-dapter>
    
  2. record-parametersに子要素を追加して、データ・セット名、格納する1つ以上のイベントのリスト、記録の開始時間と終了時間などを指定します。
    <csv-adapter>
      <name>StockTradeCSVAdapter/name>
      <record-parameters>
        <dataset-name>recplay_sample</dataset-name>
        <event-type-list>
          <event-type>TradeEvent</event-type>
        </event-type-list>
        <time-range>
          <start>2010-01-20T05:00:00</start>
          <end>2010-01-20T18:00:00</end>
        </time-range>
      </record-parameters>
    </csv-adapter>
    

表15-2は指定できるrecord-parametersの子要素の一覧を示します。dataset-nameのみ必須です。

表15-2 record-parametersの子要素

子要素 説明

dataset-name

Berkeley DB: 記録されているデータを識別し、サーバーのconfig.xmlファイルでdb-env-path設定によって指定されているディレクトリの下にあるこの名前のディレクトリに配置します。

Oracle RDBMSベースのプロバイダ: 記録されたイベントを格納する表が作成されるデータベース領域またはスキーマを指定します。Oracle RDBMSベースのプロバイダを構成するには、この要素を指定する必要があります。

event-type-list

Berkeley DB: イベント・ストアに記録されるイベント・タイプを指定します。この要素を指定しない場合、Oracle Stream Analyticsではコンポーネントを離れるすべてのイベント・タイプが記録されます。

Oracle RDBMSベースのプロバイダ: この要素は指定する必要があります。

time-range

記録が行われる期間を指定します。start子要素で開始時間を指定し、end子要素で終了時間を指定して期間を構成します。

開始時間および終了時間を次のXMLスキーマのdateTime値の形式として表します。

yyyy-mm-ddThh:mm:ss

たとえば、記録の開始を2010年1月20日午前5時、終了を2010年1月20日午後6時に指定するには、次のように入力します。

  <time-range>
    <start>2010-01-20T05:00:00</start>
    <end>2010-01-20T18:00:00</end>
  </time-range>

XMLスキーマのdateTime形式の完全な詳細は、http://www.w3.org/TR/xmlschema-2/#dateTime-lexical-representation を参照してください。

期間を指定しない場合、アプリケーションをデプロイしてもイベントは記録されず、Oracle Stream Analytics Visualizerまたはwlevs.Adminを使用して明示的に開始するまで記録は行われません。

time-rangeまたはtime-range-offsetを指定できますが、両方は指定できません。

time-range-offset

記録が行われる期間を指定します。start子要素で開始時間を指定し、duration子要素で記録を実行する時間の長さを指定して、期間を構成します。

開始時間を次のXMLスキーマのdateTime値の形式として表します。

yyyy-mm-ddThh:mm:ss

次の形式で期間を表します。

hh:mm:ss

たとえば、記録を2010年1月20日午前5時に開始し、3時間続くように指定するには、次のように入力します。

  <time-range-offset>
    <start>2010-01-20T05:00:00</start>
    <duration>03:00:00</duration>
  </time-range-offset>

XMLスキーマのdateTime形式の完全な詳細は、http://www.w3.org/TR/xmlschema-2/#dateTime-lexical-representation を参照してください。

期間を指定しない場合、アプリケーションをデプロイしてもイベントは記録されず、Oracle Stream Analytics Visualizerまたはwlevs.Adminを使用して明示的に開始するまで記録は行われません。

time-rangeまたはtime-range-offsetを指定できますが、両方は指定できません。

batch-size

イベント・バッファからイベント・ストアに書き込むためにOracle Stream Analyticsによって単一のバッチで選択されるイベント数を指定します。

デフォルト値は1000です。

batch-time-out

イベント・ストアに書き込む前に、イベント・バッファ枠がbatch-sizeのイベント数を満たすまでOracle Stream Analyticsが待機する秒数を指定します。

デフォルト値は60です

max-size

指定した場合、Oracle Stream Analyticsではイベント・ストアへの書込みにストリームが使用され、この要素はストリーム・サイズを指定します。ゼロ以外の値は非同期の書込みを示します。

デフォルト値は1024です。

max-threads

指定した場合、Oracle Stream Analyticsではイベント・ストアへの書込みにストリームが使用され、この要素によって、このストリームのイベントの処理に使用するスレッドの最大数が指定されます。max-sizeが0の場合は、この値の設定に影響はありません。

デフォルト値は1です。

15.7 イベントを再生するコンポーネントの構成

アプリケーションの任意のプロセッサ、アダプタ、チャネル、またはイベントBeanでイベントの再生を構成できます。再生コンポーネントがイベントを受け取って再生できるように、コンポーネントは記録コンポーネントよりダウンストリームにある必要があります。

この項では、イベントを再生するチャネル構成を更新します。

  1. コンポーネント構成XMLファイルを開き、イベントの再生を構成するコンポーネントにplayback-parameters子要素を追加します。たとえば、チャネルeventStreamを構成する場合は、次のようになります。
    <channel>
      <name>eventStream</name>
      <playback-parameters>
       ...
      </playback-parameters>
    </channel>
    
  2. playback-parametersに子要素を追加して、データ・セット、再生する1つ以上のイベントなどを指定します。次に例を示します。
        <channel>
          <name>eventStream</name>
          <playback-parameters>
              <dataset-name>recplay_sample</dataset-name>
              <event-type-list>
                  <event-type>SimpleEvent</event-type>
              </event-type-list>
          </playback-parameters>
        </channel>
    

表15-3は指定できるplayback-parametersの子要素の一覧を示します。dataset-nameのみ必須です。

表15-3 playback-parametersの子要素

子要素 説明

dataset-name

Berkeley DB: 記録されているデータを識別し、サーバーのconfig.xmlファイルでdb-env-path設定によって指定されているディレクトリの下にあるこの名前のディレクトリに配置します。

Oracle RDBMSベースのプロバイダ: 記録されたイベントを格納する表が作成されるデータベース領域またはスキーマを指定します。Oracle RDBMSベースのプロバイダを構成するには、この要素を指定する必要があります。Oracle RDBMSベースのプロバイダを構成するには、この要素を指定する必要があります。

event-type-list

Berkeley DB: イベント・ストアから再生されるイベント・タイプを指定します。この要素を指定しない場合、Oracle Stream Analyticsではすべてのイベント・タイプが再生されます。

Oracle RDBMSベースのプロバイダ: この要素は指定する必要があります。

time-range

開始および終了時間を使用して、再生が行われる期間を指定します。start子要素で開始時間を指定し、end子要素で終了時間を指定して期間を構成します。

開始時間および終了時間を次のXMLスキーマのdateTime値の形式として表します。

yyyy-mm-ddThh:mm:ss

たとえば、再生の開始を2010年1月20日午前5時、終了を2010年1月20日午後6時に指定するには、次のように入力します。

  <time-range>
    <start>2010-01-20T05:00:00</start>
    <end>2010-01-20T18:00:00</end>
  </time-range>

XMLスキーマのdateTime形式の完全な詳細は、http://www.w3.org/TR/xmlschema-2/#dateTime-lexical-representation を参照してください。

期間を指定しない場合はアプリケーションをデプロイしてもイベントは再生されず、Oracle Stream Analytics Visualizerまたはwlevs.Adminを使用して明示的に開始するまで再生は行われません。

time-rangeまたはtime-range-offsetを指定できますが、両方は指定できません。

time-range-offset

開始時間と期間を使用して、再生が行われる期間を指定します。start子要素で開始時間を指定し、duration子要素でイベントを再生する時間の長さを指定して、期間を構成します。

開始時間を次のXMLスキーマのdateTime値の形式として表します。

yyyy-mm-ddThh:mm:ss

次の形式で期間を表します。

hh:mm:ss

たとえば、再生を2010年1月20日午前5時に開始し、3時間続くように指定するには、次のように入力します。

  <time-range-offset>
    <start>2010-01-20T05:00:00</start>
    <duration>03:00:00</duration>
  </time-range-offset>

XMLスキーマのdateTime形式の完全な詳細は、http://www.w3.org/TR/xmlschema-2/#dateTime-lexical-representation を参照してください。

期間を指定しない場合はアプリケーションをデプロイしてもイベントは再生されず、Oracle Stream Analytics Visualizerまたはwlevs.Adminを使用して明示的に開始するまで再生は行われません。

time-rangeまたはtime-range-offsetを指定できますが、両方は指定できません。

playback-speed

再生速度を正のfloatとして指定します。

デフォルト値は1で、これは通常速度に相当します。値が2の場合、イベントは元の記録速度の2倍の速さで再生されます。0.5の値は、イベントが半分の速度で再生されることを意味します。

repeat

指定された期間の再生が完了した後に、イベントをもう一度再生するかどうかを指定します。

有効な値はtrueおよびfalseです。デフォルト値はfalseです。true値は、意図的に停止されるまで再生が無限に繰り返されることを意味します。Falseの場合はイベントが一度のみ再生されます。

max-size

指定した場合、Oracle Stream Analyticsではイベント・ストアからイベントを再生するとき、ストリームが使用されます。この要素にはストリームのサイズを指定します。ゼロ以外の値は非同期の書込みを示します。

デフォルト値は1024です。

max-threads

指定した場合、Oracle Stream Analyticsではイベント・ストアからイベントを再生するのにストリームが使用されます。この要素には、ストリームのイベントを処理する際に使用するスレッドの最大数を指定します。max-sizeが0の場合は、この値に効果はありません。

デフォルト値は1です。

15.8 イベントの記録と再生の開始および終了

アプリケーションのコンポーネントで記録および再生機能の構成が完了し、Oracle Stream Analyticsにアプリケーションをデプロイすると、構成ファイルで開始および終了の情報を明示的に構成している場合にのみ、サーバーでイベントの記録が開始されます。

たとえば、コンポーネント構成に次の要素が含まれている場合、2010年1月20日午前5時に記録が開始されます。

<time-range>
    <start>2010-01-20T05:00:00</start>
    <end>2010-01-20T18:00:00</end>
</time-range>

イベントの記録と再生を有効にするには、Oracle Stream Analytics Visualizerまたはwlevs.Adminを使用します。有効にした記録と再生は、構成設定に応じて開始および終了されます。

詳細は、次を参照してください。

Visualizerおよびwlevs.Adminでは、管理対象Bean (MBean)を使用して、イベントの記録と再生を動的に開始および終了し、イベント・ストアの構成を管理します。管理対象BeanはJava Management Extensions (JMX)インタフェースを提供するJava Beanです。JMXはネットワーク上のリソースをモニターおよび管理するためのJava EEソリューションです。com.bea.wlevs.management.configuration.StageMBeanを使用することにより、独自の管理ツールを作成し、JMXを使用してイベント・ストア機能を管理できます。

詳細は、次を参照してください。