同じメトリックに影響を及ぼす複数のトレーサを実質的に結合して使用できます。 結合は、増分および減分のトレーサで最もよく使用されます。
以下の例は、「Logged-in Users」という名前のメトリックを作成します。 クラス「user」、メソッド「login」および「logout」を使用して、以下のトレーサを作成します。
TraceOneMethodOfClass user login MethodTraceIncrementor "Logged-in Users" TraceOneMethodOfClass user logout MethodTraceDecrementor "Logged-in Users"
これは、任意のユーザがログインしたときにメトリック「Logged-in Users」を増分し、ログアウトしたときに「Logged-in Users」を減分します。
以下の識別子とトレーサは、.NET 環境に特有の動作をします。
指定の属性クラスの注釈が付けられたクラスをすべて指定のトレーサ グループに関連付けます。
一部のクラスには、属性クラスの注釈を付けてクラスに追加機能を持たせることができます。 以下の例では、System.EnterpriseServices.Transaction という属性クラスがクラス ServicedComponent に付加されています。
[Transaction]
Public class ServicedComponent {
}
.pbd ファイルでは以下のように記述します。
IdentifyAnnotatedClassAs: System.EnterpriseServices.Transaction MyTracerGroup
これにより、[Transaction] の注釈があるクラスがすべて、ServicedComponent も含め、識別されます。
注: この識別子を使用した場合、Introscope .NET Agent では継承された属性は追跡されませんが、ベース クラスに適用された属性は追跡されます。
指定のトレーサ グループに関連付けられているクラスについて、指定のクラスにより注釈を付けられているメソッドをすべて追跡します。
.NET Agent では、.pbd ファイルによる明示的なインターフェースの実装が使用されます。 あるクラスのメソッドを追跡する場合に、そのメソッド名が、他のクラスで使用される他のメソッドと同じ場合は、追跡するメソッドとそのメソッドが所属するインターフェースを明示的に指定する必要があります。 たとえば、InterfaceA と InterfaceB の両方に MethodX というメソッドがある場合、InterfaceA の MethodX を呼び出すには、 InterfaceA.MethodX のようにインターフェースとメソッドの両方を指定する必要があります。
以下に、明示的なインターフェースの実装を使用して、あるクラスのメソッドを追跡する例を示します。
SetFlag: customInterfaceTracing
TurnOn: customInterfaceTracing
IdentifyInheritedAs: EdgeCaseInterface customInterfaceTracing
TraceOneMethodIfFlagged: customInterfaceTracing EdgeCaseInterface.method2 BlamePointTracer "Interface|{namespaceandclassname}|{method}"
Introscope では、クラス階層の下位レベルのクラスは自動的にはインスツルメントされません。 たとえば、ClassB が ClassA を、ClassC が ClassB を継承するといったようなクラス階層があるとします。
Interface¥ClassA
ClassB
ClassC
ClassA をインスツルメントすると、ClassA を明示的に継承する ClassB もインスツルメントされます。 しかし、ClassC はインスツルメントされません。これは、ClassC が ClassA を明示的に拡張しないためです。 ClassC をインスツルメントするには、明示的に ClassC を識別する必要があります。
|
Copyright © 2013 CA.
All rights reserved.
|
|