diff --git a/develop-docs/backend/application-domains/transaction-clustering/index.mdx b/develop-docs/backend/application-domains/transaction-clustering/index.mdx index 53f10211ec8d5..bcfcb49262826 100644 --- a/develop-docs/backend/application-domains/transaction-clustering/index.mdx +++ b/develop-docs/backend/application-domains/transaction-clustering/index.mdx @@ -23,7 +23,7 @@ and it falls back to the raw URL (or rather, [its path component](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Syntax)). This makes it harder for the user to extract insights from [Performance -metrics](https://docs.sentry.io/product/insights/overview/metrics/), because instead of presenting averages, percentiles and distributions of groups of transactions that logically +metrics](https://docs.sentry.io/product/dashboards/sentry-dashboards/transaction-summary/#metrics-in-this-view), because instead of presenting averages, percentiles and distributions of groups of transactions that logically belong together, we end up with a bunch of one-off transaction groups. ```URLs diff --git a/docs/concepts/key-terms/tracing/distributed-tracing.mdx b/docs/concepts/key-terms/tracing/distributed-tracing.mdx index 8c31212510365..72dc49d785fbd 100644 --- a/docs/concepts/key-terms/tracing/distributed-tracing.mdx +++ b/docs/concepts/key-terms/tracing/distributed-tracing.mdx @@ -8,7 +8,7 @@ description: >- og_image: /og-images/concepts-key-terms-tracing-distributed-tracing.png --- -Distributed tracing provides a connected view of your application from frontend to backend. It helps track software performance, measure [metrics](/product/insights/overview/metrics/) like throughput and latency, and display the impact of errors across multiple systems. This makes Sentry a more complete [performance monitoring](/product/insights/overview/) solution, aiding in diagnosing problems and measuring your application's overall health. +Distributed tracing provides a connected view of your application from frontend to backend. It helps track software performance, measure [metrics](/product/dashboards/sentry-dashboards/transaction-summary/#metrics-in-this-view) like throughput and latency, and display the impact of errors across multiple systems. This makes Sentry a more complete [performance monitoring](/product/insights/overview/) solution, aiding in diagnosing problems and measuring your application's overall health. [Tracing](/concepts/key-terms/tracing/distributed-tracing/) in Sentry provides insights such as: @@ -23,7 +23,7 @@ A tracing tool focuses on what happened (and when), logging events during a prog It's important to note that tracing is not [profiling](/product/explore/profiling/). A profiler measures various aspects of an application's operation, resulting in a statistical summary. While both diagnose application problems, they differ in what they measure and how data is recorded. -Learn more in this [Tracing: Frontend issues with backend solutions](https://sentry.io/resources/tracing-frontend-issues-with-backend-solutions/?original_referrer=https%3A%2F%2Fblog.sentry.io%2F) workshop. +Learn more in our [tracing documentation](/product/sentry-basics/tracing/). ### The Tracing Data Model diff --git a/docs/concepts/search/index.mdx b/docs/concepts/search/index.mdx index c997a23220042..c7d6c0936de73 100644 --- a/docs/concepts/search/index.mdx +++ b/docs/concepts/search/index.mdx @@ -164,9 +164,14 @@ browser:EndsWithchrome, !browser:EndsWithfire Page filters allow you to narrow down the results shown on a page by selecting specific projects, environments, and date ranges. After you've set your filters, they'll persist as you navigate across pages in Sentry. +### Dashboard Page Filters +Dashboard page filters allow you to narrow down the widget results to certain projects, environments, date ranges, and releases. You can also add custom filters to your dashboard by pressing the _plus_ button. Each filter begins with selecting a dataset, and then adding a filter condition. + +### Insights Page Filters + ![Project selector](./img/project-selector.png) -If you want to see data for all your projects, click "Clear" in the project selector to clear any project filters. +If you want to see data for all your projects, click "Clear" in the project selector to clear any project filters. Or search for specific data key value pairs by typing them in the search bar. ## Learn more diff --git a/docs/contributing/approach/sdk-docs/write-getting-started.mdx b/docs/contributing/approach/sdk-docs/write-getting-started.mdx index e39e25dee6f26..0d0762a2204f9 100644 --- a/docs/contributing/approach/sdk-docs/write-getting-started.mdx +++ b/docs/contributing/approach/sdk-docs/write-getting-started.mdx @@ -62,7 +62,7 @@ Add the configuration code sample to this directory: -If the SDK supports performance monitoring, add it to the list that links back into the SDK content from Product, stored in [`/docs/product/insights/getting-started.mdx`](https://github.com/getsentry/sentry-docs/blob/master/docs/product/insights/getting-started.mdx). +If the SDK supports performance monitoring, link to the [Sentry Dashboards](/product/dashboards/sentry-dashboards/) index (Set Up section with platform redirect to tracing). The per-SDK list for performance is no longer in docs; the index links to [Set up tracing for your platform](/platform-redirect/?next=%2Ftracing%2F). diff --git a/docs/contributing/approach/sdk-docs/write-quick-start.mdx b/docs/contributing/approach/sdk-docs/write-quick-start.mdx index 467d80871f14e..fa15a5d98c597 100644 --- a/docs/contributing/approach/sdk-docs/write-quick-start.mdx +++ b/docs/contributing/approach/sdk-docs/write-quick-start.mdx @@ -136,7 +136,7 @@ Integrate this content into your guide using the `PlatformSection` component. If the SDK supports performance monitoring, add it to the list that links back into the SDK content from Product, stored in - [`/docs/product/insights/getting-started.mdx`](https://github.com/getsentry/sentry-docs/blob/master/docs/product/insights/getting-started.mdx). + [`/docs/product/dashboards/sentry-dashboards/index.mdx`](https://github.com/getsentry/sentry-docs/blob/master/docs/product/dashboards/sentry-dashboards/index.mdx) (Sentry Dashboards index, which includes a Set Up section and platform redirect to tracing). ## Additional Requirements for Our Wizard diff --git a/docs/platforms/android/tracing/instrumentation/performance-metrics.mdx b/docs/platforms/android/tracing/instrumentation/performance-metrics.mdx index 99108a14cd57b..d6ddb557a8bed 100644 --- a/docs/platforms/android/tracing/instrumentation/performance-metrics.mdx +++ b/docs/platforms/android/tracing/instrumentation/performance-metrics.mdx @@ -10,7 +10,7 @@ Sentry's SDKs support sending performance metrics data to Sentry. These are nume ## Custom Measurements -In addition to automatic performance metrics, the SDK supports setting [custom performance measurements](/product/insights/overview/metrics/#custom-performance-measurements) on transactions. This allows you to define measurements that are important to your application and send them to Sentry. +In addition to automatic performance metrics, the SDK supports custom performance measurements on transactions. To set a performance measurement, you need to supply the following: diff --git a/docs/platforms/apple/common/tracing/instrumentation/performance-metrics.mdx b/docs/platforms/apple/common/tracing/instrumentation/performance-metrics.mdx index d3e2b57dfbd61..2b082e678373c 100644 --- a/docs/platforms/apple/common/tracing/instrumentation/performance-metrics.mdx +++ b/docs/platforms/apple/common/tracing/instrumentation/performance-metrics.mdx @@ -10,7 +10,7 @@ Sentry's SDKs support sending performance metrics data to Sentry. These are nume ## Custom Measurements -In addition to automatic performance metrics, the SDK supports setting [custom performance measurements](/product/insights/overview/metrics/#custom-performance-measurements) on transactions. This allows you to define measurements that are important to your application and send them to Sentry. +In addition to automatic performance metrics, the SDK supports custom performance measurements on transactions. To set a performance measurement, you need to supply the following: diff --git a/docs/platforms/dart/common/tracing/instrumentation/performance-metrics.mdx b/docs/platforms/dart/common/tracing/instrumentation/performance-metrics.mdx index 384956bc02fa4..19cd6887cfe3a 100644 --- a/docs/platforms/dart/common/tracing/instrumentation/performance-metrics.mdx +++ b/docs/platforms/dart/common/tracing/instrumentation/performance-metrics.mdx @@ -8,7 +8,7 @@ Sentry's SDKs support sending performance metrics data to Sentry. These are nume ## Custom Measurements -In addition to automatic performance metrics, the SDK supports setting [custom performance measurements](/product/insights/overview/metrics/#custom-performance-measurements) on transactions. This allows you to define measurements that are important to your application and send them to Sentry. +In addition to automatic performance metrics, the SDK supports custom performance measurements on transactions. To set a performance measurement, you need to supply the following: diff --git a/docs/platforms/dart/guides/flutter/tracing/instrumentation/performance-metrics.mdx b/docs/platforms/dart/guides/flutter/tracing/instrumentation/performance-metrics.mdx index 99108a14cd57b..d6ddb557a8bed 100644 --- a/docs/platforms/dart/guides/flutter/tracing/instrumentation/performance-metrics.mdx +++ b/docs/platforms/dart/guides/flutter/tracing/instrumentation/performance-metrics.mdx @@ -10,7 +10,7 @@ Sentry's SDKs support sending performance metrics data to Sentry. These are nume ## Custom Measurements -In addition to automatic performance metrics, the SDK supports setting [custom performance measurements](/product/insights/overview/metrics/#custom-performance-measurements) on transactions. This allows you to define measurements that are important to your application and send them to Sentry. +In addition to automatic performance metrics, the SDK supports custom performance measurements on transactions. To set a performance measurement, you need to supply the following: diff --git a/docs/platforms/dotnet/common/tracing/instrumentation/performance-metrics.mdx b/docs/platforms/dotnet/common/tracing/instrumentation/performance-metrics.mdx index 8955adc964609..6641b02737dee 100644 --- a/docs/platforms/dotnet/common/tracing/instrumentation/performance-metrics.mdx +++ b/docs/platforms/dotnet/common/tracing/instrumentation/performance-metrics.mdx @@ -8,7 +8,7 @@ The SDK supports sending performance metrics data to Sentry. These are numeric v ## Custom Measurements -In addition to automatic performance metrics, the SDK supports setting [custom performance measurements](/product/insights/overview/metrics/#custom-performance-measurements) on transactions. This allows you to define measurements that are important to your application and send them to Sentry. +In addition to automatic performance metrics, the SDK supports custom performance measurements on transactions. To set a performance measurement, you need to supply the following: diff --git a/docs/platforms/java/common/tracing/instrumentation/performance-metrics.mdx b/docs/platforms/java/common/tracing/instrumentation/performance-metrics.mdx index 8955adc964609..6641b02737dee 100644 --- a/docs/platforms/java/common/tracing/instrumentation/performance-metrics.mdx +++ b/docs/platforms/java/common/tracing/instrumentation/performance-metrics.mdx @@ -8,7 +8,7 @@ The SDK supports sending performance metrics data to Sentry. These are numeric v ## Custom Measurements -In addition to automatic performance metrics, the SDK supports setting [custom performance measurements](/product/insights/overview/metrics/#custom-performance-measurements) on transactions. This allows you to define measurements that are important to your application and send them to Sentry. +In addition to automatic performance metrics, the SDK supports custom performance measurements on transactions. To set a performance measurement, you need to supply the following: diff --git a/docs/platforms/powershell/tracing/instrumentation/performance-metrics.mdx b/docs/platforms/powershell/tracing/instrumentation/performance-metrics.mdx index 7115f88f18c31..df66c6ce5aae0 100644 --- a/docs/platforms/powershell/tracing/instrumentation/performance-metrics.mdx +++ b/docs/platforms/powershell/tracing/instrumentation/performance-metrics.mdx @@ -8,7 +8,7 @@ Sentry's SDKs support sending performance metrics data to Sentry. These are nume ## Custom Measurements -In addition to automatic performance metrics, the SDK supports setting [custom performance measurements](/product/insights/overview/metrics/#custom-performance-measurements) on transactions. This allows you to define measurements that are important to your application and send them to Sentry. +In addition to automatic performance metrics, the SDK supports custom performance measurements on transactions. To set a performance measurement, you need to supply the following: diff --git a/docs/platforms/python/tracing/span-metrics/performance-metrics.mdx b/docs/platforms/python/tracing/span-metrics/performance-metrics.mdx index 3869d416a690e..4001da4e71e73 100644 --- a/docs/platforms/python/tracing/span-metrics/performance-metrics.mdx +++ b/docs/platforms/python/tracing/span-metrics/performance-metrics.mdx @@ -10,7 +10,7 @@ The SDK supports sending performance metrics data to Sentry. These are numeric v ## Custom Measurements -In addition to automatic performance metrics, the SDK supports setting [custom performance measurements](/product/insights/overview/metrics/#custom-performance-measurements) on transactions. This allows you to define measurements that are important to your application and send them to Sentry. +In addition to automatic performance metrics, the SDK supports custom performance measurements on transactions. To set a performance measurement, you need to supply the following: diff --git a/docs/platforms/react-native/tracing/instrumentation/performance-metrics.mdx b/docs/platforms/react-native/tracing/instrumentation/performance-metrics.mdx index 2bf9fa5203420..a3d1ac0263c2f 100644 --- a/docs/platforms/react-native/tracing/instrumentation/performance-metrics.mdx +++ b/docs/platforms/react-native/tracing/instrumentation/performance-metrics.mdx @@ -13,7 +13,7 @@ The React Native SDK automatically collects the following performance metrics: ## Custom Measurements -In addition to automatic performance metrics, the SDK supports setting [custom performance measurements](/product/insights/overview/metrics/#custom-performance-measurements) on transactions. This allows you to define measurements that are important to your application and send them to Sentry. +In addition to automatic performance metrics, the SDK supports custom performance measurements on transactions. To set a performance measurement, you need to supply the following: diff --git a/docs/platforms/ruby/common/tracing/instrumentation/performance-metrics.mdx b/docs/platforms/ruby/common/tracing/instrumentation/performance-metrics.mdx index 8955adc964609..6641b02737dee 100644 --- a/docs/platforms/ruby/common/tracing/instrumentation/performance-metrics.mdx +++ b/docs/platforms/ruby/common/tracing/instrumentation/performance-metrics.mdx @@ -8,7 +8,7 @@ The SDK supports sending performance metrics data to Sentry. These are numeric v ## Custom Measurements -In addition to automatic performance metrics, the SDK supports setting [custom performance measurements](/product/insights/overview/metrics/#custom-performance-measurements) on transactions. This allows you to define measurements that are important to your application and send them to Sentry. +In addition to automatic performance metrics, the SDK supports custom performance measurements on transactions. To set a performance measurement, you need to supply the following: diff --git a/docs/platforms/unity/tracing/instrumentation/performance-metrics.mdx b/docs/platforms/unity/tracing/instrumentation/performance-metrics.mdx index 7115f88f18c31..df66c6ce5aae0 100644 --- a/docs/platforms/unity/tracing/instrumentation/performance-metrics.mdx +++ b/docs/platforms/unity/tracing/instrumentation/performance-metrics.mdx @@ -8,7 +8,7 @@ Sentry's SDKs support sending performance metrics data to Sentry. These are nume ## Custom Measurements -In addition to automatic performance metrics, the SDK supports setting [custom performance measurements](/product/insights/overview/metrics/#custom-performance-measurements) on transactions. This allows you to define measurements that are important to your application and send them to Sentry. +In addition to automatic performance metrics, the SDK supports custom performance measurements on transactions. To set a performance measurement, you need to supply the following: diff --git a/docs/product/dashboards/custom-dashboards/img/create-dashboard.png b/docs/product/dashboards/custom-dashboards/img/create-dashboard.png new file mode 100644 index 0000000000000..30d83763b48fe Binary files /dev/null and b/docs/product/dashboards/custom-dashboards/img/create-dashboard.png differ diff --git a/docs/product/dashboards/custom-dashboards/img/dashboard-edit.png b/docs/product/dashboards/custom-dashboards/img/dashboard-edit.png deleted file mode 100644 index 62f9d1b231b55..0000000000000 Binary files a/docs/product/dashboards/custom-dashboards/img/dashboard-edit.png and /dev/null differ diff --git a/docs/product/dashboards/custom-dashboards/img/dashboard-management.png b/docs/product/dashboards/custom-dashboards/img/dashboard-management.png deleted file mode 100644 index 1bf924e472362..0000000000000 Binary files a/docs/product/dashboards/custom-dashboards/img/dashboard-management.png and /dev/null differ diff --git a/docs/product/dashboards/custom-dashboards/img/dashboard-template.png b/docs/product/dashboards/custom-dashboards/img/dashboard-template.png deleted file mode 100644 index bc28f6d3d4595..0000000000000 Binary files a/docs/product/dashboards/custom-dashboards/img/dashboard-template.png and /dev/null differ diff --git a/docs/product/dashboards/custom-dashboards/index.mdx b/docs/product/dashboards/custom-dashboards/index.mdx index 55199c794ec36..7c0e2db4d5d2f 100644 --- a/docs/product/dashboards/custom-dashboards/index.mdx +++ b/docs/product/dashboards/custom-dashboards/index.mdx @@ -2,42 +2,41 @@ title: Custom Dashboards sidebar_order: 10 description: >- - Learn how to edit or create additional dashboards to suit your organization's + Learn how to edit or create custom dashboards to suit your organization's needs. og_image: /og-images/product-dashboards-custom-dashboards.png --- -Custom dashboards are shared across your organization, and users can view each other’s custom dashboards on the Dashboards home page. Note that any changes you make and **save** are global, and will appear for users across the entire organization. +Custom dashboards are shared across your organization, and users can view each other’s custom dashboards on the [Dashboards home page](https://sentry.io/orgredirect/organizations/:orgslug/dashboards/). Note that any changes you make and **save** become global, and will appear for users across the entire organization. ## Manage Dashboards On the Dashboards home page, you can: -- [Create a dashboard](#create-dashboards) -- [Create a dashboard from a template](#create-dashboards-from-templates) +- Create a dashboard - Duplicate a dashboard - Delete a dashboard - -![Manage mode =900x](./img/dashboard-management.png) +- Categorize dashboards ### Create Dashboards -Clicking "Create Dashboard" takes you to a new dashboard where you can immediately begin adding widgets. When you're creating a new dashboard or editing an existing one, the widgets are slightly grayed out. From here, you can: +![Create Dashboard =800x](./img/create-dashboard.png) + +Clicking **Create Dashboard** takes you to a new dashboard where you can immediately begin adding widgets from a blank page. When you're creating a new dashboard or editing an existing one, the widgets are slightly grayed out. From here, you can: -- Rename the dashboard +- Name the dashboard - Add and remove widgets - Rearrange existing widgets - Resize existing widgets +- Create a custom widget -![Edit mode. =700x](./img/dashboard-template.png) +### Duplicate Dashboards -### Create Dashboards From Templates - -When the "Show Templates" toggle is enabled, several default dashboard templates are displayed. You can add each template directly to the list of dashboards by clicking "Add Dashboard", or preview it by clicking "Preview". You have to add a template before you can edit the resulting dashboard. You can also duplicate or delete a dashboard created from a template (this does not delete the template). +You can duplicate a dashboard by clicking the ellipsis on a dashboard card and selecting **Duplicate**, or by clicking the **Duplicate** button on a dashboard page. ### Dashboard Filters -Dashboard filters are applied to all the widgets in your dashboard. By default, they consist of [page filters](/concepts/search/#page-filters) that allow you to narrow down the widget results to certain projects, environments, date ranges, and releases. You can also add custom filters to your dashboard by pressing the _plus_ button. Each filter begins with selecting a dataset, and then adding a filter condition. You can add multiple filters to your dashboard, and they will be applied to all widgets in the dashboard. Changing a dashboard filter will prompt you to "Save" or "Cancel". To persist filter changes to your dashboard, click "Save", or click "Cancel" to discard the changes. +Dashboard filters are applied to all the widgets in your dashboard. By default, they consist of page filters that allow you to narrow down the widget results to certain projects, environments, date ranges, and releases. You can also add custom filters to your dashboard by pressing the _plus_ button. Each filter begins with selecting a dataset, and then adding a filter condition. You can add multiple filters to your dashboard, and they will be applied to all widgets in the dashboard. Changing a dashboard filter will prompt you to "Save" or "Cancel". To persist filter changes to your dashboard, click "Save", or click "Cancel" to discard the changes. ### Dashboard Edit Access @@ -47,14 +46,6 @@ To restrict who can edit or delete your dashboard, go to the "Edit Access" selec When adding a widget or editing an existing one, you will be presented with a side panel where you can see the dashboard widget builder. The widget builder has several configuration options that you can use to shape data and add information to your dashboard. Learn more in the [Widget Builder documentation](/product/dashboards/widget-builder/). -### Metrics Extraction - - - -If you're using custom tags or custom filters in your widgets, we will start collecting metrics to give you accurate counts and rates. During widget creation or editing, you will see approximate metrics for transaction datasets based on indexed events. As soon as you save, we will start extracting metrics for those widgets. It may take up to 15 minutes to start seeing metrics. - -Learn more about the feature and limitations of [metrics extraction](/product/dashboards/widget-builder/#extracted-metrics). - ## Widget Library The widget library contains a collection of prebuilt widgets you can add to your custom dashboards. Learn more by reading our [Widget Library docs](/product/dashboards/widget-library/). diff --git a/docs/product/dashboards/index.mdx b/docs/product/dashboards/index.mdx index a969b6705d70c..046956792419d 100644 --- a/docs/product/dashboards/index.mdx +++ b/docs/product/dashboards/index.mdx @@ -1,13 +1,13 @@ --- title: Dashboards -sidebar_order: 100 +sidebar_order: 45 description: >- - With Sentry’s Dashboards, you can get a focused view of your application’s - health, while being able to easily navigate across multiple projects. + Learn how Sentry’s Dashboards give you a focused view of your application’s + health, across multiple projects. og_image: /og-images/product-dashboards.png --- -Sentry's Dashboards provide you with a broad overview of your application’s health by allowing you to navigate through error and performance data across multiple projects. Dashboards are made up of one or more widgets, and each widget visualizes one or more [dataset](/product/dashboards/widget-builder/#choose-your-dataset). +Sentry's [Dashboards](https://sentry.io/orgredirect/organizations/:orgslug/dashboards/) provide you with a broad overview of your application’s health by allowing you to navigate through error and performance data across multiple projects. Dashboards are made up of one or more widgets, and each widget visualizes one or more [dataset](/product/dashboards/widget-builder/#choose-your-dataset). Try it out in a Dashboards sandbox. ![Widgets visualizing events, errors by country, affected users, and handled vs unhandled issues. =900x](./img/custom-dash.png) @@ -26,13 +26,19 @@ You can also add custom global filters to your dashboard by pressing the _plus_ To restrict who can edit or delete your dashboard, go to the "Edit Access" selector. As the dashboard creator, you can limit access to specific teams by selecting the checkboxes in the Edit Access Selector and clicking Save Changes to apply the updates. Dashboard creators and organization owners always retain edit access. +## Sentry Dashboards + +Sentry provides out-of-the-box [dashboards](/product/dashboards/sentry-dashboards/) for frontend, backend, mobile, and AI performance. These curated views give you a high-level overview of your application's health with widgets for Web Vitals, queries, outbound API requests, session health, and more. Use them to spot trends, drill into traces, and triage performance issues. + +You can also use these dashboards as templates by duplicating them to create your own custom dashboards. + ## Custom Dashboards -Every organization has a general template dashboard that is shared across all users. If you’d like to edit the default dashboard or build out new ones, each with its own set of unique widgets, you may want to consider the [Custom Dashboards](/product/dashboards/custom-dashboards/) feature which enables you to create more robust or customized views for example, to track performance of a specific feature or to track errors by a specific team's ownership. +You can make [custom dashboards](/product/dashboards/custom-dashboards/) by duplicating an existing dashboard or starting from scratch by pressing the **Create Dashboard** button. Custom dashboards enable you to create views tailored to your organization's needs. For example, you may want to track performance of a specific feature, or track errors by a specific team's ownership. Once in edit mode, use the same filters you use to drill into a dashboard to customize your dashboard. ## Open Dashboard Widgets in Discover and Issues -Each Dashboard widget has an ellipsis that opens a context menu. From here, depending on the type of data the widget shows, you can open the widget in [Discover](/product/explore/discover-queries/) or [Issues](/product/issues/) to get more information. +Each dashboard [widget](/product/dashboards/widget-builder/) has an ellipsis that opens a context menu. From here, depending on the type of data the widget shows, you can open the widget in [Discover](/product/explore/discover-queries/) or [Issues](/product/issues/) to get more information. ## Widget Viewer diff --git a/docs/product/dashboards/sentry-dashboards/INSIGHTS-TO-SENTRY-DASHBOARDS-MIGRATION.md b/docs/product/dashboards/sentry-dashboards/INSIGHTS-TO-SENTRY-DASHBOARDS-MIGRATION.md new file mode 100644 index 0000000000000..bcea90da9289e --- /dev/null +++ b/docs/product/dashboards/sentry-dashboards/INSIGHTS-TO-SENTRY-DASHBOARDS-MIGRATION.md @@ -0,0 +1,194 @@ +# Insights → Sentry Dashboards migration + +This document tracks link updates, product naming changes, and redirects when migrating from **Insights** to **Sentry dashboards** (`/product/dashboards/sentry-dashboards/`). + +## Decisions + +- **Path:** Use `sentry-dashboards` (plural). Base path: `/product/dashboards/sentry-dashboards/`. +- **Images:** Migrate the associated `img` folder with each moved doc as needed. +- **Performance Overhead:** Page is deleted; merge useful content into Sentry dashboards index or a short note. Add redirect so `/product/insights/performance-overhead/` → `/product/dashboards/sentry-dashboards/`. Update all links that point to it. +- **Product naming:** Where the product is called "Insights," change to "Sentry dashboards" (or "Sentry Dashboards" as appropriate). Update both links and prose. + +--- + +## Path mapping (old → new) + +Use this when updating links and when adding redirects (e.g. in `redirects.js` and `src/middleware.ts`). + +| Old path | New path | +|---------|----------| +| `/product/insights/` | `/product/dashboards/sentry-dashboards/` | +| `/product/insights/overview/` | `/product/dashboards/sentry-dashboards/` (merged into index) | +| `/product/insights/overview/transaction-summary/` | `/product/dashboards/sentry-dashboards/transaction-summary/` | +| `/product/insights/overview/metrics/` | `/product/dashboards/sentry-dashboards/transaction-summary/#metrics-in-this-view` (performance-metrics page retired; content in Transaction Summary) | +| `/product/insights/overview/filters-display/` | `/product/dashboards/sentry-dashboards/` (page deleted; redirect to index) | +| `/product/insights/overview/filters-display/widgets/` | `/product/dashboards/sentry-dashboards/` (page deleted; redirect to index) | +| `/product/insights/getting-started/` | `/product/dashboards/sentry-dashboards/` (Set Up section merged into index; no separate getting-started page) | +| `/product/insights/performance-overhead/` | `/product/dashboards/sentry-dashboards/` (page deleted; redirect) | +| `/product/insights/frontend/` | `/product/dashboards/sentry-dashboards/frontend/` | +| `/product/insights/frontend/web-vitals/` | `/product/dashboards/sentry-dashboards/frontend/web-vitals/` | +| `/product/insights/frontend/web-vitals/web-vitals-concepts/` | `/product/dashboards/sentry-dashboards/frontend/web-vitals/web-vitals-concepts/` | +| `/product/insights/frontend/network-requests/` | `/product/dashboards/sentry-dashboards/outbound-api-requests/` | +| `/product/insights/frontend/assets/` | `/product/dashboards/sentry-dashboards/frontend/assets/` | +| `/product/insights/frontend/session-health/` | `/product/dashboards/sentry-dashboards/frontend/session-health/` | +| `/product/insights/backend/` | `/product/dashboards/sentry-dashboards/backend/` | +| `/product/insights/backend/queries/` | `/product/dashboards/sentry-dashboards/backend/queries/` | +| `/product/insights/backend/requests/` | `/product/dashboards/sentry-dashboards/outbound-api-requests/` | +| `/product/insights/backend/queue-monitoring/` | `/product/dashboards/sentry-dashboards/backend/queues/` | +| `/product/insights/backend/queue-monitoring/queues-page/` | `/product/dashboards/sentry-dashboards/backend/queues/` | +| `/product/insights/backend/caches/` | `/product/dashboards/sentry-dashboards/backend/caches/` | +| `/product/insights/backend/caches/cache-page/` | `/product/dashboards/sentry-dashboards/backend/caches/` | +| `/product/insights/mobile/` | `/product/dashboards/sentry-dashboards/mobile/` | +| `/product/insights/mobile/mobile-vitals/` | `/product/dashboards/sentry-dashboards/mobile/mobile-vitals/` | +| `/product/insights/mobile/mobile-vitals/app-starts/` | `/product/dashboards/sentry-dashboards/mobile/mobile-vitals/app-starts/` | +| `/product/insights/mobile/mobile-vitals/screen-loads/` | `/product/dashboards/sentry-dashboards/mobile/mobile-vitals/screen-loads/` | +| `/product/insights/mobile/network-requests/` | `/product/dashboards/sentry-dashboards/outbound-api-requests/` | +| `/product/insights/mobile/session-health/` | `/product/dashboards/sentry-dashboards/mobile/session-health/` | +| `/product/insights/web-vitals/` (no "frontend") | `/product/dashboards/sentry-dashboards/frontend/web-vitals/` | +| `/product/insights/queries` (widgets.mdx used this) | `/product/dashboards/sentry-dashboards/backend/queries/` | +| `/product/insights/requests` | `/product/dashboards/sentry-dashboards/outbound-api-requests/` | +| `/product/insights/caches/` | `/product/dashboards/sentry-dashboards/backend/caches/` | + +**AI:** Leave under `docs/ai/`. No URL changes for AI monitoring docs. Links that pointed to `/product/insights/ai/*` should be updated to the current `docs/ai` URLs (e.g. `/ai/monitoring/agents/`, `/ai/monitoring/mcp/`). + +--- + +## Files to update (links) — outside `docs/product/insights/` + +Update these files to use the new paths from the table above. Replace any `/product/insights/...` with the corresponding `/product/dashboards/sentry-dashboards/...` (or merged path). + +### Product docs + +- `docs/product/alerts/alert-types.mdx` — metrics, latency, Apdex, failure rate, throughput +- `docs/product/alerts/index.mdx` — metrics, latency, failure rate +- `docs/product/dashboards/widget-library/index.mdx` — Apdex +- `docs/product/issues/issue-details/performance-issues/index.mdx` — Insights and Tracing +- `docs/product/issues/issue-details/performance-issues/web-vitals/index.mdx` — Web Vitals, opportunity +- `docs/product/issues/issue-details/performance-issues/endpoint-regressions/index.mdx` — Span Summary / transaction-summary +- `docs/product/projects/project-details/index.mdx` — Apdex, failure rate, TPM +- `docs/product/releases/release-details.mdx` — Failure Rate +- `docs/product/explore/discover-queries/query-builder/query-equations.mdx` — Apdex +- `docs/product/explore/profiling/mobile-app-profiling/metrics.mdx` — Mobile Vitals +- `docs/product/sentry-basics/integrate-frontend/configure-scms.mdx` — Insights +- `docs/product/sentry-basics/performance-monitoring.mdx` — (if it links to insights; verify) +- `docs/product/crons/alerts-backend-insights-migration.mdx` — "Insights > Backend" (naming) +- `docs/product/pricing/legacy-pricing.mdx` — Insights features +- `docs/product/dotnet/common/enriching-events/transaction-name/index.mdx` — Insights product (naming + link) + +### Concepts + +- `docs/concepts/key-terms/key-terms.mdx` — Insights Overview, performance monitoring +- `docs/concepts/key-terms/tracing/index.mdx` — Insights page, caching issues, Learn more Insights +- `docs/concepts/key-terms/tracing/distributed-tracing.mdx` — metrics +- `docs/concepts/search/searchable-properties/issues.mdx` — transactions, transaction-summary +- `docs/concepts/search/searchable-properties/events.mdx` — Apdex, User Misery + +### Platforms (tracing / overview) + +- `docs/platforms/android/tracing/index.mdx` — tracing/overview +- `docs/platforms/android/overhead/index.mdx` — **performance-overhead** → sentry-dashboards +- `docs/platforms/android/enriching-events/transaction-name/index.mdx` — Insights product +- `docs/platforms/apple/common/overhead/index.mdx` — **performance-overhead** → sentry-dashboards +- `docs/platforms/apple/common/features/index.mdx` — Tracing, Mobile Vitals +- `docs/platforms/apple/common/tracing/instrumentation/automatic-instrumentation.mdx` — Mobile Vitals (×2) +- `docs/platforms/apple/common/tracing/instrumentation/swiftui-instrumentation.mdx` — Mobile Vitals TTID/TTFD +- `docs/platforms/apple/common/tracing/instrumentation/performance-metrics.mdx` — custom performance measurements +- `docs/platforms/apple/guides/visionos/features/index.mdx` — Frame rate / mobile-vitals +- `docs/platforms/apple/guides/tvos/features/index.mdx` — Frame rate +- `docs/platforms/apple/guides/macos/features/index.mdx` — Frame rate +- `docs/platforms/dart/common/features/index.mdx` — Tracing/overview +- `docs/platforms/dart/common/tracing/instrumentation/performance-metrics.mdx` — custom performance measurements +- `docs/platforms/dart/common/overhead/index.mdx` — **performance-overhead** → sentry-dashboards +- `docs/platforms/dart/guides/flutter/tracing/index.mdx` — tracing/overview +- `docs/platforms/dart/guides/flutter/tracing/instrumentation/performance-metrics.mdx` — (if present; verify) +- `docs/platforms/dart/guides/flutter/overhead/index.mdx` — **performance-overhead** → sentry-dashboards +- `docs/platforms/dotnet/common/tracing/index.mdx` — tracing/overview +- `docs/platforms/dotnet/common/enriching-events/transaction-name/index.mdx` — Insights product +- `docs/platforms/javascript/common/configuration/integrations/browsertracing.mdx` — tracing/overview +- `docs/platforms/javascript/common/tracing/instrumentation/automatic-instrumentation.mdx` — Mobile Vitals, Web Vitals +- `docs/platforms/powershell/tracing/instrumentation/performance-metrics.mdx` — custom performance measurements +- `docs/platforms/react-native/tracing/instrumentation/performance-metrics.mdx` — custom performance measurements +- `docs/platforms/react-native/tracing/instrumentation/time-to-display.mdx` — Mobile Vitals TTID/TTFD +- `docs/platforms/react-native/tracing/instrumentation/automatic-instrumentation.mdx` — Mobile Vitals, Web Vitals +- `docs/platforms/react-native/overhead/index.mdx` — **performance-overhead** → sentry-dashboards +- `docs/platforms/react-native/enriching-events/transaction-name/index.mdx` — Insights product +- `docs/platforms/ruby/common/migration.mdx` — tracing/overview +- `docs/platforms/rust/common/tracing/index.mdx` — Insights +- `docs/platforms/unity/tracing/index.mdx` — tracing/overview +- `docs/platforms/unity/tracing/instrumentation/performance-metrics.mdx` — custom performance measurements +- `docs/platforms/unreal/tracing/index.mdx` — tracing/overview + +### Guides & other + +- `docs/guides/custom-spans.mdx` — Sentry Agent Monitoring (`/product/insights/ai/agents/`) → use `/ai/monitoring/agents/` (or current AI doc URL) +- `docs/contributing/approach/sdk-docs/write-getting-started.mdx` — points to insights getting-started; update path to sentry-dashboards getting-started (or index) + +### Develop-docs (optional) + +- `develop-docs/backend/application-domains/transaction-clustering/index.mdx` — Insights product, metrics +- `develop-docs/sdk/telemetry/traces/opentelemetry.mdx` — performance monitoring product + +### Middleware and redirects + +- **`src/middleware.ts`:** + - Change every `to: '/product/insights/...'` to the new destination (see path mapping). + - `to: '/product/insights/performance-overhead/'` → `to: '/product/dashboards/sentry-dashboards/'`. + - `to: '/product/insights/retention-priorities/'` → `to: '/organization/dynamic-sampling/'`. + - Remove or replace redirect to `/product/insights/overview/trends/` (e.g. send `/product/performance/trends/` to `/product/dashboards/sentry-dashboards/`). +- **`redirects.js`:** Add redirects for all old `/product/insights/*` URLs to the new sentry-dashboards paths. `redirects.js` already has `product/insights/retention-priorities/` → `organization/dynamic-sampling/`; add the rest of the insights → sentry-dashboards mappings. + +--- + +## Product naming (Insights → Sentry dashboards) + +Where the **product** is named "Insights," change to "Sentry dashboards" (or "Sentry Dashboards" where appropriate). Examples: + +- "Insights" (standalone) → "Sentry dashboards" +- "Insights tab" → "Sentry Dashboards tab" or "dashboards" +- "Insights Overview" → "Sentry Dashboards" or "Sentry dashboards overview" (depending on context after merge) +- "Insights and Tracing" → "Sentry dashboards and Tracing" or "Sentry Dashboards and tracing" +- "Insight Domain" → "Sentry dashboards domain" or rephrase +- "Insights for Mobile Vitals" → "Sentry dashboards for Mobile Vitals" or "Mobile Vitals in Sentry Dashboards" +- "[Insights](/product/insights/)" → "[Sentry dashboards](/product/dashboards/sentry-dashboards/)" + +**Files to review for naming (in addition to link updates above):** + +- `docs/product/insights/*` (content that moves into sentry-dashboards): replace "Insights" with "Sentry dashboards" in titles, descriptions, and body. +- `docs/product/sentry-basics/performance-monitoring.mdx` — "Insights" pages +- `docs/product/issues/issue-details/performance-issues/index.mdx` — "Insights and Tracing" +- `docs/product/crons/alerts-backend-insights-migration.mdx` — "Insights > Backend" +- `docs/concepts/key-terms/key-terms.mdx` — "Insights Overview" +- `docs/concepts/key-terms/tracing/index.mdx` — "Insights" page, "Sentry's Insights" +- `docs/platforms/dotnet/common/enriching-events/transaction-name/index.mdx` — "Insights product" +- `docs/platforms/react-native/enriching-events/transaction-name/index.mdx` — "Insights product" +- `docs/platforms/android/enriching-events/transaction-name/index.mdx` — "Insights product" +- `docs/product/pricing/legacy-pricing.mdx` — "Insights features" + +--- + +## Performance Overhead + +- **Page:** `docs/product/insights/performance-overhead.mdx` is deleted; content merged or summarized in Sentry dashboards index. +- **Redirect:** Add (in `redirects.js` or middleware): + `/product/insights/performance-overhead/` → `/product/dashboards/sentry-dashboards/` +- **Links to update (→ `/product/dashboards/sentry-dashboards/`):** + - `docs/platforms/android/overhead/index.mdx` + - `docs/platforms/apple/common/overhead/index.mdx` + - `docs/platforms/dart/common/overhead/index.mdx` + - `docs/platforms/dart/guides/flutter/overhead/index.mdx` + - `docs/platforms/react-native/overhead/index.mdx` +- **Middleware:** Update rule that sends old performance-overhead URL to insights; point to sentry-dashboards instead. + +--- + +## Summary checklist + +- [ ] Move/merge all content from `docs/product/insights/` to `docs/product/dashboards/sentry-dashboards/` per migration plan (including single `queues.mdx`, merged outbound-api-requests, etc.). +- [ ] Migrate `img` folders with each moved doc; fix image paths in MDX. +- [ ] Update every link in the "Files to update" list to use new paths (path mapping table). +- [ ] Replace product name "Insights" with "Sentry dashboards" in moved content and in the "Product naming" files. +- [ ] Add redirects for all old `/product/insights/*` URLs to new sentry-dashboards URLs (redirects.js and/or middleware). +- [ ] Performance overhead: redirect + update 5 platform overhead docs. +- [ ] Middleware: retention-priorities → `/organization/dynamic-sampling/`; trends → remove or send to sentry-dashboards. +- [ ] Fix widgets.mdx Queries link: `/product/insights/queries` → `/product/dashboards/sentry-dashboards/backend/queries/` (in migrated/salvaged content). +- [ ] AI: ensure any remaining `/product/insights/ai/*` links point to current `docs/ai` URLs (e.g. `/ai/monitoring/agents/`). diff --git a/docs/product/dashboards/sentry-dashboards/ai/index.mdx b/docs/product/dashboards/sentry-dashboards/ai/index.mdx new file mode 100644 index 0000000000000..5b5a7acf44bc6 --- /dev/null +++ b/docs/product/dashboards/sentry-dashboards/ai/index.mdx @@ -0,0 +1,12 @@ +--- +title: AI +sidebar_order: 50 +description: "Use Sentry Dashboards to monitor AI agents and MCP performance." +--- + +Sentry Dashboards include dedicated views for AI monitoring. Use them to track agent executions, token usage, tool calls, and MCP (Model Context Protocol) traffic. + +- **[AI Agents Dashboard](/ai/monitoring/agents/dashboard/)** — View AI agent workflows, model costs, token usage, and tool calls. See [Set up AI Agent Monitoring](/ai/monitoring/agents/getting-started/) to get started. +- **[MCP Dashboard](/ai/monitoring/mcp/dashboard/)** — Monitor MCP server usage and performance. See [Set up MCP](/ai/monitoring/mcp/getting-started/) to get started. + +For data privacy and security, see [AI Agents Data Privacy](/ai/monitoring/agents/privacy/). diff --git a/docs/product/dashboards/sentry-dashboards/backend/caches.mdx b/docs/product/dashboards/sentry-dashboards/backend/caches.mdx new file mode 100644 index 0000000000000..3448e24f78ab2 --- /dev/null +++ b/docs/product/dashboards/sentry-dashboards/backend/caches.mdx @@ -0,0 +1,54 @@ +--- +title: "Caches" +sidebar_order: 70 +description: "Learn more about cache monitoring with Sentry and how it can help improve your application's performance." +--- + +A cache can be used to speed up data retrieval, improving application performance. It temporarily stores data to speed up subsequent access to that data, allowing your application to get data from cached memory (if it is available) instead having to repeatedly fetch the data from a potentially slow data layer. Caching can speed up read-heavy workloads for applications like Q&A portals, gaming, media sharing, and social networking. + +A successful cache results in a high hit rate which means the data was present when fetched. A cache miss occurs when the data fetched was not present in the cache. If you have [performance monitoring](/product/sentry-basics/performance-monitoring/#how-to-set-up-performance-monitoring) enabled and your application uses caching, you can see how your caches are performing with Sentry. + +Sentry's cache monitoring provides insights into cache utilization and latency to help you improve performance on endpoints that interact with caches. + +With the Cache dashboard found in [Sentry Dashboards](https://sentry.io/orgredirect/organizations/:orgslug/dashboards/), you get an overview of the transactions within your application that are making at least one lookup against a cache. From there, you can dig into specific cache span operations by clicking a transaction and viewing its sample list. + +![Caches dashboard =800x](../img/caches-dash.png) +{/* */} + +## Instrumentation + +Cache monitoring currently supports [auto instrumentation](/platform-redirect/?next=%2Ftracing%2Finstrumentation%2Fautomatic-instrumentation) for [Django's cache framework](https://docs.djangoproject.com/en/5.0/topics/cache/) when the [cache_spans option](/platforms/python/integrations/django/#options) is set to `True`. Other frameworks require custom instrumentation. + +### Custom instrumentation + +If available, custom instrumentation is documented on an environment-by-environment basis as listed below: + +- [Python SDK](/platforms/python/tracing/instrumentation/custom-instrumentation/caches-module/) +- [JavaScript SDKs](/platforms/javascript/guides/node/tracing/instrumentation/custom-instrumentation/caches-module/) +- [PHP SDK](/platforms/php/tracing/instrumentation/caches-module/) +- [Java SDK](/platforms/java/tracing/instrumentation/custom-instrumentation/caches-module/) +- [Ruby SDK](/platforms/ruby/tracing/instrumentation/custom-instrumentation/caches-module/) +- [.NET SDK](/platforms/dotnet/tracing/instrumentation/custom-instrumentation/caches-module/) + +To see what cache data can be set on spans, see the [Cache Module Developer Specification](https://develop.sentry.dev/sdk/performance/modules/caches/). + +## Caches Dashboard + +The **Caches** dashboard gives an overview of cache performance across all endpoints for currently selected backend projects with summary graphs for **Miss Rate** and **Requests Per Minute** (throughput). You can use these as a starting point to see if there are any potential cache performance issues, for example, a higher than expected Miss Rate percentage. + +If you see an anomaly or want to investigate a time range further, click and drag to select a range directly in the graph and data will be filtered for that specific time range only. + +The transaction table shows a list of endpoints that contain at least one `cache.get` span along with: + +- Its average value size (the bytes being fetched from cache) +- Requests per minute +- Miss rate percentage (how often did a lookup did not return a value) +- Time spent (total time your application spent on a given transaction) + +By default, this table is sorted by most time spent. This means that endpoints at the top are usually really slow, requested very frequently, or both. + +Click on a transaction to go to the Transaction Summary page, or explore span samples on the Traces page. + +## Sample List + +To help you compare the performances of cache hits (where a value was found in the cache) versus misses (where no value corresponding to the key was found in the cache) over time, Sentry automatically surfaces a distribution of both samples for the timeframe selected from the **Caches** dashboard by clicking on a transaction and selecting to **View span samples**. Drill into any span on the Traces page to see a waterfall view. diff --git a/docs/product/dashboards/sentry-dashboards/backend/index.mdx b/docs/product/dashboards/sentry-dashboards/backend/index.mdx new file mode 100644 index 0000000000000..23b53f8674b09 --- /dev/null +++ b/docs/product/dashboards/sentry-dashboards/backend/index.mdx @@ -0,0 +1,22 @@ +--- +title: Backend Dashboards +sidebar_order: 20 +description: >- + Learn how to use Sentry's Backend Overview dashboards to monitor things like + queries, outbound API requests, caches, and queues. +og_image: /og-images/product-insights-backend.png +--- + +Sentry's [**Backend dashboards**](https://sentry.io/orgredirect/organizations/:orgslug/dashboards/) page gives you an overview of the health of your application. + +## Backend Overview Dashboard + +Start with the **Backend Overview** dashboard to get a quick overview of your application. See things like **Most Time-Consuming Queries**, **Most Time-Consuming Domains**, **p50** and **p75 Duration**, and so on. + +![Backend performance overview page. =800x](../img/backend-performance-overview.png) + +You can also dive deeper into Queries, Outbound API Requests, Caches, and Queues to get detailed information about potential issues affecting your application's health. + +## Learn More + + diff --git a/docs/product/dashboards/sentry-dashboards/backend/queries.mdx b/docs/product/dashboards/sentry-dashboards/backend/queries.mdx new file mode 100644 index 0000000000000..1dd560b8d252e --- /dev/null +++ b/docs/product/dashboards/sentry-dashboards/backend/queries.mdx @@ -0,0 +1,122 @@ +--- +title: Queries +sidebar_order: 0 +description: >- + With Queries in Sentry, you can easily see database queries, remediate + performance errors & monitor query performance. +og_image: /og-images/product-insights-backend-queries.png +--- + +With the Queries dashboard in [Sentry Dashboards](/product/dashboards/sentry-dashboards/), when your application queries a database, you can see how your queries are performing in Sentry. + +Sentry's query monitoring helps you investigate the performance of your queries and get more information to improve them. + +Starting with the [Queries overview dashboard](#queries-overview-dashboard), you get a high-level view of how your queries are doing. From there, you can drill into a specific query's [Query Details dashboard](#query-details-dashboard) and investigate sample events from the [Sample List](#sample-list) to better understand the context of their performance for a specific endpoint. + +{/* */} + +![Queries overview dashboard =800x](../img/queries-dash.png) + +## Prerequisites and Limitations + +The queries widget and dashboards are only available for backend projects with [performance monitoring](/product/sentry-basics/performance-monitoring/#how-to-set-up-performance-monitoring) enabled. + +### Recommended SDK Versions + +Query monitoring works best with up-to-date SDK versions. The following minimum versions are recommended: + +- [Python SDK v1.29.2](https://github.com/getsentry/sentry-python/releases/tag/1.29.2) +- [JavaScript SDKs v7.63.0](https://github.com/getsentry/sentry-javascript/releases/tag/7.63.0) +- [Laravel SDK v3.8.0](https://github.com/getsentry/sentry-laravel/releases/tag/3.8.0) +- [Cocoa SDK v8.11.0](https://github.com/getsentry/sentry-cocoa/releases/tag/8.11.0) +- [Java SDK v6.29.0](https://github.com/getsentry/sentry-java/releases/tag/6.29.0) +- [Ruby SDK v5.11.0](https://github.com/getsentry/sentry-ruby/releases/tag/5.11.0) +- [.NET SDK v3.39.0](https://github.com/getsentry/sentry-dotnet/releases/tag/3.39.0) +- [Symfony SDK v4.11.0](https://github.com/getsentry/sentry-symfony/releases/tag/4.11.0) +- [Android SDK v6.30.0](https://github.com/getsentry/sentry-java/releases/tag/6.30.0) + +### Span Eligibility + +Sentry tries to extract metrics for all SQL-like dialects, as well as MongoDB. Other NoSQL databases like Elasticsearch, graph databases like Neo4j, and other non-SQL database systems are not currently eligible for this feature. + +If you are using automatic instrumentation, query performance monitoring should work without any configuration. If you've manually instrumented Sentry, you'll need to make sure that your spans conform to our standards for the best experience: + +- The span `op` field is set to an [eligible value](https://develop.sentry.dev/sdk/performance/span-operations/#database). +- The span's description contains the full, parameterized query (e.g. `"SELECT * FROM users WHERE id = ?"`). Supported placeholder values for SQL are `%s`, `?`, `:c0` (e.g. `:c0`, `:c1`) and `$1` (e.g. `$1`, `$2`). MongoDB span descriptions should contain valid JSON, and placeholders should be the string `"?"`. +- The `db.system` span data value is set to the [correct identifier](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/db/database-spans.md) (e.g., `"postgresql"` or `"mongodb"`). + +## Queries Overview Dashboard + +The Queries dashboard gives you a quick overview of your application's query performance for the selected project(s). You can use this dashboard as a starting point to investigate potential problem queries and drill down to better understand how various queries are affecting your app's performance. + +Open the Queries dashboard in [Sentry Dashboards](/product/dashboards/sentry-dashboards/). + +Get high-level insights into database performance using summary graphs for queries per minute (throughput) and average duration. If you see an anomaly or want to investigate a time range further, you can click and drag to select a range directly in a graph to filter data for that range. + +The query description table shows a list of queries, their volume (queries per minute), average duration, and the total time your app spent running that query (time spent). The query descriptions are parametrized, so your queries may look slightly different. + +By default, this table is sorted by most [time spent](#what-is-time-spent). This means that queries at the top are usually really slow, very frequent, or both. You can change this to sort by queries per minute to see the most frequently run queries, or by average duration to see the slowest queries. + +You can also use the [global and custom filters](/product/dashboards/#global-filters) to filter all data for specific commands (such as `SELECT` and `UPDATE`) and tables/collections queried. + +To view more details, click on a query from the table to open its Query Details dashboard. + +### Query Parameterization + +Sometimes, Sentry processes queries and simplifies them to improve readability. For example, for SQL queries: + +- Table names are removed from column selections if possible (e.g., `SELECT "users"."name", "users"."id", "users.age" FROM users` becomes `SELECT name, id, age FROM users`) +- Long lists of `SELECT` arguments are collapsed (e.g., `SELECT id, name, age, city, country, phone FROM users` becomes `SELECT .. FROM users`) +- Long lists of `VALUES` arguments are collapsed (e.g., `INSERT INTO users (id, email, name, age) VALUES (%s %s %s %s)` becomes `INSERT INTO users (..) VALUES (%s)`) +- `CASE / WHEN` statements are collapsed + +For MongoDB queries: + +- Leaf values are replaced with the placeholder `"?"` +- A maximum depth is applied to deeply nested query objects + +You can see the full query by hovering on a truncated description, or clicking it to see its **Query Details** dashboard. + +## Query Details Dashboard + +To open a single query's **details** dashboard, click on the query from either the table in the "Queries by Time Spent" widget on the Backend Overview dashboard or the table in the Queries dashboard. + +Start with queries per minute, average duration, and time spent for the selected time range. The full query is shown below these metrics, followed by graphs for queries per minute and average duration. The query's source in the code is also shown if it is available. + +At the bottom, you can find a list of endpoints the query is found in, sorted by the most time your application spent in that span. + +If you want to investigate a specific endpoint, click on it to open a sidebar showing some sample events. + +## Query Sources + + + +Query Sources are currently supported in Sentry's [Laravel](/platforms/php/guides/laravel/configuration/laravel-options/#more-configuration) (enabled by default) and [Python](/platforms/python/configuration/options/#enable-db-query-source) (enabled by default) SDKs. Sentry only attaches query sources to queries that are slower than a configurable threshold ([Python](/platforms/python/configuration/options/#db-query-source-threshold-ms), [Laravel](/platforms/php/guides/laravel/configuration/laravel-options/#more-configuration)) to reduce the performance impact. + + + +A query's source is the location in your application's code that triggered the query. Sentry automatically determines the query source by examining the [stack trace](/product/sentry-basics/integrate-frontend/upload-source-maps/) and attaches the source to the query data. + +You can see the query's source underneath the query description on the **Query Details** dashboard, as shown in the image below. If you have a [source code management integration](/organization/integrations/source-code-mgmt/) enabled, Sentry will also show a link to open the query's source in the relevant repository. + +![Example of Query Source](../img/query-source-laravel.png) + +## Sample List + +Click on an endpoint to go to its samples list. This traces page shows summary metrics (like EPM, average, and sum duration) for the query in the specific endpoint. + +The table shows a sample list of events, their span duration, and the difference in duration compared to the average. This table is sorted by longest span duration. + +Sentry automatically finds a variety of samples to help you investigate performance problems. The chosen events will cover the entire selected time range, as well as a range of durations (both faster than, slower than, and near the average duration). You can get a sense of the performance characteristics by comparing different sample events. + +From the sample list, you can drill down to specific good, average, or bad examples of a given query within a given endpoint. Click on an event ID to drill into the query's span details within the span waterfall of the [Trace View page](/concepts/key-terms/tracing/trace-view/). + +## What is Time Spent? + +By default, queries are sorted by **time spent**, which serves as a proxy for the relative impact of a given query. + +Every database query takes some time to execute. When an application sends a query, it waits for the database to receive the query, parse it, execute it, and return the result. In Sentry, the total time taken from sending the query to receiving the full result is called the query's **duration**. The query's **time spent** is the sum of all its durations in a given period. + +For example, an application might send a query like `SELECT * FROM users LIMIT 10` every time a user calls the `/users` endpoint. The query might take anywhere from 100ms to 200ms to run, and the endpoint is called anywhere from 10 times a minute to 100 times in a minute depending on the time of day. The query's time spent is the sum of all of its durations that occurred in a given period. Put another way, the time spent is the product of the average duration and queries per minute. In a high-throughput application, a query's time spent might be measured in weeks or months. + +Time spent is a useful way to measure a query's relative impact, compared to other queries in an application. For example, if one query's time spent is 7 days, and another is just 2 hours, the query with more time spent is probably more impactful to fix. Even a small improvement in duration would result in a meaningful overall improvement. Time spent can also be a strong signal that something is wrong. Queries that suddenly start taking up more time often signal a problem. diff --git a/docs/product/dashboards/sentry-dashboards/backend/queues.mdx b/docs/product/dashboards/sentry-dashboards/backend/queues.mdx new file mode 100644 index 0000000000000..b7dd1dd9f941c --- /dev/null +++ b/docs/product/dashboards/sentry-dashboards/backend/queues.mdx @@ -0,0 +1,75 @@ +--- +title: "Queues" +sidebar_order: 30 +description: "Learn how to monitor your queues with Sentry for improved application performance and health." +--- + +Message Queues make asynchronous service-to-service communication possible in distributed architectures. Queues are great for helping work that sometimes fails become more resilient, and therefore a building block for distributed applications. Some examples of what queues can help with include handling webhooks from third-party APIs or handling periodic tasks, such as calculating daily metrics for your users. + +If you have [performance monitoring](/product/sentry-basics/performance-monitoring/#how-to-set-up-performance-monitoring) enabled and your application interacts with message queue systems, you can configure Sentry to monitor their performance and health. + +Queues allows you to monitor both the performance and error rates of both your queue consumers and producers, providing observability into your distributed system. + +The Queues dashboard found in [Sentry Dashboards](/product/dashboards/sentry-dashboards/) gives you a high-level overview so that you can see where messages are being written to. **Note:** You may see topic names or actual queue names, depending on the messaging system. If you click on a destination, you'll go to the **Queue Details** dashboard, which provides metrics about specific endpoints within your applications that either write to, or read from the destination. You can also dig into individual endpoints within your application representing producers creating messages, and consumers reading messages. In those lists, you'll see actual traces representing messages processed by your application. + +{/* */} + +### Prerequisites and Limitations + +Queues currently supports [auto instrumentation](/platform-redirect/?next=%2Ftracing%2Finstrumentation%2Fautomatic-instrumentation) for the [Celery Distributed Task Queue](https://docs.celeryq.dev/en/stable/) in Python. Other messaging systems can be monitored using custom instrumentation. + +Instructions for custom instrumentation in various languages are linked to below: + +- [Python SDK](/platforms/python/tracing/instrumentation/custom-instrumentation/queues-module/) +- [JavaScript SDK](/platforms/javascript/guides/node/tracing/instrumentation/custom-instrumentation/queues-module/) +- [PHP SDK](/platforms/php/tracing/instrumentation/queues-module/) +- [Java SDK](/platforms/java/tracing/instrumentation/custom-instrumentation/queues-module/) +- [Ruby SDK](/platforms/ruby/tracing/instrumentation/custom-instrumentation/queues-module/) +- [.NET SDK](/platforms/dotnet/tracing/instrumentation/custom-instrumentation/queues-module/) + +## Queues Dashboard + +The **Queues** dashboard provides a breakdown of queue performance by destination (the topic name or queue name). Use it as a starting point to investigate potential problems with queues, such as higher than expected processing latency. + +At the top of the dashboard, the Average Duration graph shows the total time that messages take to complete. The Published versus Processed graph shows how many messages are being written to the queue versus how many are being completed. If you see an anomaly or want to investigate a time range further, click and drag to select a range directly in the graph and you'll see data for that specific time range only. + +The destination table shows where messages are being published to, along with: + +- Avg time in queue (the time spent both waiting and being processed in the queue) +- Avg processing time (the time spent processing the message) +- Error rate (how often do jobs fail to complete) +- Published versus processed count +- Processed (messages per minute) +- Time spent (total time your application spent processing jobs) + +If you want to dig deeper into the behavior of a specific destination, click the destination name to view the **Queue Details** dashboard. + +## Queue Details Dashboard + +To view the **Queue Details** dashboard click a [destination](https://opentelemetry.io/docs/specs/semconv/messaging/messaging-spans/#destinations) in the **Queues** dashboard. + +At the top of the dashboard you'll see average time in queue, average processing latency, error rate, published versus processed counts, and the total time spent by your application processing jobs. These metrics are shown in relation to the destination, whereas the **Queues** dashboard shows summed up metrics across all destinations. Below the summary you can view graphs for average latency and published versus processed counts. + +At the bottom of the dashboard, a table is shown listing transactions that either published or processed queue messages. + +If a problem with a specific endpoint jumps out at you, click the transaction to view sample spans and to navigate to the corresponding trace. + +### Sample List + +Click on an endpoint to open a list of sample spans. This will take you to the traces page for that transaction. + +### Producer Sample List + +Sentry automatically finds a variety of samples to help you investigate performance problems. The chosen spans cover the entire selected time range, as well as a range of durations and failure statues. + +The Producer panel shows the number of messages the producer has published, the error rate (representing errors that occur while publishing the message), and the average duration of the transaction that publishes the message to the queue. + +To dig even deeper, click on a span identifier to view a detailed trace. + +### Consumer Sample List + +Sentry automatically finds a variety of samples to help you investigate performance problems. The chosen spans cover the entire selected time range, as well as a range of durations and failure statues. + +The Consumer panel shows the number of messages the consumer has processed, the error rate, the average time a message spends in a queue, and the average amount of time spent processing the message. + +To dig even deeper, click on a transaction to go to the transaction summary page, or a span in the traces page to see a waterfall view of the span. \ No newline at end of file diff --git a/docs/product/dashboards/sentry-dashboards/frontend/assets.mdx b/docs/product/dashboards/sentry-dashboards/frontend/assets.mdx new file mode 100644 index 0000000000000..744c172a2cbb1 --- /dev/null +++ b/docs/product/dashboards/sentry-dashboards/frontend/assets.mdx @@ -0,0 +1,159 @@ +--- +title: Assets +sidebar_order: 20 +description: >- + Learn more about browser asset performance monitoring, which allows you to + debug the performance of loading JavaScript and CSS on your frontend. +og_image: /og-images/product-insights-frontend-assets.png +--- + +If you have [tracing](/product/sentry-basics/tracing/) enabled for your frontend, you can see how your browser assets are performing in Sentry. + +Starting with the [Assets dashboard](#assets-dashboard), you get a high-level overview of how your assets are doing. From there, you can drill into a specific asset's [Asset Summary dashboard](#asset-summary-dashboard) and then investigate sample events from the [Sample List](#sample-list) to better understand the context of its performance in a specific page. + +## Prerequisites and Limitations + +The asset pages are only available for frontend JavaScript projects with performance monitoring enabled. Currently only JavaScript, CSS, images, and certain assets that are initiated by CSS (such as fonts), are supported. + +For the best experience, we recommend enabling automatic instrumentation via the `BrowserTracing` integration for your frontend project to see asset performance data. This is supported for the following JavaScript platforms: + +- [Vanilla JavaScript](/platforms/javascript/performance/) +- [Angular](/platforms/javascript/guides/angular/performance/) +- [Astro](/platforms/javascript/guides/astro/performance/) +- [Ember](/platforms/javascript/guides/ember/performance/) +- [Gatsby](/platforms/javascript/guides/gatsby/performance/) +- [Next.js](/platforms/javascript/guides/nextjs/performance/) +- [React](/platforms/javascript/guides/react/performance/) +- [Remix](/platforms/javascript/guides/remix/performance/) +- [Svelte](/platforms/javascript/guides/svelte/performance/) +- [SvelteKit](/platforms/javascript/guides/sveltekit/performance/) +- [Vue](/platforms/javascript/guides/vue/performance/) + +### Span Eligibility + +Sentry tries to extract metrics by looking at asset-related spans. + +The JavaScript SDK automatically generates `asset` spans on `pageload` and `navigation` transactions using the browser's [Resource Timing API](https://developer.mozilla.org/en-US/docs/Web/API/Performance_API/Resource_timing). + +If you are using automatic instrumentation, asset monitoring should work without any configuration. + +If you've manually instrumented Sentry, you'll need to make sure that your spans conform to our standards for the best experience: + +- The span `op` field is prefixed with `resource` (for example, `resource.script` or `resource.css`). +- The span's `description` contains the URL of the loaded resource, which should correspond to the [PerformanceResourceTiming name field](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry/name). +- The `http.response_transfer_size` span data value is set to the [total transfer size](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/transferSize) of the resource. +- The `http.response_content_length` span data value is set to the [encoded body size](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/encodedBodySize) of the resource. +- The `http.decoded_response_content_length` span data value is set to the [decoded body size](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/decodedBodySize) of the resource. +- The `resource.render_blocking_status` span data value is set to the [render blocking status](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/renderBlockingStatus) of the resource. + +Here's an example snippet of creating a resource span manually with the SDK. + +```javascript +// https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming +const resources = performance.getEntriesByType("resource"); +resources.forEach((entry) => { + const startTime = msToSec(entry.startTime); + const duration = msToSec(entry.duration); + + const span = Sentry.startInactiveSpan({ + startTimestamp: startTime, + op: entry.initiatorType + ? `resource.${entry.initiatorType}` + : "resource.other", + description: entry.name, + data: { + "http.response_transfer_size": entry.transferSize, + "http.response_content_length": entry.encodedBodySize, + "http.decoded_response_content_length": entry.decodedBodySize, + "resource.render_blocking_status": entry.renderBlockingStatus, + }, + }); + + // override end timestamp to match performance entry + span.finish(startTime + duration); +}); +``` +## Assets Dashboard + +The **Assets** dashboard gives you a quick overview of your application's asset performance for the selected project(s). + +Find the Assets dashboard in [Dashboards](https://sentry.io/orgredirect/organizations/:orgslug/dashboards/). + +At the top of the page, summary graphs for requests per minute (throughput) and average duration provide high-level insight into the performance of your assets. If you see an anomaly or want to investigate a time range further, you can click and drag to select a range directly in a graph to filter data for that time range. + +The asset table below shows a list of grouped assets, along with their type, their volume (requests per min), average duration, the total time your app spent loading that asset (time spent), and [average encoded size](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/encodedBodySize) of the asset. + +By default, the assets table is sorted by most time spent, which serves as a proxy for the relative performance impact of a given asset. An asset's time spent is the sum of all its durations in a given time period or, put another way, the product of its average duration and requests per minute. This means that assets at the top are usually loading really slowly, very frequently, or both. + +You can click on a column header to change how the table is sorted. Sort by requests per minute to see the most frequently loaded assets or by average duration to see the slowest-loading assets. + +You can also filter assets by domain, type, page it's found on, and whether it has render blocked. + +To view more details, click on an asset from the table to open its **Asset Summary** dashboard. + + +### What Does a Render Blocking Mean? + +A render blocking asset is one which will stop the browser from rendering anything on the screen, until the asset is fully downloaded and processed by the browser. + +An example of this is a `