Getting Started
If you haven't already installed the package to enable performance monitoring when you set up your SDK, you'll need to install the package separately as documented on this page.
Performance monitoring augments your existing error data by capturing interactions among your software systems.
Customers on legacy plans must add transaction events to their subscription in order to access our performance monitoring features. For general questions about performance monitoring with Sentry and for information about how you can add transactions to your plan, please contact support@sentry.io. To start a performance monitoring trial and for information on volume pricing, please contact sales@sentry.io.
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:
# Using yarn
yarn add @sentry/tracing
# Using npm
npm install @sentry/tracing
Configure
Enable performance monitoring in your app by either:
- Setting a uniform sample rate for all transactions using the
tracesSampleRate
option in your SDK config to a number between0
and1
. (For example, to send 20% of transactions, settracesSampleRate
to0.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.
// 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 instrumenation 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.
- Package:
- npm:@sentry/browser
- Version:
- 5.29.0
- Repository:
- https://github.com/getsentry/sentry-javascript