Getting Started

Performance monitoring augments your existing error data by capturing interactions among your software systems.

With performance monitoring, Sentry tracks your software performance, measuring metrics like throughput and latency, and displaying the impact of errors across multiple systems.

Once tracing is enabled, certain types of operations are measured automatically in suported SDKs. To learn more, see Automatic Instrumentation.

You can choose to manually measure any operation. To learn more, see Manual Instrumentation.

By monitoring the performance of your application, you can see how latency in one service may affect another service to pinpoint exactly which parts of a given operation may be responsible. To do this, Sentry 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.

Install

Install the tracing package:

Copied
# Using yarn
yarn add @sentry/tracing

# Using npm
npm install @sentry/tracing

Configure

Enable performance monitoring in your app by either:

  1. Setting a uniform sample rate for all transactions using the tracesSampleRate option in your SDK config to a number between 0 and 1. (For example, to send 20% of transactions, set tracesSampleRate to 0.2.)
  2. Controlling the sample rate dynamically, based on the transaction itself and the context in which it's captured, by providing a function to the tracesSampler config option.
Copied
// If you're using one of our integration packages, like `@sentry/react` or
// `@sentry/angular`, substitute its name for `@sentry/browser` here
import * as Sentry from "@sentry/browser";

// If taking advantage of automatic instrumentation (highly recommended)
import { Integrations as TracingIntegrations } from "@sentry/tracing";
// Or, if only manually tracing
// import * as _ from "@sentry/tracing"
// Note: You MUST import the package in some way for tracing to work

Sentry.init({
  dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",

  // This enables automatic instrumentation (highly recommended), but is not
  // necessary for purely manual usage
  integrations: [new TracingIntegrations.BrowserTracing()],

  // To set a uniform sample rate
  tracesSampleRate: 0.2

  // Alternatively, to control sampling dynamically
  tracesSampler: samplingContext => { ... }
});

If either of these options is set, tracing will be enabled in your app. While these options are meant to be mutually exclusive, if you do set both, tracesSampler will take precedence. You can learn more about how they work in Sampling Transactions.

Verify

When you first enable tracing, verify it is working correctly by setting tracesSampleRate to 1.0 as that ensures that every transaction will be sent to Sentry.

Once testing is complete, we recommend lowering this value in production by either lowering your tracesSampleRate value, or switching to using tracesSampler to dynamically sample and filter your transactions.

Without sampling, our automatic instrumentation will send a transaction any time any user loads any page or navigates anywhere in your app. That's a lot of transactions! Sampling enables representative data without overwhelming either your system or your Sentry transaction quota.

You can edit this page on GitHub.