前のトピック: Skip ディレクティブ次のトピック: ProbeBuilder ディレクティブの適用


カスタム トレーサの結合

同じメトリックに影響を及ぼす複数のトレーサを実質的に結合して使用できます。 結合は、増分および減分のトレーサで最もよく使用されます。

以下の例は、「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 環境に特有の動作をします。

注: この識別子を使用した場合、Introscope .NET Agent では継承された属性は追跡されませんが、ベース クラスに適用された属性は追跡されます。

明示的なインターフェースの実装

.NET Agent では、.pbd ファイルによる明示的なインターフェースの実装が使用されます。 あるクラスのメソッドを追跡する場合に、そのメソッド名が、他のクラスで使用される他のメソッドと同じ場合は、追跡するメソッドとそのメソッドが所属するインターフェースを明示的に指定する必要があります。 たとえば、InterfaceAInterfaceB の両方に MethodX というメソッドがある場合、InterfaceAMethodX を呼び出すには、 InterfaceA.MethodX のようにインターフェースとメソッドの両方を指定する必要があります。

以下に、明示的なインターフェースの実装を使用して、あるクラスのメソッドを追跡する例を示します。

SetFlag: customInterfaceTracing
TurnOn: customInterfaceTracing
IdentifyInheritedAs: EdgeCaseInterface customInterfaceTracing
TraceOneMethodIfFlagged: customInterfaceTracing EdgeCaseInterface.method2 BlamePointTracer "Interface|{namespaceandclassname}|{method}"

インスツルメントおよび継承

Introscope では、クラス階層の下位レベルのクラスは自動的にはインスツルメントされません。 たとえば、ClassBClassA を、ClassCClassB を継承するといったようなクラス階層があるとします。

Interface¥ClassA
ClassB
ClassC

ClassA をインスツルメントすると、ClassA を明示的に継承する ClassB もインスツルメントされます。 しかし、ClassCインスツルメントされません。これは、ClassCClassA を明示的に拡張しないためです。 ClassC をインスツルメントするには、明示的に ClassC を識別する必要があります。