前のトピック: イベント固有性を備えたアダプタ リスナの動作次のトピック: ファイアウォールの背後でのアダプタの実行


トランザクション データの集約

トランザクション データは、しきい値と照合するため、または期間内の最終的な成功率を計算できるようにするために、頻繁に収集されます。 たとえば、システムに対して 5 分ごとに仮想トランザクションが実行され、結果(ミリ秒単位の応答時間)が以下のように格納されます。

[…]
1/1/2004 00:00 432
1/1/2004 00:05 560
1/1/2004 00:10 329
1/1/2004 00:15 250
1/1/2004 00:20 275
1/1/2004 00:25 2860
1/1/2004 00:30 140
[…]

仮想トランザクションを使用しないような他の状況では、システム内で実際のトランザクションへのアクセスが生じることがあります。 これらの場合には、1 時間に何百、または何千のトランザクションが実行される可能性があります。

これらの両方のケースでは、このようなボリュームの情報を CA Business Service Insight にロードすることは、可能であれば回避するべきです。

データ量を減らすための最適な方法は、一定期間ごとにデータを集約することです。 成功を測定する対象となるしきい値が修正されると、アダプタで、成功した集約期間内のトランザクション数をカウントすることによって、集約を実行することができます。 たとえば、前の例で成功のしきい値が 500 ミリ秒に設定されている場合、表示されている期間では、7 個のトランザクションのうち 5 個だけが成功しています。 このアプローチでの問題は、修正されたしきい値です。もし、後でしきい値を変更したい場合にはどうしますか? このような場合には、Raw データを再読み込みし、新しいしきい値に対するアダプタでテストする必要があります。

したがって、アダプタは、重要なデータを失わずに柔軟な方法でトランザクション データを最適に集約する必要があります。

制約のあるソリューションでは、アダプタで、いくつかのしきい値に対してトランザクションをテストします。 このテストを行うには、以下の 2 つの方法があります。

これらの 2 つのオプションには同じ問題があります。つまり、しきい値は将来的に、あらかじめ定義された小さな値セット内でしか変更できないということです。

推奨されるソリューション

前提: 考えられるすべてのしきい値は、特定の値の倍数とします。 たとえば、すべてのしきい値(ミリ秒)は 250 の倍数となっており、つまり 0、250、500、1750 および 3000 ミリ秒はすべて有効なしきい値です。

この前提に基づくと、推奨されるソリューションは、すべての値を公倍数の概数で表し、概数化されたそれぞれの値に何個の値が該当するかをカウントすることによって、トランザクションを集約することです。 Event Type = {RangeFrom, RangeTo, TransactionCount}

たとえば、上記に表示されるデータを集約するために以下のイベントが生成されます。ここで公倍数は 250 ミリ秒です。

{1,     250,    2}
{251,   500,    3}
{501,   750,    1}
{751,  1000,   1}

コメント

それらのイベントのタイム スタンプは同じになります(たとえば、集約されたすべてのイベントは 1/1/2007 00:00 に発生する可能性があり、1 時間ごとに集約すると仮定すると、1/1/2007 01:00 に次回のサンプルについて、もうひとつのイベント セットが存在する可能性があります)。

RangeTo は、トランザクションを公倍数の概数にすることによって計算されます(以下を参照してください)。

RangeFrom は、RangeTo から倍数を減算し、1 を加えた値です。 これは明確さの理由のみで指定するもので、省略することもできます。

例: 1 時間ごとの集約は以下のように示されます(MULTIPLE を倍数の値に置き換えます)。

select  trunc (time_stamp, 'hh') "TimeStamp",
        round (response_time/MULTIPLE, 0)*MULTIPLE-MULTIPLE+1 "RangeFrom",
        round (response_time/MULTIPLE, 0)*MULTIPLE "RangeTo",
        count (*) "TransactionCount"
from    t_log
group by trunc (time_stamp, 'hh'),
        round (response_time/MULTIPLE, 0)*MULTIPLE

ビジネス ロジックでは、イベントに対して以下の条件が適用されることがあります。

If eventDetails("RangeTo")<=Threshold Then
	SuccessfulTransactions=SuccessfulTransactions+eventDetails("TransactionCount")
End If

最終的な洞察: