Performance Monitoring
Note
Sentry allows you to monitor the performance of your application, showing you how latency in one service may affect another service, and letting you pinpoint exactly which parts of a given operation may be responsible. To do this, it captures distributed traces consisting of transactions and spans, which measure individual services and individual operations within those services, respectively. You can learn more about this model in our Distributed Tracing docs.
Enabling Tracing
To get started automatically sending traces you must enable tracing in application.properties
:
sentry.enable-tracing=true
Next, you must choose one of two options to configure sampling:
- Set a uniform sample rate for all transactions, by setting the
traces-sample-rate
option in your SDK config to a number between0
and1
. (For example, to send 20% of transactions, settraces-sample-rate
to0.2
.) - Control the sample rate dynamically, based on the transaction itself and the context in which it's captured, by providing a function to the
traces-sampler
config option.
Or alternatively:
Configure sample rate in application.properties
or application.yml
file:
sentry.traces-sample-rate=0.3
Or through providing a bean of type SentryOptions#TracesSamplerCallback
:
@Component
class CustomTracesSamplerCallback {
@Override
public @NotNull Double sample(@NotNull SamplingContext samplingContext) {
// return a number between 0 and 1
}
}
If either of these options is set, tracing will be enabled in your app, and transactions will start getting captured automatically. (The two options are meant to be mutually exclusive, but if you do set both, traces-sampler
will take precedence.)
As you're getting tracing set up, we recommend setting traces-sample-rate
to 1
, so all created transactions are sent to Sentry. Once you're done with testing, though, you'll probably want to consider either lowering your traces-sample-rate
value, or switching to traces-sampler
, which will allow you to set the sample rate individually for each transaction. Without sampling, automatically-captured transactions can add up quickly. (The Spring Boot integration, for example, will send a transaction for every request made to the server.) Sampling allows you to send representative data without overwhelming either your system or your Sentry transaction quota.
You can learn more about the traces-sample-rate
and traces-sampler
options in Sampling Transactions.