Remote sensors

Overview

Remote sensors provide information about the remote calls made in an application. These sensors enable tracking of the remote calls and combing interactions between JVMs in a single trace. There are two types of remote sensors: server and client. Client-side remote sensor start a new tracing span before making an outgoing request and propagate the new span identification along with that request. Server-side implementations first extract a span identification from an incoming request and continuing or starting a trace from that point. Note that in remote communication one JVM can usually stand as both server (receiving requests) and client (making requests to another JVM/component).

The sensors gather basic information about each remote call and measure it's duration, but in addition enrich the request with inspectIT tracing IDs, so that correlation can be done. For each supporting technology and library, there is a dedicated remote sensor. The correct configuration of the remote sensors is provided as part of the Common profiles and the users should use only Remote Manual Server Sensor to mark custom methods that represent start of the server side spans.

Remote sensors internally use the inspectIT implementation of the opentracing.io API.

Available remote sensors

The following table provides all currently available remote sensors

Remote Sensor

Type

Technology

Library / FrameworkDescription
Remote Apache HTTP Client SensorClientHTTPApache HttpComponents Client (version 4.x)Intercepts client requests made with Apache HTTP Client. Compatible with all 4.x versions.
Remote Async Apache HTTP Client SensorClientHTTPApache HttpComponents Async Client (version 4.x)Intercepts client requests made with Apache HTTP Async Client. Compatible with versions 4.x.

Remote HTTP Java Server Sensor

ServerHTTPJava Servlet API (version 2.x & up)Intercepts server requests served with Java Servlet API.
Remote Jetty HTTP Client SensorClientHTTPJetty Http Client (versions 6.x, 7.x & 8.x)Intercepts client requests made with Jetty HTTP Client. Compatible with versions 6.x, 7.x & 8.x. Not compatible with latest versions of Jetty Client.
Remote JMS Listener Server SensorServerJMSJava Message Service API (version 1.x & up)Intercepts JMS message receiving via Message Listener.
Remote JMS Client SensorClientJMSJava Message Service API (version 1.x & up)Intercepts JMS message sending via Message Producer.
Remote Spring Template Client SensorClientHTTPSpring Template (version 3.x & 4.x)Intercepts client requests made with Spring RestTemplate wrapper. Helpful if you use Spring RestTemplate with a Netty, OkHttp or Async Apache HTTP client as underlying request factory.
Remote URL Connection Client SensorClientHTTPJava URL Connection (Java 6+)Intercepts client requests made with Java URL connection. Independent of Java version used.
Remote Manual Server SensorServer--Intercepts server requests independent of technology and library/framework. Useful to mark custom trace start points, for example at the begging of the batch job.

Supporting Sensors

The following table provides an overview of sensors which purpose is supporting the functionality of another sensor. In most cases, the individual usage of these sensors will not make any sense.

SensorSupported SensorDescription
Apache Client Exchange Handler SensorRemote Async Apache HTTP Client SensorIntercepts the exchange handler of the Apache HTTP Async Client in order to correctly start a tracing span. Without this sensor, the collected spans will not have any timings.