上一主题: 跳过指令下一主题: 应用 ProbeBuilder 指令


组合自定义跟踪器

您可以使用影响同一度量标准的多个跟踪器,实际上就是将这些跟踪器组合在一起。 这是增量器和减量器最常使用的方法。

本示例创建了一个名为 Logged-in Users 的度量标准。 使用类 user 以及方法 loginlogout 创建以下跟踪器:

TraceOneMethodOfClass user login MethodTraceIncrementor "Logged-in Users"
TraceOneMethodOfClass user logout MethodTraceDecrementor "Logged-in Users"

当有人登录时,会增加 Logged-in Users 度量标准,当有人注销时,会减少 Logged-in Users 度量标准。

有关特定跟踪器的注意事项

以下标识符和跟踪器执行特定于 .NET 环境的操作:

注意:使用此标识符时,Introscope .NET 代理不会跟踪继承的属性,但跟踪应用到基类的属性。

显式接口实施

.NET 代理在 .pbd 文件中使用显式接口实施。 如果您要跟踪的类的方法与其他类的其他方法具有相同的名称,则必须明确命名该方法以及该方法所属的接口。 例如,如果 InterfaceAInterfaceB 都有一个名为 MethodX 的方法,在调用 InterfaceAMethodX 时,必须同时命名接口和方法:InterfaceA.MethodX

以下是跟踪类的方法(具有显式接口实施)的示例:

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

检测和继承

Introscope 不会自动检测类层次结构中级别较深的类。 例如,假定在类层次结构中,ClassB 扩展了 ClassAClassC 扩展了 ClassB,如下所示:

Interface\ClassA
ClassB
ClassC

当您检测 ClassA 时,也会检测 ClassB,因为它明确扩展了 ClassA。 但是,Introscope 不会检测 ClassC,因为 ClassC 未明确扩展 ClassA。 要检测 ClassC,必须明确识别 ClassC