From f66f42541ab059d96ba8f8c252a9e3dbc4a2acfe Mon Sep 17 00:00:00 2001 From: Gabriel Lopes Date: Thu, 21 Nov 2024 17:51:11 -0800 Subject: [PATCH 01/11] add distributed tracing docs for uptime --- .../img/uptime-allow-sampling.png | Bin 0 -> 87854 bytes .../uptime-monitoring/troubleshooting.mdx | 2 +- .../uptime-monitoring/uptime-tracing.mdx | 107 ++++++++++++++++++ 3 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 docs/product/alerts/uptime-monitoring/img/uptime-allow-sampling.png create mode 100644 docs/product/alerts/uptime-monitoring/uptime-tracing.mdx diff --git a/docs/product/alerts/uptime-monitoring/img/uptime-allow-sampling.png b/docs/product/alerts/uptime-monitoring/img/uptime-allow-sampling.png new file mode 100644 index 0000000000000000000000000000000000000000..ec731e40bc8b02425bd67e5f38d28754b826d15a GIT binary patch literal 87854 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 a`{3A0d$hSGtW!x~ut literal 0 HcmV?d00001 diff --git a/docs/product/alerts/uptime-monitoring/troubleshooting.mdx b/docs/product/alerts/uptime-monitoring/troubleshooting.mdx index ad3fa40361c680..26b446512118a9 100644 --- a/docs/product/alerts/uptime-monitoring/troubleshooting.mdx +++ b/docs/product/alerts/uptime-monitoring/troubleshooting.mdx @@ -1,6 +1,6 @@ --- title: Troubleshooting -sidebar_order: 52 +sidebar_order: 53 description: "Learn how to troubleshoot potential Uptime Monitoring problems." --- diff --git a/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx b/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx new file mode 100644 index 00000000000000..7662c6580b1ee8 --- /dev/null +++ b/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx @@ -0,0 +1,107 @@ +--- +title: Distributed Tracing with Uptime +sidebar_order: 52 +description: "Learn how to leverage distributed tracing to troubleshoot downtime efficiently." +--- + +Sentry's Uptime Monitoring provides a connected view of related errors and spans during uptime checks by capturing the timing and flow of requests and operations through [distributed tracing](/product/tracing/#whats-distributed-tracing). This feature is a valuable triaging tool, enabling you to identify the root cause of downtime more quickly. + +Distributed tracing for related errors during an uptime check is automatically enabled for all Uptime Alerts. However, tracing spans is disabled by default and can be enabled by configuring the sampling behavior for an uptime check. + +## How Uptime Tracing Works + +Sentry Uptime Tracing automatically appends a `sentry-trace` header to every outgoing request made to the configured URL in your Uptime Alert settings. This header propagates trace information. + +If the application handling the incoming uptime check request is configured with one of Sentry's supported backend SDKs, the SDK will use the header to continue the trace. Learn more about [how distributed tracing works](/product/tracing/). + +Here's an example of an outgoing Uptime check request: + +```HTTP +GET /example-uptime-endpoint HTTP/1.1 +Host: sentry.io +User-Agent: SentryUptimeBot/1.0 (+http://docs.sentry.io/product/alerts/uptime-monitoring/) +Sentry-Trace: 32d4011600324838afcd666edadc1d09-8d5ca7419a02ca36 +``` + +## Tracing Errors + +Tracing errors during uptime checks is enabled by default. When downtime is detected, a new [Uptime Issue](/product/issues/issue-details/uptime-issues/) is created, allowing you to use the trace explorer to view any related errors. + +Sentry automatically adds a `sentry-trace` header to every outgoing uptime check request. The SDK continues the trace and captures errors within the trace context. + + + +Uptime check requests do not override your SDK's error sampling rate. If your SDK’s error sample rate is set below 1, some errors from uptime check requests may not appear in the trace. + + + +### Disabling Uptime Tracing of Errors + +To disable error tracing for uptime checks, configure a [before send](/platform-redirect/?next=/configuration/filtering/) filter in your SDK to ignore errors from Sentry's `User-Agent`. Here's an example: + +```typescript {tabTitle: Node.js Express} {filename: instrument.mjs} +import * as Sentry from "@sentry/node"; + +Sentry.init({ + dsn: "___PUBLIC_DSN___", + // Filtering example for a Node.js Express app + beforeSend(event) { + const userAgent = event.request?.headers?.["user-agent"]; + + // Ignore events captured in a request from SentryUptimeBot + if (userAgent && userAgent.includes("SentryUptimeBot")) { + return null; + } + + // Process other events + return event; + }, +}); +``` + +## Tracing Spans + +By default, uptime tracing for spans is disabled. Enabling span tracing provides a detailed view of the timing and flow of requests and operations during uptime checks, which is especially useful for diagnosing timeouts or performance issues. + +### Enabling Uptime Tracing of Spans + +To enable span tracing, modify your Uptime Alert settings to allow sampling by enabling the "Allow Sampling" option: + +![Uptime Alert Allow Sampling Configuration](./img/uptime-allow-sampling.png) + +When sampling is allowed, Sentry defers the sampling decision to your SDK, which follows the trace sample rate configured in your SDK. + + + +Uptime check requests do not override your SDK's trace sampling rate. If your SDK's trace sample rate is set below 1, some spans from uptime check requests may not appear in the trace. + + + +To ensure all spans from uptime checks are sampled, even if your SDK's trace sampling rate is below 1, you can configure a [sampling function](/platform-redirect/?next=/configuration/sampling/). Here's an example: + +```typescript {tabTitle: Node.js Express} {filename: instrument.mjs} +import * as Sentry from "@sentry/node"; + +Sentry.init({ + dsn: "___PUBLIC_DSN___", + // Custom tracer function for a Node.js Express app + tracesSampler: ({ name, attributes, parentSampled }) => { + const userAgent = attributes?.["http.user_agent"]; + + if ( + typeof userAgent === "string" && + userAgent.includes("SentryUptimeBot") + ) { + // Sample 100% of spans from SentryUptimeBot + return 1; + } + + // Sample 50% of other spans + return 0.5; + }, +}); +``` + +## Billing Considerations + +Captured errors and spans from uptime check requests are billed as regular events in Sentry. From a41bc0e250b297c99a0d59a9d62fbe757037396b Mon Sep 17 00:00:00 2001 From: Gabriel Lopes Date: Thu, 21 Nov 2024 17:55:07 -0800 Subject: [PATCH 02/11] Add 'Allow Sampling' option for uptime alert configuration doc --- docs/product/alerts/create-alerts/uptime-alert-config.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/product/alerts/create-alerts/uptime-alert-config.mdx b/docs/product/alerts/create-alerts/uptime-alert-config.mdx index a4a1bc12699447..8f98d115616ce7 100644 --- a/docs/product/alerts/create-alerts/uptime-alert-config.mdx +++ b/docs/product/alerts/create-alerts/uptime-alert-config.mdx @@ -26,6 +26,7 @@ Configure how Sentry should execute an HTTP uptime check, by specifying: - **Method**: The request method used to execute the uptime check. Available options are `GET`, `POST`, `HEAD`, `PUT`, `DELETE`, `PATCH`, and `OPTIONS`. - **Headers**: The request headers included in the uptime check request. - **Body**: The body message to include in the uptime check request. (This is only available when the method is set to `POST`, `PUT`, and `PATCH`.) +- **Allow Sampling**: Enable this option to defer to the Sentry SDK how to sample spans in the request. See [distributed tracing with uptime](/product/alerts/uptime-monitoring/uptime-tracing/) for additional information. Make sure to include a `Content-Type` header in your headers configuration in case the specified URL requires it. For example, a JSON message body would have a `Content-Type` header of `application/json`. From 893188a2f440c235dbbd74a286e939b8fc149b8c Mon Sep 17 00:00:00 2001 From: Gabriel Lopes Date: Thu, 21 Nov 2024 18:03:56 -0800 Subject: [PATCH 03/11] remove duplicated uptime sentry trace paragraph --- docs/product/alerts/uptime-monitoring/uptime-tracing.mdx | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx b/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx index 7662c6580b1ee8..3f3011efa44236 100644 --- a/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx +++ b/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx @@ -27,8 +27,6 @@ Sentry-Trace: 32d4011600324838afcd666edadc1d09-8d5ca7419a02ca36 Tracing errors during uptime checks is enabled by default. When downtime is detected, a new [Uptime Issue](/product/issues/issue-details/uptime-issues/) is created, allowing you to use the trace explorer to view any related errors. -Sentry automatically adds a `sentry-trace` header to every outgoing uptime check request. The SDK continues the trace and captures errors within the trace context. - Uptime check requests do not override your SDK's error sampling rate. If your SDK’s error sample rate is set below 1, some errors from uptime check requests may not appear in the trace. From 8fd99c12e2a5b804d5a15bbe9a9f5d4fa589e26a Mon Sep 17 00:00:00 2001 From: Liza Mock Date: Fri, 22 Nov 2024 17:04:41 -0800 Subject: [PATCH 04/11] language suggestions --- .../uptime-monitoring/uptime-tracing.mdx | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx b/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx index 3f3011efa44236..9a0ceb8e93a205 100644 --- a/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx +++ b/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx @@ -4,17 +4,17 @@ sidebar_order: 52 description: "Learn how to leverage distributed tracing to troubleshoot downtime efficiently." --- -Sentry's Uptime Monitoring provides a connected view of related errors and spans during uptime checks by capturing the timing and flow of requests and operations through [distributed tracing](/product/tracing/#whats-distributed-tracing). This feature is a valuable triaging tool, enabling you to identify the root cause of downtime more quickly. +Sentry's Uptime Monitoring uses [distributed tracing](/product/tracing/#whats-distributed-tracing) to track the flow and timing of requests and operations during uptime checks. This helps you quickly find the root cause of downtime by connecting related errors and performance data. -Distributed tracing for related errors during an uptime check is automatically enabled for all Uptime Alerts. However, tracing spans is disabled by default and can be enabled by configuring the sampling behavior for an uptime check. +You can trace errors to identify and diagnose issues like crashes or exceptions. This is automatically enabled for all Uptime Alerts. You can also trace spans to monitor the performance and flow of operations, such as API calls or database queries. Span tracing is disabled by default, but can be enabled by allowing sampling in your Uptime Alert settings. Errors focus on problems, while spans focus on performance. ## How Uptime Tracing Works -Sentry Uptime Tracing automatically appends a `sentry-trace` header to every outgoing request made to the configured URL in your Uptime Alert settings. This header propagates trace information. +Sentry Uptime Tracing automatically appends a `sentry-trace` header to every outgoing request made to the configured URL in your Uptime Alert settings. This header propagates a trace identifier. -If the application handling the incoming uptime check request is configured with one of Sentry's supported backend SDKs, the SDK will use the header to continue the trace. Learn more about [how distributed tracing works](/product/tracing/). +If one of Sentry's supported backend SDKs is configured for the application handling the incoming uptime check request, the trace will continue through your application. Learn more about [how distributed tracing works](/product/tracing/). -Here's an example of an outgoing Uptime check request: +Example Uptime check request: ```HTTP GET /example-uptime-endpoint HTTP/1.1 @@ -25,15 +25,15 @@ Sentry-Trace: 32d4011600324838afcd666edadc1d09-8d5ca7419a02ca36 ## Tracing Errors -Tracing errors during uptime checks is enabled by default. When downtime is detected, a new [Uptime Issue](/product/issues/issue-details/uptime-issues/) is created, allowing you to use the trace explorer to view any related errors. +Error tracing is enabled by default for uptime checks. When downtime is detected, an [Uptime Issue](/product/issues/issue-details/uptime-issues/) is created. You can then go to Sentry's [**Trace Explorer**](/product/explore/traces/) page to view any related errors. - +Because uptime requests won't override your SDK’s error sampling rate, some errors may not appear in traces if that rate is set to below 1. -Uptime check requests do not override your SDK's error sampling rate. If your SDK’s error sample rate is set below 1, some errors from uptime check requests may not appear in the trace. +### Disabling Error Tracing +To disable error tracing for uptime checks, filter out events from the SentryUptimeBot User-Agent in your SDK configuration. - -### Disabling Uptime Tracing of Errors +### Disabling Uptime Error Tracing To disable error tracing for uptime checks, configure a [before send](/platform-redirect/?next=/configuration/filtering/) filter in your SDK to ignore errors from Sentry's `User-Agent`. Here's an example: @@ -59,23 +59,21 @@ Sentry.init({ ## Tracing Spans -By default, uptime tracing for spans is disabled. Enabling span tracing provides a detailed view of the timing and flow of requests and operations during uptime checks, which is especially useful for diagnosing timeouts or performance issues. +Unlike error tracing, span tracing is **disabled** by default for uptime checks, but can be enabled by allowing sampling in your Uptime Alert settings. Enabling span tracing can be helpful because it provides a detailed view of the timing and flow of requests and operations during uptime checks, which is especially useful for diagnosing timeouts or performance issues. ### Enabling Uptime Tracing of Spans -To enable span tracing, modify your Uptime Alert settings to allow sampling by enabling the "Allow Sampling" option: +To enable span tracing, modify your Uptime Alert settings with the "Allow Sampling" option. This will ensure that Sentry defers the sampling decision to your SDK, which will follow the trace sample rate you've configured. -![Uptime Alert Allow Sampling Configuration](./img/uptime-allow-sampling.png) +Because uptime requests won't override your SDK’s error sampling rate, some errors may not appear in traces if that rate is set to below 1. -When sampling is allowed, Sentry defers the sampling decision to your SDK, which follows the trace sample rate configured in your SDK. +![Uptime Alert Allow Sampling Configuration](./img/uptime-allow-sampling.png) - -Uptime check requests do not override your SDK's trace sampling rate. If your SDK's trace sample rate is set below 1, some spans from uptime check requests may not appear in the trace. - +### Custom Sampling -To ensure all spans from uptime checks are sampled, even if your SDK's trace sampling rate is below 1, you can configure a [sampling function](/platform-redirect/?next=/configuration/sampling/). Here's an example: +To ensure that all spans from uptime checks are sampled, even if your SDK's trace sampling rate is below 1, you can configure a [sampling function](/platform-redirect/?next=/configuration/sampling/). Here's an example: ```typescript {tabTitle: Node.js Express} {filename: instrument.mjs} import * as Sentry from "@sentry/node"; @@ -102,4 +100,4 @@ Sentry.init({ ## Billing Considerations -Captured errors and spans from uptime check requests are billed as regular events in Sentry. + Errors and spans captured during uptime checks are billed as regular events in Sentry. Configure sampling thoughtfully to manage costs. From 929aef79eec9175881890acd30501cd8c09ec763 Mon Sep 17 00:00:00 2001 From: Liza Mock Date: Fri, 13 Dec 2024 11:33:17 -0800 Subject: [PATCH 05/11] Update docs/product/alerts/create-alerts/uptime-alert-config.mdx --- docs/product/alerts/create-alerts/uptime-alert-config.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/product/alerts/create-alerts/uptime-alert-config.mdx b/docs/product/alerts/create-alerts/uptime-alert-config.mdx index 8f98d115616ce7..787d7e3227a232 100644 --- a/docs/product/alerts/create-alerts/uptime-alert-config.mdx +++ b/docs/product/alerts/create-alerts/uptime-alert-config.mdx @@ -26,7 +26,7 @@ Configure how Sentry should execute an HTTP uptime check, by specifying: - **Method**: The request method used to execute the uptime check. Available options are `GET`, `POST`, `HEAD`, `PUT`, `DELETE`, `PATCH`, and `OPTIONS`. - **Headers**: The request headers included in the uptime check request. - **Body**: The body message to include in the uptime check request. (This is only available when the method is set to `POST`, `PUT`, and `PATCH`.) -- **Allow Sampling**: Enable this option to defer to the Sentry SDK how to sample spans in the request. See [distributed tracing with uptime](/product/alerts/uptime-monitoring/uptime-tracing/) for additional information. +- **Allow Sampling**: Enable "Allow Sampling" to let the Sentry SDK handle span sampling for requests. See the [distributed tracing with uptime](/product/alerts/uptime-monitoring/uptime-tracing/) docs for more detail. Make sure to include a `Content-Type` header in your headers configuration in case the specified URL requires it. For example, a JSON message body would have a `Content-Type` header of `application/json`. From bc49ce404cb307fd311617f9e83fb6370bc43b1d Mon Sep 17 00:00:00 2001 From: Liza Mock Date: Fri, 13 Dec 2024 11:33:27 -0800 Subject: [PATCH 06/11] Update docs/product/alerts/uptime-monitoring/uptime-tracing.mdx --- docs/product/alerts/uptime-monitoring/uptime-tracing.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx b/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx index 9a0ceb8e93a205..4ca664aaf599f0 100644 --- a/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx +++ b/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx @@ -1,7 +1,7 @@ --- title: Distributed Tracing with Uptime sidebar_order: 52 -description: "Learn how to leverage distributed tracing to troubleshoot downtime efficiently." +description: "Learn how to use distributed tracing to troubleshoot downtime." --- Sentry's Uptime Monitoring uses [distributed tracing](/product/tracing/#whats-distributed-tracing) to track the flow and timing of requests and operations during uptime checks. This helps you quickly find the root cause of downtime by connecting related errors and performance data. From 3ec8092942b04e07ed468d64f748fa8067e80d73 Mon Sep 17 00:00:00 2001 From: Liza Mock Date: Fri, 13 Dec 2024 11:33:36 -0800 Subject: [PATCH 07/11] Update docs/product/alerts/uptime-monitoring/uptime-tracing.mdx --- docs/product/alerts/uptime-monitoring/uptime-tracing.mdx | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx b/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx index 4ca664aaf599f0..7d53ac330686d7 100644 --- a/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx +++ b/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx @@ -29,8 +29,6 @@ Error tracing is enabled by default for uptime checks. When downtime is detected Because uptime requests won't override your SDK’s error sampling rate, some errors may not appear in traces if that rate is set to below 1. -### Disabling Error Tracing -To disable error tracing for uptime checks, filter out events from the SentryUptimeBot User-Agent in your SDK configuration. ### Disabling Uptime Error Tracing From 0d1f26fc19a226d215d0c773329b91e7ed6d0faa Mon Sep 17 00:00:00 2001 From: Liza Mock Date: Fri, 13 Dec 2024 11:33:45 -0800 Subject: [PATCH 08/11] Update docs/product/alerts/uptime-monitoring/uptime-tracing.mdx --- docs/product/alerts/uptime-monitoring/uptime-tracing.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx b/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx index 7d53ac330686d7..7fe6711339a201 100644 --- a/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx +++ b/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx @@ -59,7 +59,7 @@ Sentry.init({ Unlike error tracing, span tracing is **disabled** by default for uptime checks, but can be enabled by allowing sampling in your Uptime Alert settings. Enabling span tracing can be helpful because it provides a detailed view of the timing and flow of requests and operations during uptime checks, which is especially useful for diagnosing timeouts or performance issues. -### Enabling Uptime Tracing of Spans +### Enabling Uptime Tracing for Spans To enable span tracing, modify your Uptime Alert settings with the "Allow Sampling" option. This will ensure that Sentry defers the sampling decision to your SDK, which will follow the trace sample rate you've configured. From f2c5b3152659bf57c66ed9764a18d582b50af353 Mon Sep 17 00:00:00 2001 From: Liza Mock Date: Fri, 13 Dec 2024 11:33:52 -0800 Subject: [PATCH 09/11] Update docs/product/alerts/uptime-monitoring/uptime-tracing.mdx --- docs/product/alerts/uptime-monitoring/uptime-tracing.mdx | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx b/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx index 7fe6711339a201..d2efe998df83c5 100644 --- a/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx +++ b/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx @@ -67,8 +67,6 @@ Because uptime requests won't override your SDK’s error sampling rate, some er ![Uptime Alert Allow Sampling Configuration](./img/uptime-allow-sampling.png) - - ### Custom Sampling To ensure that all spans from uptime checks are sampled, even if your SDK's trace sampling rate is below 1, you can configure a [sampling function](/platform-redirect/?next=/configuration/sampling/). Here's an example: From f3df00f323a321e6ad9c265eacb4ea2198534821 Mon Sep 17 00:00:00 2001 From: Liza Mock Date: Fri, 13 Dec 2024 11:35:56 -0800 Subject: [PATCH 10/11] Update docs/product/alerts/uptime-monitoring/uptime-tracing.mdx --- docs/product/alerts/uptime-monitoring/uptime-tracing.mdx | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx b/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx index d2efe998df83c5..088fa24144bac4 100644 --- a/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx +++ b/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx @@ -29,8 +29,6 @@ Error tracing is enabled by default for uptime checks. When downtime is detected Because uptime requests won't override your SDK’s error sampling rate, some errors may not appear in traces if that rate is set to below 1. - - ### Disabling Uptime Error Tracing To disable error tracing for uptime checks, configure a [before send](/platform-redirect/?next=/configuration/filtering/) filter in your SDK to ignore errors from Sentry's `User-Agent`. Here's an example: From e2d6d7f04e037aefa361d6752bd0b44bb672999d Mon Sep 17 00:00:00 2001 From: Liza Mock Date: Fri, 13 Dec 2024 11:37:56 -0800 Subject: [PATCH 11/11] Update docs/product/alerts/uptime-monitoring/uptime-tracing.mdx --- docs/product/alerts/uptime-monitoring/uptime-tracing.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx b/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx index 088fa24144bac4..8f48bfa059cf37 100644 --- a/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx +++ b/docs/product/alerts/uptime-monitoring/uptime-tracing.mdx @@ -94,4 +94,4 @@ Sentry.init({ ## Billing Considerations - Errors and spans captured during uptime checks are billed as regular events in Sentry. Configure sampling thoughtfully to manage costs. + Errors and spans captured during uptime checks are [billed as regular events](https://sentry.io/pricing/) in Sentry. Configure sampling thoughtfully to manage costs.