Overview
The invocation sequence sensor type is a container sensor that collects data from all other sensors being invoked by the method (and sub-methods) the invocation sequence sensor is defined on. The invocation sequence sensor thereby collects the exact order of the sensors being invoked and does not (like most other sensors) aggregate information. Thus the invocation sequence sensor can provide the exact traversal of all methods (and timings if timer sensors are defined) of a certain method.
Description
This sensor works quite different than all other ones as only the entry method of the invocation sequence sensor is specified.
The invocation sequence sensor will collect the detailed data (no aggregation is done) of all sensors being defined within the specified method (and all submethods). Even if sensor of a method called within the invocation sequence will normally provide an aggregated value, this sensor will be stored with the concrete data that was recorded during this invocation. Thus for each invocation, the data each sensor provides is captured, allowing the user to inspect each invocation independently of all other invocations.
Note that the invocation sequence is not only applicable to timer information (although this might be the most important information), but captures the values of all sensors. Thus the invocation sequence also automatically provides information about SQL statements being executed (in the case that the SQL sensor is enabled) or of an Exception Sensor. The invocation sequence sensor is capable of capturing all information that all possible sensors provide.
It goes without saying that an invocation sequence sensor set on a method having no other sensors defined either directly or within its submethods will not provide any values at all. (except the information that the invocation was started and ended sometime, thus it will be displayed in the invocation sequence view in the UI)
Application area
The invocation sequence sensor can be used for example in the following application areas:
- Methods that perform slow infrequently as the invocation sequence sensor will provide all invocations independent of each other and thus allows the user to find the slow running method invocation.
- It is useful to see how a call traverses a (sub-)system in order to find problems and bugs or to verify the correct behavior.
- Inspecting the method flow during development
- inspecting if a defined architecture is really used by the developers
Configuration
Definition of the method sensor type
The method sensor type definition is necessary to specify that a certain sensor is available to inspectIT. Based on this configuration the concrete methods that should be monitored using the invocation sequence tracer can be specified.
method-sensor-type isequence info.novatec.inspectit.agent.sensor.method.invocationsequence.InvocationSequenceSensor INVOC
Compared to other method sensor types, the INVOC priority is mandatory here and reserved for an invocation sequence sensor.
Associating a method with an invocation sequence
The association of a method with the invocation sequence sensor can be done like with all other method sensor definitions (see the Agent Configuration for the concrete documentation on the possibilities of setting method sensors).
sensor isequence info.novatec.inspectitsamples.calculator.Calculator actionPerformed
Sensor specific options
The invocation sequence sensor provides the following sensor specific options
Option | Description | Type | Example |
---|---|---|---|
minduration | define the minimum time an invocation has to consume in order to be saved and transmitted to the server. This helps in reducing the data load from the Agent to the CMR and is a good filter for not so important invocations | optional | sensor isequence novatec.SubTest msg(int) [INSPECTIT16:name] minduration=10.0 |
Example
method-sensor-type timer info.novatec.inspectit.agent.sensor.method.timer.TimerSensor MAX mode=aggregated method-sensor-type isequence info.novatec.inspectit.agent.sensor.method.invocationsequence.InvocationSequenceSensor INVOC sensor isequence info.novatec.inspectitsamples.calculator.Calculator actionPerformed sensor timer * *
What will inspectIT do with this configuration:
- The actionPerformed method is defined as the starting point of the invocation sequence sensor, thus everytime this method is called, it will record a trace
- The timer sensor type is instrumented in the whole application (this is only due to understand the system better, it is never good to instrument everything!)
- Every time the invocation sensor is started, all timer measurements are stored in this context so that the relation between the measurements and the invocation can be reconstructed in the user interface
String length
from version 1.3
This sensor enables the limitations of the string values collected. The invocation sensor concretely can limit the maximum size of the strings collected as context parameters. The following definition will, for example, limit all the strings collected by the sensor to 500 characters:
method-sensor-type isequence info.novatec.inspectit.agent.sensor.method.invocationsequence.InvocationSequenceSensor INVOC stringLength=500
You can read more about string length limitations on Sensor type definition page.