Return to list

Instrumentation | {{heading}}

Limited functionality since agent is not currently connected
What method(s) to instrument
This is required.
The class or interface containing the method(s) to instrument.
This is required.
The method(s) to instrument. All overriding methods will also be instrumented (including all implementations of the method if the class above is an interface).
The wildcard * is supported anywhere in the method name. Multiple method names (including multiple method names with the wildcard * in them) can be listed with the | separator between them.
Method signature
Only the method name and parameter types are used when evaluating what to instrument (the return type and access modifiers are ignored).
What to capture
What to capture
A transaction defines the capture point boundary for a new request or background operation.
A trace entry is a timer plus it captures a message on each invocation of the above method(s) to produce the data in the trace entries section when viewing an individual trace.
A timer captures the total time and count of the above method(s) to produce the data in the breakdown section on the average response time page, and the data in the breakdown section when viewing an individual trace (on the slow traces or error traces pages).
The transaction type is used for aggregation and filtering.
This can be one of the current transaction types ({{agentRollup.transactionTypes.join(', ')}}) or a new transaction type.
The transaction name is used for aggregation and filtering.
This is a template which can be populated with values from the method invocation. The same rules apply as for the trace headline (see below), except that the return value {{_}} cannot be used.
This is a template which can be populated with values from the method invocation:
  • {{0}}, {{1}}, ... resolve to the method parameters
  • {{this}} resolves to the object that the method is invoked on (except for static methods)
  • {{_}} resolves to the return value (if not void)
  • {{methodName}} resolves to the method name, which can be useful if * or | are used to define the method name above
Nested paths are resolved as well, e.g. {{0.size}} and {{this.class.name}}. If a path resolves to null at any point, then the entire path will resolve to null. The final resolved value is rendered into the template using String.valueOf() . If the final resolved value is a byte array, it will be rendered as hex, or you can specify a charset to decode it, e.g. {{0.someBytes|charset:UTF-8}} or {{0.someBytes|charset:default}} to use the default (platform) charset.
Multiple instrumentation definitions can share the same timer name, in which case their timers are aggregated together.
What to do if already in a transaction
Any trace entry that exceeds this threshold will have a stack trace captured and attached to it in order to help identify the source of this trace entry. Empty means never capture a stack trace for this trace entry.
If checked, and this custom instrumentation is encountered beneath itself or beneath another pointcut that shares the same timer name, a nested trace entry will be captured. This can sometimes lead to a lot of extra noise, e.g. in a fairly common case where the custom instrumentation matches several overloaded methods that cascade to each other.
Optional transaction overrides
The transaction type is used for aggregation and filtering.
This can be one of the current transaction types ({{agentRollup.transactionTypes.join(', ')}}) or a new transaction type.
The value provided will override the transaction type for the containing transaction. If the transaction type is overridden more than once for a given transaction, the first non-null/non-empty value will be used.
The transaction name is used for aggregation and filtering.
The value provided will override the transaction name for the containing transaction. If the transaction name is overridden more than once for a given transaction, the first non-null/non-empty value will be used.
This is a template which can be populated with values from the method invocation:
  • {{0}}, {{1}}, ... resolve to the method parameters
  • {{this}} resolves to the object that the method is invoked on (except for static methods)
  • {{methodName}} resolves to the method name, which can be useful if * or | are used to define the method name above
Nested paths are resolved as well, e.g. {{0.size}} and {{this.class.name}}. If a path resolves to null at any point, then the entire path will resolve to null. The final resolved value is rendered into the template using String.valueOf() . If the final resolved value is a byte array, it will be rendered as hex, or you can specify a charset to decode it, e.g. {{0.someBytes|charset:UTF-8}} or {{0.someBytes|charset:default}} to use the default (platform) charset.
This will override the slow threshold for the containing transaction. The value can be smaller than the global slow threshold to force slow transaction traces to be stored more often, or larger to force slow transaction traces to be stored less often. If the slow threshold is overridden more than once for a given transaction, the smallest override value will be used.