# Set Up Tracing | Sentry for Google Cloud Functions

With [tracing](https://docs.sentry.io/product/insights/overview.md), Sentry automatically tracks your software performance across your application services, measuring metrics like throughput and latency, and displaying the impact of errors across multiple systems.

If you’re adopting Tracing in a high-throughput environment, we recommend testing prior to deployment to ensure that your service’s performance characteristics maintain expectations.

Sentry can integrate with **OpenTelemetry**. You can find more information about it [here](https://docs.sentry.io/platforms/javascript/guides/gcp-functions/opentelemetry.md).

## [Configure](https://docs.sentry.io/platforms/javascript/guides/gcp-functions/tracing.md#configure)

Enable tracing by setting the sample rate for your traces.

`instrument.js`

```javascript
const Sentry = require("@sentry/node");

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

  // Add Tracing by setting tracesSampleRate
  // We recommend adjusting this value in production

  tracesSampleRate: 1.0,


  // Alternatively, to control sampling dynamically

  // tracesSampler: samplingContext => { /* ... */ }

});
```

* You can establish a uniform sample rate for all transactions by setting 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`.)
* For more granular control over sampling, you can set the sample rate based on the transaction itself and the context in which it's captured, by providing a function to the `tracesSampler` config option.

The two options are mutually exclusive. If both are set, `tracesSampler` will take precedence.

You can find more in-depth explanations and examples about sampling configuration in [Configure Sampling](https://docs.sentry.io/platforms/javascript/guides/gcp-functions/tracing/configure-sampling.md).

## [Distributed Tracing](https://docs.sentry.io/platforms/javascript/guides/gcp-functions/tracing.md#distributed-tracing)

Sentry captures distributed traces consisting of transactions and spans, which measure individual services and individual operations within those services, respectively. Learn more about our model in [Distributed Tracing](https://docs.sentry.io/product/sentry-basics/tracing/distributed-tracing.md).

## [Verify](https://docs.sentry.io/platforms/javascript/guides/gcp-functions/tracing.md#verify)

While you're testing, set `tracesSampleRate` to `1.0`, as that ensures that every transaction will be sent to Sentry. Once testing is complete, you may want to set a lower `tracesSampleRate` value, or switch to using `tracesSampler` to selectively sample and filter your transactions, based on contextual data.

If you leave your sample rate at `1.0`, a transaction will be sent every time a user loads a page or navigates within your app. Depending on the amount of traffic your application gets, this may mean a lot of transactions. If you have a high-load, backend application, you may want to consider setting a lower `tracesSampleRate` value, or switching to using `tracesSampler` to selectively sample and filter your transactions, based on contextual data.

## [Automatic Instrumentation](https://docs.sentry.io/platforms/javascript/guides/gcp-functions/tracing.md#automatic-instrumentation)

See [Automatic Instrumentation](https://docs.sentry.io/platforms/javascript/guides/gcp-functions/tracing/instrumentation/automatic-instrumentation.md) to learn about all the things that the SDK automatically instruments for you.

## [Custom Instrumentation](https://docs.sentry.io/platforms/javascript/guides/gcp-functions/tracing.md#custom-instrumentation)

You can also manually start spans to instrument specific parts of your code. This is useful when you want to measure the performance of a specific operation or function.

* [Tracing APIs](https://docs.sentry.io/platforms/javascript/guides/gcp-functions/apis.md#tracing): Find information about APIs for custom tracing instrumentation
* [Instrumentation](https://docs.sentry.io/platforms/javascript/guides/gcp-functions/tracing/instrumentation.md): Find information about manual instrumentation with the Sentry SDK
* [Sending Span Metrics](https://docs.sentry.io/platforms/javascript/guides/gcp-functions/tracing/span-metrics.md): Learn how to capture metrics on your spans

## [Disabling Tracing](https://docs.sentry.io/platforms/javascript/guides/gcp-functions/tracing.md#disabling-tracing)

If you want to disable tracing, you *should not* set `tracesSampleRate` at all. Setting it to `0` will not disable tracing, it will simply never send any traces to Sentry. Instead, neither `tracesSampleRate` nor `tracesSampler` should be defined in your SDK config to fully disable tracing.

## [Next Steps](https://docs.sentry.io/platforms/javascript/guides/gcp-functions/tracing.md#next-steps)

* #### [Sending Span Metrics](https://docs.sentry.io/platforms/javascript/guides/gcp-functions/tracing/span-metrics.md)

  Learn how to add attributes to spans to monitor performance and debug applications

* #### [Set Up Distributed Tracing](https://docs.sentry.io/platforms/javascript/guides/gcp-functions/tracing/distributed-tracing.md)

  Learn how to connect events across applications/services.

* #### [Configure Sampling](https://docs.sentry.io/platforms/javascript/guides/gcp-functions/tracing/configure-sampling.md)

  Learn how to configure sampling in your app.

* #### [Instrumentation](https://docs.sentry.io/platforms/javascript/guides/gcp-functions/tracing/instrumentation.md)

  Learn how to configure spans to capture trace data on any action in your app.

* #### [Troubleshooting](https://docs.sentry.io/platforms/javascript/guides/gcp-functions/tracing/troubleshooting.md)

  Learn how to troubleshoot your tracing setup.
