diff --git a/.gitignore b/.gitignore index 5e9d599ef29ba..835b83a58a8d1 100644 --- a/.gitignore +++ b/.gitignore @@ -93,5 +93,3 @@ public/page-data # tsbuildinfo file generated by CI tsconfig.tsbuildinfo - -public/mdx-images/* diff --git a/docs/api/guides/create-auth-token.mdx b/docs/api/guides/create-auth-token.mdx index 631377d999ef0..6d0f2d06452d9 100644 --- a/docs/api/guides/create-auth-token.mdx +++ b/docs/api/guides/create-auth-token.mdx @@ -27,7 +27,7 @@ See our documentation on [authentication](/api/auth/) to learn more about the di 1. Enter a name for your integration. -![Sentry.io UX walkthrough of creating an internal integration.](./img/create-internal-integration.gif) +![Sentry.io UX walkthrough of creating an internal integration.](/api/guides/create-internal-integration.gif) ## Create a API Authentication Token @@ -39,6 +39,6 @@ See our documentation on [authentication](/api/auth/) to learn more about the di 1. Scroll down to the bottom of the page and copy the generated token under "Tokens". -![Sentry.io UX walkthrough of creating a token and setting it's permissions.](./img/set-token-permissions.gif) +![Sentry.io UX walkthrough of creating a token and setting it's permissions.](/api/guides/set-token-permissions.gif) Keep your auth token around on your clipboard or in an environment variable to use in API calls. diff --git a/docs/api/permissions.mdx b/docs/api/permissions.mdx index 8569d635d8446..7520a3d9923d2 100644 --- a/docs/api/permissions.mdx +++ b/docs/api/permissions.mdx @@ -10,7 +10,7 @@ To set the scopes for an [integration token](/product/integrations/integration-p To set the scopes for an auth token, select the scopes from the dropdown when [creating an auth token](https://sentry.io/api/). These cannot be edited later. -![](./img/user-auth-token-create.png) +![](/product/accounts/auth-tokens/user-auth-token-create.png) If you're looking for information on membership roles please visit the [membership](/product/accounts/membership/) documentation. diff --git a/docs/platforms/android/configuration/app-not-respond.mdx b/docs/platforms/android/configuration/app-not-respond.mdx index 1a339470df1cb..0cbd6f2ce96af 100644 --- a/docs/platforms/android/configuration/app-not-respond.mdx +++ b/docs/platforms/android/configuration/app-not-respond.mdx @@ -64,7 +64,7 @@ If [ApplicationExitInfo#getTraceInputStream]( -![ANR](./img/app-not-respond.png) +![ANR](/platforms/android/configuration/app-not-respond.png) #### Historical ANRs @@ -102,7 +102,7 @@ SentryAndroid.init(context) { options -> } ``` -![ANR Thread Dump](./img/app-not-respond-thread-dump.png) +![ANR Thread Dump](/platforms/android/configuration/app-not-respond-thread-dump.png) ## ANR Root Cause Analysis @@ -112,16 +112,16 @@ Sentry performs various root cause analyses to give you insights about why certa If an ANR is connected to one of the Performance Issues detected by Sentry (for example, [File I/O on Main Thread](/product/issues/issue-details/performance-issues/file-main-thread-io/) or [DB on Main Thread](/product/issues/issue-details/performance-issues/db-main-thread-io/)), the offending span will be linked to the ANR event, showing you exactly which slow operation is to blame. -![ANR Root Cause File I/O](./img/anr-rootcause-fileio.png) +![ANR Root Cause File I/O](/platforms/android/configuration/anr-rootcause-fileio.png) ### Common Patterns This detector looks at the stack trace of an ANR and tries to identify common pitfalls, such as accessing files, assets, or heavy resources on the main thread. If an offending stack frame is found, it'll be highlighted in the stack trace with some information about how to prevent this type of ANR: -![ANR Root Cause Suspect Frame](./img/anr-rootcause-frame.png) +![ANR Root Cause Suspect Frame](/platforms/android/configuration/anr-rootcause-frame.png) ### Deadlock Detection Sentry will try to detect deadlocks and point out potential causes. If, for example, the main thread is blocked by waiting on a lock object that's held by another thread, the suspect frame that's waiting on the lock will be highlighted. The stack trace of the offending thread that's holding the lock, as well as the offending frame of that thread will also be shown: -![ANR Root Cause Deadlock](./img/anr-rootcause-deadlock.png) +![ANR Root Cause Deadlock](/platforms/android/configuration/anr-rootcause-deadlock.png) diff --git a/docs/platforms/android/data-management/debug-files/source-context/index.mdx b/docs/platforms/android/data-management/debug-files/source-context/index.mdx index 973aefa65b3e7..fcd851f749672 100644 --- a/docs/platforms/android/data-management/debug-files/source-context/index.mdx +++ b/docs/platforms/android/data-management/debug-files/source-context/index.mdx @@ -9,7 +9,7 @@ If Sentry has access to your application's source code, it can show snippets of For example, here's a stack trace from a .NET application. The source context contains the original C# source code of the application, with the location of the frame highlighted. -![Screenshot of stack trace showing source context.](./img/source-context-screenshot.png) +![Screenshot of stack trace showing source context.](/platforms/android/data-management/debug-files/source-context/source-context-screenshot.png) ### Source Bundles diff --git a/docs/platforms/android/data-management/debug-files/upload/index.mdx b/docs/platforms/android/data-management/debug-files/upload/index.mdx index 77b5f21be7559..d19404acb259b 100644 --- a/docs/platforms/android/data-management/debug-files/upload/index.mdx +++ b/docs/platforms/android/data-management/debug-files/upload/index.mdx @@ -9,7 +9,7 @@ to upload them using `sentry-cli`. Depending on your workflow, you may want to upload as part of your build pipeline or when deploying and publishing your application: -![](/img/debug-files-workflow.png) +![](/platforms/android/data-management/debug-files/upload/debug-files-workflow.png) diff --git a/docs/platforms/android/enriching-events/attachments/index.mdx b/docs/platforms/android/enriching-events/attachments/index.mdx index 3e6ba39be0975..19f5f77b79f1e 100644 --- a/docs/platforms/android/enriching-events/attachments/index.mdx +++ b/docs/platforms/android/enriching-events/attachments/index.mdx @@ -49,7 +49,7 @@ Learn more about how attachments impact your [quota](/product/accounts/quotas/). To limit access to attachments, navigate to your organization's **General Settings**, then select the _Attachments Access_ dropdown to set appropriate access — any member of your organization, the organization billing owner, member, admin, manager, or owner. -![Attachments Access](/img/attachments-access.png) +![Attachments Access](/platforms/android/enriching-events/attachments/attachments-access.png) By default, access is granted to all members when storage is enabled. If a member does not have access to the project, the ability to download an attachment is not available; the button will be greyed out in Sentry. The member may only view that an attachment is stored. @@ -57,11 +57,11 @@ By default, access is granted to all members when storage is enabled. If a membe Attachments display on the bottom of the **Issue Details** page for the event that is shown. -![Attachments Access Denied](/img/attachments-access-denied.png) +![Attachments Access Denied](/platforms/android/enriching-events/attachments/attachments-access-denied.png) Alternately, attachments also appear in the _Attachments_ tab on the **Issue Details** page, where you can view the _Type_ of attachment, as well as associated events. Click the Event ID to open the **Issue Details** of that specific event. -![Attachments List Example](/img/attachments-list-example.png) +![Attachments List Example](/platforms/android/enriching-events/attachments/attachments-list-example.png) ## Maximum Attachment Size diff --git a/docs/platforms/android/enriching-events/context/index.mdx b/docs/platforms/android/enriching-events/context/index.mdx index 288bbadd5d4ea..e2d3beff0aa2c 100644 --- a/docs/platforms/android/enriching-events/context/index.mdx +++ b/docs/platforms/android/enriching-events/context/index.mdx @@ -5,7 +5,7 @@ description: "Custom contexts allow you to attach arbitrary data (strings, lists Custom contexts allow you to attach arbitrary data to an event. Often, this context is shared among any issue captured in its lifecycle. You cannot search these, but they are viewable on the issue page: -![Custom contexts as viewed on the Additional Data section of an event](/img/additional_data.png) +![Custom contexts as viewed on the Additional Data section of an event](/platforms/android/enriching-events/context/additional_data.png) diff --git a/docs/platforms/android/enriching-events/screenshots/index.mdx b/docs/platforms/android/enriching-events/screenshots/index.mdx index 21b747ce283f3..6b878b04e1f57 100644 --- a/docs/platforms/android/enriching-events/screenshots/index.mdx +++ b/docs/platforms/android/enriching-events/screenshots/index.mdx @@ -17,8 +17,8 @@ Because screenshots may contain diff --git a/docs/platforms/android/integrations/jetpack-compose/index.mdx b/docs/platforms/android/integrations/jetpack-compose/index.mdx index 8ab307cbf171f..347a446e69501 100644 --- a/docs/platforms/android/integrations/jetpack-compose/index.mdx +++ b/docs/platforms/android/integrations/jetpack-compose/index.mdx @@ -21,7 +21,7 @@ _(New in version 6.16.0)_ With Jetpack Compose performance metrics the Sentry Android SDK can automatically measure the initial `composition` and `rendering` time as performance spans of your `@Composable` UI elements. -![Jetpack Compose Performance Metrics](./img/jetpack-compose-performance-metrics.png) +![Jetpack Compose Performance Metrics](/platforms/android/integrations/jetpack-compose/jetpack-compose-performance-metrics.png) @@ -74,7 +74,7 @@ _(New in version 6.10.0)_ The Sentry User Interactions feature for Jetpack Compose can detect click, scroll, and swipe gestures. For every gesture, the SDK can automatically collect breadcrumbs and launch transactions. -![Jetpack Compose User Interactions](./img/jetpack-compose-user-interactions.png) +![Jetpack Compose User Interactions](/platforms/android/integrations/jetpack-compose/jetpack-compose-user-interactions.png) ### Installation @@ -144,7 +144,7 @@ If you want to customize the recorded breadcrumbs/transactions, you can skip to In this section, we get you up and running with Sentry's Compose Navigation Integration, so that it will automatically add a breadcrumb and start a transaction for each navigation event. -![Jetpack Compose Navigation Breadcrumbs](./img/jetpack-compose-navigation.png) +![Jetpack Compose Navigation Breadcrumbs](/platforms/android/integrations/jetpack-compose/jetpack-compose-navigation.png) ### Auto-Installation With the Sentry Android Gradle Plugin diff --git a/docs/platforms/android/integrations/logcat/index.mdx b/docs/platforms/android/integrations/logcat/index.mdx index cd498125da222..a6d886e9d3f8c 100644 --- a/docs/platforms/android/integrations/logcat/index.mdx +++ b/docs/platforms/android/integrations/logcat/index.mdx @@ -18,7 +18,7 @@ Supported in Sentry Android Gradle Plugin version `3.5.0` and above. The Sentry Logcat integration adds support for automatically reporting log calls above a minimum logging level as breadcrumbs. Any matching `android.Log.*` calls inside your app package are captured as breadcrumbs, including `android.Log.*` calls originating from bundled third party libraries. -![Logcat Breadcrumbs](./img/logcat-breadcrumbs.png) +![Logcat Breadcrumbs](/platforms/android/integrations/logcat/logcat-breadcrumbs.png) ## Installation With the Sentry Android Gradle Plugin diff --git a/docs/platforms/android/integrations/room-and-sqlite/index.mdx b/docs/platforms/android/integrations/room-and-sqlite/index.mdx index ce3a97350ef42..c70c038323e69 100644 --- a/docs/platforms/android/integrations/room-and-sqlite/index.mdx +++ b/docs/platforms/android/integrations/room-and-sqlite/index.mdx @@ -199,7 +199,7 @@ class EditActivity : ComponentActivity() { To view the recorded transaction, log into [sentry.io](https://sentry.io) and open your project. Clicking on **Performance** will open a page with transactions, where you can select the just recorded transaction with the name `Track Interaction`. The event will look similar to this: -![Room and AndroidX SQLite performance instrumentation](./img/room-sqlite-instrumentation.png) +![Room and AndroidX SQLite performance instrumentation](/platforms/android/integrations/room-and-sqlite/room-sqlite-instrumentation.png) diff --git a/docs/platforms/android/usage/distributed-tracing/index.mdx b/docs/platforms/android/usage/distributed-tracing/index.mdx index 5c92f909e36b8..891970da51d05 100644 --- a/docs/platforms/android/usage/distributed-tracing/index.mdx +++ b/docs/platforms/android/usage/distributed-tracing/index.mdx @@ -16,7 +16,7 @@ When an error or performance issue occurs, it can be challenging to pinpoint the Here's an example showing a distributed trace in Sentry: -![A full distributed trace in Sentry](/img/distributed-trace-in-sentry.png) +![A full distributed trace in Sentry](/platforms/android/usage/distributed-tracing/distributed-trace-in-sentry.png) This distributed trace shows a Vue app's `pageload` making a request to a Python backend, which then calls the `/api` endpoint of a Ruby microservice. diff --git a/docs/platforms/apple/common/data-management/debug-files/source-context/index.mdx b/docs/platforms/apple/common/data-management/debug-files/source-context/index.mdx index cd2f2c80e0a3c..1f2bd5e3841ce 100644 --- a/docs/platforms/apple/common/data-management/debug-files/source-context/index.mdx +++ b/docs/platforms/apple/common/data-management/debug-files/source-context/index.mdx @@ -9,7 +9,7 @@ If Sentry has access to your application's source code, it can show snippets of For example, here's a stack trace from a .NET application. The source context contains the original C# source code of the application, with the location of the frame highlighted. -![Screenshot of stack trace showing source context.](./img/source-context-screenshot.png) +![Screenshot of stack trace showing source context.](/platforms/apple/common/data-management/debug-files/source-context/source-context-screenshot.png) ### Source Bundles diff --git a/docs/platforms/apple/common/data-management/debug-files/upload/index.mdx b/docs/platforms/apple/common/data-management/debug-files/upload/index.mdx index 77b5f21be7559..e5f46b1925886 100644 --- a/docs/platforms/apple/common/data-management/debug-files/upload/index.mdx +++ b/docs/platforms/apple/common/data-management/debug-files/upload/index.mdx @@ -9,7 +9,7 @@ to upload them using `sentry-cli`. Depending on your workflow, you may want to upload as part of your build pipeline or when deploying and publishing your application: -![](/img/debug-files-workflow.png) +![](/platforms/apple/common/data-management/debug-files/upload/debug-files-workflow.png) diff --git a/docs/platforms/apple/common/enriching-events/attachments/index.mdx b/docs/platforms/apple/common/enriching-events/attachments/index.mdx index 6ed393881124f..162dee2ff5008 100644 --- a/docs/platforms/apple/common/enriching-events/attachments/index.mdx +++ b/docs/platforms/apple/common/enriching-events/attachments/index.mdx @@ -53,7 +53,7 @@ Learn more about how attachments impact your [quota](/product/accounts/quotas/). To limit access to attachments, navigate to your organization's **General Settings**, then select the _Attachments Access_ dropdown to set appropriate access — any member of your organization, the organization billing owner, member, admin, manager, or owner. -![Attachments Access](/img/attachments-access.png) +![Attachments Access](/platforms/apple/common/enriching-events/attachments/attachments-access.png) By default, access is granted to all members when storage is enabled. If a member does not have access to the project, the ability to download an attachment is not available; the button will be greyed out in Sentry. The member may only view that an attachment is stored. @@ -61,11 +61,11 @@ By default, access is granted to all members when storage is enabled. If a membe Attachments display on the bottom of the **Issue Details** page for the event that is shown. -![Attachments Access Denied](/img/attachments-access-denied.png) +![Attachments Access Denied](/platforms/apple/common/enriching-events/attachments/attachments-access-denied.png) Alternately, attachments also appear in the _Attachments_ tab on the **Issue Details** page, where you can view the _Type_ of attachment, as well as associated events. Click the Event ID to open the **Issue Details** of that specific event. -![Attachments List Example](/img/attachments-list-example.png) +![Attachments List Example](/platforms/apple/common/enriching-events/attachments/attachments-list-example.png) ## Maximum Attachment Size diff --git a/docs/platforms/apple/common/enriching-events/context/index.mdx b/docs/platforms/apple/common/enriching-events/context/index.mdx index 288bbadd5d4ea..01db7809647ad 100644 --- a/docs/platforms/apple/common/enriching-events/context/index.mdx +++ b/docs/platforms/apple/common/enriching-events/context/index.mdx @@ -5,7 +5,7 @@ description: "Custom contexts allow you to attach arbitrary data (strings, lists Custom contexts allow you to attach arbitrary data to an event. Often, this context is shared among any issue captured in its lifecycle. You cannot search these, but they are viewable on the issue page: -![Custom contexts as viewed on the Additional Data section of an event](/img/additional_data.png) +![Custom contexts as viewed on the Additional Data section of an event](/platforms/apple/common/enriching-events/context/additional_data.png) diff --git a/docs/platforms/apple/common/enriching-events/screenshots/index.mdx b/docs/platforms/apple/common/enriching-events/screenshots/index.mdx index 79f9b0ce16cb3..c9919d422744c 100644 --- a/docs/platforms/apple/common/enriching-events/screenshots/index.mdx +++ b/docs/platforms/apple/common/enriching-events/screenshots/index.mdx @@ -28,8 +28,8 @@ Because screenshots may contain ) when using SwiftUI, which is from when starting the Cocoa SDK to the [`didFinishLaunchingNotification`][didfinishlaunching]. - **Initial Frame Render**: from the [`didFinishLaunchingNotification`][didfinishlaunching] to [`UIWindowDidBecomeVisibleNotification`][uiwindow]. When enabling the option `enablePerformanceV2` this is from the [`didFinishLaunchingNotification`][didfinishlaunching] until the app renders its first frame. -![App Start Transaction](./img/app-start-transaction.png) +![App Start Transaction](/platforms/apple/common/performance/instrumentation/app-start-transaction.png) Before [sentry-cocoa 8.18.0](https://github.com/getsentry/sentry-cocoa/releases/tag/8.18.0) the SDK creates the following app start spans: @@ -137,7 +137,7 @@ Slow and Frozen Frames are enabled by default once you diff --git a/docs/platforms/dart/enriching-events/tags/index.mdx b/docs/platforms/dart/enriching-events/tags/index.mdx index 895cfb5c222cc..f889848487336 100644 --- a/docs/platforms/dart/enriching-events/tags/index.mdx +++ b/docs/platforms/dart/enriching-events/tags/index.mdx @@ -25,4 +25,4 @@ Some tags are automatically set by Sentry. We strongly recommend against overwri Once you've started sending tagged data, you'll see it when logged in to sentry.io. There, you can view the filters within the sidebar on the Project page, summarized within an event, and on the Tags page for an aggregated event. -![](/img/tags.png) +![](/platforms/dart/enriching-events/tags/tags.png) diff --git a/docs/platforms/dart/usage/distributed-tracing/index.mdx b/docs/platforms/dart/usage/distributed-tracing/index.mdx index 5c92f909e36b8..3578612f977da 100644 --- a/docs/platforms/dart/usage/distributed-tracing/index.mdx +++ b/docs/platforms/dart/usage/distributed-tracing/index.mdx @@ -16,7 +16,7 @@ When an error or performance issue occurs, it can be challenging to pinpoint the Here's an example showing a distributed trace in Sentry: -![A full distributed trace in Sentry](/img/distributed-trace-in-sentry.png) +![A full distributed trace in Sentry](/platforms/dart/usage/distributed-tracing/distributed-trace-in-sentry.png) This distributed trace shows a Vue app's `pageload` making a request to a Python backend, which then calls the `/api` endpoint of a Ruby microservice. diff --git a/docs/platforms/dotnet/common/crons/index.mdx b/docs/platforms/dotnet/common/crons/index.mdx index c00131ac8a68d..ccad410d8325f 100644 --- a/docs/platforms/dotnet/common/crons/index.mdx +++ b/docs/platforms/dotnet/common/crons/index.mdx @@ -30,6 +30,6 @@ To receive alerts about these events: Example: `The event's tags match monitor.slug equals my-monitor-slug-here` -![Cron completed alert filter](/img/crons-alerts-example.png) +![Cron completed alert filter](/platforms/php/common/crons/crons-alerts-example.png) Learn more in [Issue Alert Configuration](/product/alerts/create-alerts/issue-alert-config/). diff --git a/docs/platforms/dotnet/common/data-management/debug-files/source-context/index.mdx b/docs/platforms/dotnet/common/data-management/debug-files/source-context/index.mdx index 489d360850ef7..391930b2a3646 100644 --- a/docs/platforms/dotnet/common/data-management/debug-files/source-context/index.mdx +++ b/docs/platforms/dotnet/common/data-management/debug-files/source-context/index.mdx @@ -9,7 +9,7 @@ If Sentry has access to your application's source code, it can show snippets of For example, here's a stack trace from a .NET application. The source context contains the original C# source code of the application, with the location of the frame highlighted. -![Screenshot of stack trace showing source context.](./img/source-context-screenshot.png) +![Screenshot of stack trace showing source context.](/platforms/dotnet/common/data-management/debug-files/source-context/source-context-screenshot.png) ### Source Bundles diff --git a/docs/platforms/dotnet/common/data-management/debug-files/upload/index.mdx b/docs/platforms/dotnet/common/data-management/debug-files/upload/index.mdx index 05a3344b23053..92079eec0e3f0 100644 --- a/docs/platforms/dotnet/common/data-management/debug-files/upload/index.mdx +++ b/docs/platforms/dotnet/common/data-management/debug-files/upload/index.mdx @@ -9,7 +9,7 @@ to upload them using `sentry-cli`. Depending on your workflow, you may want to upload as part of your build pipeline or when deploying and publishing your application: -![](/img/debug-files-workflow.png) +![](/platforms/dotnet/common/data-management/debug-files/upload/debug-files-workflow.png) diff --git a/docs/platforms/dotnet/common/enriching-events/attachments/index.mdx b/docs/platforms/dotnet/common/enriching-events/attachments/index.mdx index 75c731e5848ed..abdad4c7d9b9f 100644 --- a/docs/platforms/dotnet/common/enriching-events/attachments/index.mdx +++ b/docs/platforms/dotnet/common/enriching-events/attachments/index.mdx @@ -53,7 +53,7 @@ Learn more about how attachments impact your [quota](/product/accounts/quotas/). To limit access to attachments, navigate to your organization's **General Settings**, then select the _Attachments Access_ dropdown to set appropriate access — any member of your organization, the organization billing owner, member, admin, manager, or owner. -![Attachments Access](/img/attachments-access.png) +![Attachments Access](/platforms/dotnet/common/enriching-events/attachments/attachments-access.png) By default, access is granted to all members when storage is enabled. If a member does not have access to the project, the ability to download an attachment is not available; the button will be greyed out in Sentry. The member may only view that an attachment is stored. @@ -61,11 +61,11 @@ By default, access is granted to all members when storage is enabled. If a membe Attachments display on the bottom of the **Issue Details** page for the event that is shown. -![Attachments Access Denied](/img/attachments-access-denied.png) +![Attachments Access Denied](/platforms/dotnet/common/enriching-events/attachments/attachments-access-denied.png) Alternately, attachments also appear in the _Attachments_ tab on the **Issue Details** page, where you can view the _Type_ of attachment, as well as associated events. Click the Event ID to open the **Issue Details** of that specific event. -![Attachments List Example](/img/attachments-list-example.png) +![Attachments List Example](/platforms/dotnet/common/enriching-events/attachments/attachments-list-example.png) ## Maximum Attachment Size diff --git a/docs/platforms/dotnet/common/enriching-events/context/index.mdx b/docs/platforms/dotnet/common/enriching-events/context/index.mdx index 414e8eca722d6..b8e4cf8329ef3 100644 --- a/docs/platforms/dotnet/common/enriching-events/context/index.mdx +++ b/docs/platforms/dotnet/common/enriching-events/context/index.mdx @@ -5,7 +5,7 @@ description: "Custom contexts allow you to attach arbitrary data (strings, lists Custom contexts allow you to attach arbitrary data to an event. Often, this context is shared among any issue captured in its lifecycle. You cannot search these, but they are viewable on the issue page: -![Custom contexts as viewed on the Additional Data section of an event](/img/additional_data.png) +![Custom contexts as viewed on the Additional Data section of an event](/platforms/dotnet/common/enriching-events/context/additional_data.png) diff --git a/docs/platforms/dotnet/common/enriching-events/tags/index.mdx b/docs/platforms/dotnet/common/enriching-events/tags/index.mdx index 895cfb5c222cc..a80992f5a05db 100644 --- a/docs/platforms/dotnet/common/enriching-events/tags/index.mdx +++ b/docs/platforms/dotnet/common/enriching-events/tags/index.mdx @@ -25,4 +25,4 @@ Some tags are automatically set by Sentry. We strongly recommend against overwri Once you've started sending tagged data, you'll see it when logged in to sentry.io. There, you can view the filters within the sidebar on the Project page, summarized within an event, and on the Tags page for an aggregated event. -![](/img/tags.png) +![](/platforms/dotnet/common/enriching-events/tags/tags.png) diff --git a/docs/platforms/dotnet/common/usage/distributed-tracing/index.mdx b/docs/platforms/dotnet/common/usage/distributed-tracing/index.mdx index 5c92f909e36b8..660a80de54847 100644 --- a/docs/platforms/dotnet/common/usage/distributed-tracing/index.mdx +++ b/docs/platforms/dotnet/common/usage/distributed-tracing/index.mdx @@ -16,7 +16,7 @@ When an error or performance issue occurs, it can be challenging to pinpoint the Here's an example showing a distributed trace in Sentry: -![A full distributed trace in Sentry](/img/distributed-trace-in-sentry.png) +![A full distributed trace in Sentry](/platforms/dotnet/common/usage/distributed-tracing/distributed-trace-in-sentry.png) This distributed trace shows a Vue app's `pageload` making a request to a Python backend, which then calls the `/api` endpoint of a Ruby microservice. diff --git a/docs/platforms/dotnet/common/user-feedback/index.mdx b/docs/platforms/dotnet/common/user-feedback/index.mdx index 5d363b922305f..209778863b5e1 100644 --- a/docs/platforms/dotnet/common/user-feedback/index.mdx +++ b/docs/platforms/dotnet/common/user-feedback/index.mdx @@ -40,7 +40,7 @@ To collect feedback, the Crash-Report modal requests and collects the user's nam The screenshot below provides an example of the Crash-Report modal, though yours may differ depending on your customization: -![An example of a Crash-Report modal with text boxes for user name, email, and additional details about the break.](/img/user_feedback_widget.png) +![An example of a Crash-Report modal with text boxes for user name, email, and additional details about the break.](/platforms/dotnet/common/user-feedback/user_feedback_widget.png) ### Integration diff --git a/docs/platforms/dotnet/guides/entityframework/index.mdx b/docs/platforms/dotnet/guides/entityframework/index.mdx index 6f27da2342ed9..85de82b9609ee 100644 --- a/docs/platforms/dotnet/guides/entityframework/index.mdx +++ b/docs/platforms/dotnet/guides/entityframework/index.mdx @@ -73,4 +73,4 @@ public class MvcApplication : System.Web.HttpApplication Check out a complete working [sample](https://github.com/getsentry/sentry-dotnet-ef/tree/master/samples/Sentry.Samples.AspNet.Mvc) to see it in action. -![Sample breadcrumbs in Sentry](./img/dotnet-entityframework.png) +![Sample breadcrumbs in Sentry](/platforms/dotnet/guides/entityframework/dotnet-entityframework.png) diff --git a/docs/platforms/dotnet/guides/log4net/index.mdx b/docs/platforms/dotnet/guides/log4net/index.mdx index 9e97773b5dac7..5b72e4642233c 100644 --- a/docs/platforms/dotnet/guides/log4net/index.mdx +++ b/docs/platforms/dotnet/guides/log4net/index.mdx @@ -59,4 +59,4 @@ One common case to not add the DSN to the XML configuration file (which would in For a [sample app.config](https://github.com/getsentry/sentry-dotnet/blob/main/samples/Sentry.Samples.Log4Net/app.config) or a complete working [sample](https://github.com/getsentry/sentry-dotnet/tree/main/samples/Sentry.Samples.Log4Net) to see it in action. -![Sample event in Sentry](./img/log4net-sample.gif) +![Sample event in Sentry](/platforms/dotnet/guides/log4net/log4net-sample.gif) diff --git a/docs/platforms/dotnet/guides/maui/enriching-events/screenshots/index.mdx b/docs/platforms/dotnet/guides/maui/enriching-events/screenshots/index.mdx index e1ef748b3d719..b5c23cac14a7a 100644 --- a/docs/platforms/dotnet/guides/maui/enriching-events/screenshots/index.mdx +++ b/docs/platforms/dotnet/guides/maui/enriching-events/screenshots/index.mdx @@ -19,8 +19,8 @@ Capturing a screenshot is a synchronous operation supported on both iOS and Andr If one is available, you'll see a thumbnail of the screenshot if you click on a specific issue from the [**Issues**](https://demo.sentry.io/issues/) page: -![Screenshot Thumbnail](./img/screenshot-thumbnail.png) +![Screenshot Thumbnail](/platforms/dotnet/guides/xamarin/enriching-events/screenshots/screenshot-thumbnail.png) Once you've clicked on the event ID of a specific issue, you'll be able to see an overview of all the attachments as well as associated events in the "Attachments" tab. -![Screenshots List Example](./img/screenshot-list-example.png) +![Screenshots List Example](/platforms/dotnet/guides/xamarin/enriching-events/screenshots/screenshot-list-example.png) diff --git a/docs/platforms/dotnet/guides/winforms/index.mdx b/docs/platforms/dotnet/guides/winforms/index.mdx index 5032ead31b117..5633847981951 100644 --- a/docs/platforms/dotnet/guides/winforms/index.mdx +++ b/docs/platforms/dotnet/guides/winforms/index.mdx @@ -84,7 +84,7 @@ First, modify the settings on the project properties page as follows: - Clear the "Enable application framework" checkbox. - Set the "Startup object" to "Sub Main". -![VB Project Properties](./img/vbsettings1.png) +![VB Project Properties](/platforms/dotnet/guides/winforms/vbsettings1.png) Then, add the following file as `Program.vb`: @@ -137,7 +137,7 @@ First, ensure the settings on the project properties page are as follows: - The "Enable application framework" checkbox should be checked. - The "Startup object" should be set to the name of your main form. -![VB Project Properties](./img/vbsettings2.png) +![VB Project Properties](/platforms/dotnet/guides/winforms/vbsettings2.png) Next, you will need to modify the `ApplicationEvents.vb` file. diff --git a/docs/platforms/dotnet/guides/xamarin/enriching-events/screenshots/index.mdx b/docs/platforms/dotnet/guides/xamarin/enriching-events/screenshots/index.mdx index 21b747ce283f3..a75ba18d77255 100644 --- a/docs/platforms/dotnet/guides/xamarin/enriching-events/screenshots/index.mdx +++ b/docs/platforms/dotnet/guides/xamarin/enriching-events/screenshots/index.mdx @@ -17,8 +17,8 @@ Because screenshots may contain diff --git a/docs/platforms/elixir/enriching-events/tags/index.mdx b/docs/platforms/elixir/enriching-events/tags/index.mdx index cf057874a5715..af8ec16904456 100644 --- a/docs/platforms/elixir/enriching-events/tags/index.mdx +++ b/docs/platforms/elixir/enriching-events/tags/index.mdx @@ -23,4 +23,4 @@ Some tags are automatically set by Sentry. We strongly recommend against overwri Once you've started sending tagged data, you'll see it when logged in to sentry.io. There, you can view the filters within the sidebar on the Project page, summarized within an event, and on the Tags page for an aggregated event. -![](/img/tags.png) +![](/platforms/elixir/enriching-events/tags/tags.png) diff --git a/docs/platforms/elixir/user-feedback/index.mdx b/docs/platforms/elixir/user-feedback/index.mdx index 4f3570f425f52..2d638198664f6 100644 --- a/docs/platforms/elixir/user-feedback/index.mdx +++ b/docs/platforms/elixir/user-feedback/index.mdx @@ -14,7 +14,7 @@ To collect feedback, the Crash-Report modal requests and collects the user's nam The screenshot below provides an example of the Crash-Report modal, though yours may differ depending on your customization: -![An example of a Crash-Report modal with text boxes for user name, email, and additional details about the break.](/img/user_feedback_widget.png) +![An example of a Crash-Report modal with text boxes for user name, email, and additional details about the break.](/platforms/elixir/user-feedback/user_feedback_widget.png) ### Integration diff --git a/docs/platforms/flutter/data-management/debug-files/source-context/index.mdx b/docs/platforms/flutter/data-management/debug-files/source-context/index.mdx index f323829d10842..a41f1dbe33609 100644 --- a/docs/platforms/flutter/data-management/debug-files/source-context/index.mdx +++ b/docs/platforms/flutter/data-management/debug-files/source-context/index.mdx @@ -9,7 +9,7 @@ If Sentry has access to your application's source code, it can show snippets of For example, here's a stack trace from a .NET application. The source context contains the original C# source code of the application, with the location of the frame highlighted. -![Screenshot of stack trace showing source context.](./img/source-context-screenshot.png) +![Screenshot of stack trace showing source context.](/platforms/flutter/data-management/debug-files/source-context/source-context-screenshot.png) ### Source Bundles diff --git a/docs/platforms/flutter/data-management/debug-files/upload/index.mdx b/docs/platforms/flutter/data-management/debug-files/upload/index.mdx index 77b5f21be7559..b18804309c533 100644 --- a/docs/platforms/flutter/data-management/debug-files/upload/index.mdx +++ b/docs/platforms/flutter/data-management/debug-files/upload/index.mdx @@ -9,7 +9,7 @@ to upload them using `sentry-cli`. Depending on your workflow, you may want to upload as part of your build pipeline or when deploying and publishing your application: -![](/img/debug-files-workflow.png) +![](/platforms/flutter/data-management/debug-files/upload/debug-files-workflow.png) diff --git a/docs/platforms/flutter/enriching-events/attachments/index.mdx b/docs/platforms/flutter/enriching-events/attachments/index.mdx index 00afb57bf10fa..1c5d57f17dd97 100644 --- a/docs/platforms/flutter/enriching-events/attachments/index.mdx +++ b/docs/platforms/flutter/enriching-events/attachments/index.mdx @@ -47,7 +47,7 @@ Learn more about how attachments impact your [quota](/product/accounts/quotas/). To limit access to attachments, navigate to your organization's **General Settings**, then select the _Attachments Access_ dropdown to set appropriate access — any member of your organization, the organization billing owner, member, admin, manager, or owner. -![Attachments Access](/img/attachments-access.png) +![Attachments Access](/platforms/flutter/enriching-events/attachments/attachments-access.png) By default, access is granted to all members when storage is enabled. If a member does not have access to the project, the ability to download an attachment is not available; the button will be greyed out in Sentry. The member may only view that an attachment is stored. @@ -55,11 +55,11 @@ By default, access is granted to all members when storage is enabled. If a membe Attachments display on the bottom of the **Issue Details** page for the event that is shown. -![Attachments Access Denied](/img/attachments-access-denied.png) +![Attachments Access Denied](/platforms/flutter/enriching-events/attachments/attachments-access-denied.png) Alternately, attachments also appear in the _Attachments_ tab on the **Issue Details** page, where you can view the _Type_ of attachment, as well as associated events. Click the Event ID to open the **Issue Details** of that specific event. -![Attachments List Example](/img/attachments-list-example.png) +![Attachments List Example](/platforms/flutter/enriching-events/attachments/attachments-list-example.png) ## Maximum Attachment Size diff --git a/docs/platforms/flutter/enriching-events/context/index.mdx b/docs/platforms/flutter/enriching-events/context/index.mdx index 288bbadd5d4ea..dc9d7c6b50241 100644 --- a/docs/platforms/flutter/enriching-events/context/index.mdx +++ b/docs/platforms/flutter/enriching-events/context/index.mdx @@ -5,7 +5,7 @@ description: "Custom contexts allow you to attach arbitrary data (strings, lists Custom contexts allow you to attach arbitrary data to an event. Often, this context is shared among any issue captured in its lifecycle. You cannot search these, but they are viewable on the issue page: -![Custom contexts as viewed on the Additional Data section of an event](/img/additional_data.png) +![Custom contexts as viewed on the Additional Data section of an event](/platforms/flutter/enriching-events/context/additional_data.png) diff --git a/docs/platforms/flutter/enriching-events/screenshots/index.mdx b/docs/platforms/flutter/enriching-events/screenshots/index.mdx index 21b747ce283f3..924891806f0ca 100644 --- a/docs/platforms/flutter/enriching-events/screenshots/index.mdx +++ b/docs/platforms/flutter/enriching-events/screenshots/index.mdx @@ -17,8 +17,8 @@ Because screenshots may contain diff --git a/docs/platforms/go/common/enriching-events/tags/index.mdx b/docs/platforms/go/common/enriching-events/tags/index.mdx index 895cfb5c222cc..f06d458286b73 100644 --- a/docs/platforms/go/common/enriching-events/tags/index.mdx +++ b/docs/platforms/go/common/enriching-events/tags/index.mdx @@ -25,4 +25,4 @@ Some tags are automatically set by Sentry. We strongly recommend against overwri Once you've started sending tagged data, you'll see it when logged in to sentry.io. There, you can view the filters within the sidebar on the Project page, summarized within an event, and on the Tags page for an aggregated event. -![](/img/tags.png) +![](/platforms/go/common/enriching-events/tags/tags.png) diff --git a/docs/platforms/go/common/usage/distributed-tracing/index.mdx b/docs/platforms/go/common/usage/distributed-tracing/index.mdx index 5c92f909e36b8..b50236a6cd2e8 100644 --- a/docs/platforms/go/common/usage/distributed-tracing/index.mdx +++ b/docs/platforms/go/common/usage/distributed-tracing/index.mdx @@ -16,7 +16,7 @@ When an error or performance issue occurs, it can be challenging to pinpoint the Here's an example showing a distributed trace in Sentry: -![A full distributed trace in Sentry](/img/distributed-trace-in-sentry.png) +![A full distributed trace in Sentry](/platforms/go/common/usage/distributed-tracing/distributed-trace-in-sentry.png) This distributed trace shows a Vue app's `pageload` making a request to a Python backend, which then calls the `/api` endpoint of a Ruby microservice. diff --git a/docs/platforms/go/common/user-feedback/index.mdx b/docs/platforms/go/common/user-feedback/index.mdx index 4f3570f425f52..414ebb490a806 100644 --- a/docs/platforms/go/common/user-feedback/index.mdx +++ b/docs/platforms/go/common/user-feedback/index.mdx @@ -14,7 +14,7 @@ To collect feedback, the Crash-Report modal requests and collects the user's nam The screenshot below provides an example of the Crash-Report modal, though yours may differ depending on your customization: -![An example of a Crash-Report modal with text boxes for user name, email, and additional details about the break.](/img/user_feedback_widget.png) +![An example of a Crash-Report modal with text boxes for user name, email, and additional details about the break.](/platforms/go/common/user-feedback/user_feedback_widget.png) ### Integration diff --git a/docs/platforms/java/common/crons/index.mdx b/docs/platforms/java/common/crons/index.mdx index 4269ee7938740..25c02c8c17c99 100644 --- a/docs/platforms/java/common/crons/index.mdx +++ b/docs/platforms/java/common/crons/index.mdx @@ -24,6 +24,6 @@ To receive alerts about these events: Example: `The event's tags match monitor.slug equals my-monitor-slug-here` -![Cron completed alert filter](/img/crons-alerts-example.png) +![Cron completed alert filter](/platforms/java/common/crons/crons-alerts-example.png) Learn more in [Issue Alert Configuration](/product/alerts/create-alerts/issue-alert-config/). diff --git a/docs/platforms/java/common/enriching-events/attachments/index.mdx b/docs/platforms/java/common/enriching-events/attachments/index.mdx index e11e130bd29c1..0aeee64cbf9b5 100644 --- a/docs/platforms/java/common/enriching-events/attachments/index.mdx +++ b/docs/platforms/java/common/enriching-events/attachments/index.mdx @@ -49,7 +49,7 @@ Learn more about how attachments impact your [quota](/product/accounts/quotas/). To limit access to attachments, navigate to your organization's **General Settings**, then select the _Attachments Access_ dropdown to set appropriate access — any member of your organization, the organization billing owner, member, admin, manager, or owner. -![Attachments Access](/img/attachments-access.png) +![Attachments Access](/platforms/java/common/enriching-events/attachments/attachments-access.png) By default, access is granted to all members when storage is enabled. If a member does not have access to the project, the ability to download an attachment is not available; the button will be greyed out in Sentry. The member may only view that an attachment is stored. @@ -57,11 +57,11 @@ By default, access is granted to all members when storage is enabled. If a membe Attachments display on the bottom of the **Issue Details** page for the event that is shown. -![Attachments Access Denied](/img/attachments-access-denied.png) +![Attachments Access Denied](/platforms/java/common/enriching-events/attachments/attachments-access-denied.png) Alternately, attachments also appear in the _Attachments_ tab on the **Issue Details** page, where you can view the _Type_ of attachment, as well as associated events. Click the Event ID to open the **Issue Details** of that specific event. -![Attachments List Example](/img/attachments-list-example.png) +![Attachments List Example](/platforms/java/common/enriching-events/attachments/attachments-list-example.png) ## Maximum Attachment Size diff --git a/docs/platforms/java/common/enriching-events/context/index.mdx b/docs/platforms/java/common/enriching-events/context/index.mdx index 288bbadd5d4ea..cde654aa03412 100644 --- a/docs/platforms/java/common/enriching-events/context/index.mdx +++ b/docs/platforms/java/common/enriching-events/context/index.mdx @@ -5,7 +5,7 @@ description: "Custom contexts allow you to attach arbitrary data (strings, lists Custom contexts allow you to attach arbitrary data to an event. Often, this context is shared among any issue captured in its lifecycle. You cannot search these, but they are viewable on the issue page: -![Custom contexts as viewed on the Additional Data section of an event](/img/additional_data.png) +![Custom contexts as viewed on the Additional Data section of an event](/platforms/java/common/enriching-events/context/additional_data.png) diff --git a/docs/platforms/java/common/enriching-events/tags/index.mdx b/docs/platforms/java/common/enriching-events/tags/index.mdx index 895cfb5c222cc..52642c841b34f 100644 --- a/docs/platforms/java/common/enriching-events/tags/index.mdx +++ b/docs/platforms/java/common/enriching-events/tags/index.mdx @@ -25,4 +25,4 @@ Some tags are automatically set by Sentry. We strongly recommend against overwri Once you've started sending tagged data, you'll see it when logged in to sentry.io. There, you can view the filters within the sidebar on the Project page, summarized within an event, and on the Tags page for an aggregated event. -![](/img/tags.png) +![](/platforms/java/common/enriching-events/tags/tags.png) diff --git a/docs/platforms/java/common/gradle/index.mdx b/docs/platforms/java/common/gradle/index.mdx index 22658a88101e3..3436e2ffa9222 100644 --- a/docs/platforms/java/common/gradle/index.mdx +++ b/docs/platforms/java/common/gradle/index.mdx @@ -117,4 +117,4 @@ See our documentation on Source Context diff --git a/docs/platforms/javascript/common/enriching-events/attachments/index.mdx b/docs/platforms/javascript/common/enriching-events/attachments/index.mdx index 8b13932f48d5d..5efe3399474e5 100644 --- a/docs/platforms/javascript/common/enriching-events/attachments/index.mdx +++ b/docs/platforms/javascript/common/enriching-events/attachments/index.mdx @@ -35,7 +35,7 @@ All other types of attachments, such as log files or screenshots, are stored for You can enable _Store Native Crash Reports_ in your organization's **Security and Privacy Settings**. By default, this setting is disabled. Determine the maximum number of crash reports that will be stored per issue; disabled, unlimited, or maximum per issue: -![Attachments Example](./img/slide-bar-native-crashes.png) +![Attachments Example](/platforms/javascript/common/enriching-events/attachments/slide-bar-native-crashes.png) If you set a limit per issue, as in the example above, a limit of 10, Sentry will store the first 10 attachments associated with this issue, but drop any that follow. To make room for additional attachments, delete them. Sentry will then accept attachments until the limit is reached again. @@ -45,7 +45,7 @@ If you set a limit per issue, as in the example above, a limit of 10, Sentry wil To limit access to attachments, navigate to your organization's **General Settings**, then select the _Attachments Access_ dropdown to set appropriate access — any member of your organization, the organization billing owner, member, admin, manager, or owner. -![Attachments Access](/img/attachments-access.png) +![Attachments Access](/platforms/javascript/common/enriching-events/attachments/attachments-access.png) By default, access is granted to all members when storage is enabled. If a member does not have access to the project, the ability to download an attachment is not available; the button will be greyed out in Sentry. The member may only view that an attachment is stored. @@ -53,11 +53,11 @@ By default, access is granted to all members when storage is enabled. If a membe Attachments display on the bottom of the **Issue Details** page for the event that is shown. -![Attachments Access Denied](/img/attachments-access-denied.png) +![Attachments Access Denied](/platforms/javascript/common/enriching-events/attachments/attachments-access-denied.png) Alternately, attachments also appear in the _Attachments_ tab on the **Issue Details** page, where you can view the _Type_ of attachment, as well as associated events. Click the Event ID to open the **Issue Details** of that specific event. -![Attachments List Example](/img/attachments-list-example.png) +![Attachments List Example](/platforms/javascript/common/enriching-events/attachments/attachments-list-example.png) diff --git a/docs/platforms/javascript/common/enriching-events/context/index.mdx b/docs/platforms/javascript/common/enriching-events/context/index.mdx index 886601417eccf..69996bad2482e 100644 --- a/docs/platforms/javascript/common/enriching-events/context/index.mdx +++ b/docs/platforms/javascript/common/enriching-events/context/index.mdx @@ -5,7 +5,7 @@ description: "Custom contexts allow you to attach arbitrary data (strings, lists Custom contexts allow you to attach arbitrary data to an event. Often, this context is shared among any issue captured in its lifecycle. You cannot search these, but they are viewable on the issue page: -![Custom contexts as viewed on the Additional Data section of an event](/img/additional_data.png) +![Custom contexts as viewed on the Additional Data section of an event](/platforms/javascript/common/enriching-events/context/additional_data.png) diff --git a/docs/platforms/javascript/common/enriching-events/tags/index.mdx b/docs/platforms/javascript/common/enriching-events/tags/index.mdx index cb16f27d3635c..5a34bfb961062 100644 --- a/docs/platforms/javascript/common/enriching-events/tags/index.mdx +++ b/docs/platforms/javascript/common/enriching-events/tags/index.mdx @@ -29,4 +29,4 @@ Some tags are automatically set by Sentry. We strongly recommend against overwri Once you've started sending tagged data, you'll see it when logged in to sentry.io. There, you can view the filters within the sidebar on the Project page, summarized within an event, and on the Tags page for an aggregated event. -![](/img/tags.png) +![](/platforms/javascript/common/enriching-events/tags/tags.png) diff --git a/docs/platforms/javascript/common/install/loader.mdx b/docs/platforms/javascript/common/install/loader.mdx index 458b56bb204ff..b91654b00b46e 100644 --- a/docs/platforms/javascript/common/install/loader.mdx +++ b/docs/platforms/javascript/common/install/loader.mdx @@ -38,7 +38,7 @@ The loader has a few configuration options: To configure the version, use the dropdown in the "JavaScript Loader" settings, directly beneath the script tag you copied earlier. -![JavaScript Loader Settings](./img/js-loader-settings.png) +![JavaScript Loader Settings](/platforms/javascript/common/install/loader/js-loader-settings.png) Note that because of caching, it can take a few minutes for version changes made here to take effect. diff --git a/docs/platforms/javascript/common/session-replay/privacy.mdx b/docs/platforms/javascript/common/session-replay/privacy.mdx index f25662a6b1127..8babcb9bb88b9 100644 --- a/docs/platforms/javascript/common/session-replay/privacy.mdx +++ b/docs/platforms/javascript/common/session-replay/privacy.mdx @@ -17,7 +17,7 @@ There are several ways to deal with personally identifiable information (PII). B Masking replaces the text content with something else. The default masking behavior is to replace each character with a `*`. Elements with class name `sentry-mask` or the attribute `data-sentry-mask` will be blocked. In this example, the relevant HTML code is: `...
`: -![Replay PII Scrubbing example](./img/masking.png) +![Replay PII Scrubbing example](/platforms/javascript/common/session-replay/privacy/masking.png) You can configure what to mask or unmask via the following [configuration](#privacy-configuration): @@ -32,7 +32,7 @@ replayIntegration({ Blocking replaces the element with a placeholder that has the same dimensions. The recording will show an empty space in place of the content. Elements with class name `sentry-block` or the attribute `data-sentry-block` will be blocked. In this example, the relevant HTML code is: `...
`: -![Blocking example](./img/blocking.png) +![Blocking example](/platforms/javascript/common/session-replay/privacy/blocking.png) You can configure what to block or unblock via the following [configuration](#privacy-configuration): @@ -47,7 +47,7 @@ replayIntegration({ Ignoring only applies to form inputs. Events will be ignored on the input element so that the replay doesn't show what occurs inside of the input. Any event on an input element with class name `sentry-ignore` or the attribute `data-sentry-ignore` will be ignored. Notice how the results in the table below show input changes, but no visible text: -![Ignoring Example](./img/ignoring.gif) +![Ignoring Example](/platforms/javascript/common/session-replay/privacy/ignoring.gif) You can configure what to ignore via the following [configuration](#privacy-configuration): diff --git a/docs/platforms/javascript/common/troubleshooting/index.mdx b/docs/platforms/javascript/common/troubleshooting/index.mdx index e3b0f162eedad..05bbe9acdb88c 100644 --- a/docs/platforms/javascript/common/troubleshooting/index.mdx +++ b/docs/platforms/javascript/common/troubleshooting/index.mdx @@ -19,7 +19,7 @@ to know to get up and running again with the latest Sentry features. You can view the JSON payload of an event to see how Sentry stores additional data in the event. The shape of the data may not exactly match the description. -![Red box highlighting where to find the JSON connected to an event](./img/event_JSON.png) +![Red box highlighting where to find the JSON connected to an event](/platforms/javascript/common/troubleshooting/event_JSON.png) For more details, see the [full documentation on Event Payload](https://develop.sentry.dev/sdk/event-payloads/). @@ -102,7 +102,7 @@ You can work around our CDN bundles being blocked by [using our NPM packages](#u A tunnel is an HTTP endpoint that acts as a proxy between Sentry and your application. Because you control this server, there is no risk of any requests sent to it being blocked. When the endpoint lives under the same origin (although it does not have to in order for the tunnel to work), the browser will not treat any requests to the endpoint as a third-party request. As a result, these requests will have different security measures applied which, by default, don't trigger ad-blockers. A quick summary of the flow can be found below. -![Tunnel Flow](./img/tunnel.png) +![Tunnel Flow](/platforms/javascript/common/troubleshooting/tunnel.png) Starting with version `6.7.0` of the JavaScript SDK, you can use the `tunnel` option to tell the SDK to deliver events to the configured URL, instead of using the DSN. This allows the SDK to remove `sentry_key` from the query parameters, which is one of the main reasons ad-blockers prevent sending events in the first place. This option also stops the SDK from sending preflight requests, which was one of the requirements that necessitated sending the `sentry_key` in the query parameters. diff --git a/docs/platforms/javascript/common/usage/distributed-tracing/index.mdx b/docs/platforms/javascript/common/usage/distributed-tracing/index.mdx index cd011c56c2cf5..9eeb68912b382 100644 --- a/docs/platforms/javascript/common/usage/distributed-tracing/index.mdx +++ b/docs/platforms/javascript/common/usage/distributed-tracing/index.mdx @@ -18,7 +18,7 @@ When an error or performance issue occurs, it can be challenging to pinpoint the Here's an example showing a distributed trace in Sentry: -![A full distributed trace in Sentry](/img/distributed-trace-in-sentry.png) +![A full distributed trace in Sentry](/platforms/javascript/common/usage/distributed-tracing/distributed-trace-in-sentry.png) This distributed trace shows a Vue app's `pageload` making a request to a Python backend, which then calls the `/api` endpoint of a Ruby microservice. diff --git a/docs/platforms/javascript/common/user-feedback/configuration/index.mdx b/docs/platforms/javascript/common/user-feedback/configuration/index.mdx index 3e106de3048bd..978fe98222fe9 100644 --- a/docs/platforms/javascript/common/user-feedback/configuration/index.mdx +++ b/docs/platforms/javascript/common/user-feedback/configuration/index.mdx @@ -8,7 +8,7 @@ description: "Learn about the general User Feedback configuration fields." The User Feedback Widget offers many customization options, and if the available options are insufficient, you can [use your own UI](#bring-your-own-widget). The following image shows which elements are customizable. The configuration keys on the left side of the image correspond to [text customization](#text-customization) and the configuration keys on the right side of the image are for [theme customizations](#theme-customization). -![An image showing the available customization options for the User Feedback Widget](./img/user-feedback-widget-customization.png) +![An image showing the available customization options for the User Feedback Widget](/platforms/javascript/common/user-feedback/configuration/user-feedback-widget-customization.png) ### General diff --git a/docs/platforms/javascript/common/user-feedback/index.mdx b/docs/platforms/javascript/common/user-feedback/index.mdx index 4f84b4ae5dce5..c9b5b3a2b8220 100644 --- a/docs/platforms/javascript/common/user-feedback/index.mdx +++ b/docs/platforms/javascript/common/user-feedback/index.mdx @@ -12,7 +12,7 @@ The User Feedback feature allows you to collect user feedback from anywhere insi The embeddable JavaScript widget allows users to submit feedback from anywhere inside your application. The [Crash-Report Modal](#crash-report-modal) collects reactive feedback tied to an error event. -![An example image of the User Feedback Widget on a demo site](./img/user-feedback-widget.png) +![An example image of the User Feedback Widget on a demo site](/platforms/javascript/common/user-feedback/user-feedback-widget.png) ### Pre-requisites @@ -50,7 +50,7 @@ To collect feedback, the Crash-Report modal requests and collects the user's nam The screenshot below provides an example of the Crash-Report modal, though yours may differ depending on your customization: -![An example of a Crash-Report modal with text boxes for user name, email, and additional details about the break.](/img/user_feedback_widget.png) +![An example of a Crash-Report modal with text boxes for user name, email, and additional details about the break.](/platforms/javascript/common/user-feedback/user_feedback_widget.png) ### Integration diff --git a/docs/platforms/javascript/guides/electron/enriching-events/screenshots/index.mdx b/docs/platforms/javascript/guides/electron/enriching-events/screenshots/index.mdx index 21b747ce283f3..43c51affd662a 100644 --- a/docs/platforms/javascript/guides/electron/enriching-events/screenshots/index.mdx +++ b/docs/platforms/javascript/guides/electron/enriching-events/screenshots/index.mdx @@ -17,8 +17,8 @@ Because screenshots may contain diff --git a/docs/platforms/kotlin-multiplatform/enriching-events/screenshots/index.mdx b/docs/platforms/kotlin-multiplatform/enriching-events/screenshots/index.mdx index e2da1f1dc0a77..47f1559ba6e51 100644 --- a/docs/platforms/kotlin-multiplatform/enriching-events/screenshots/index.mdx +++ b/docs/platforms/kotlin-multiplatform/enriching-events/screenshots/index.mdx @@ -23,8 +23,8 @@ This feature is supported for iOS and Android only. If one is available, you'll see a thumbnail of the screenshot when you click on a specific issue from the [**Issues**](https://demo.sentry.io/issues/) page. -![Screenshot Thumbnail](./img/screenshot-thumbnail.png) +![Screenshot Thumbnail](/platforms/kotlin-multiplatform/enriching-events/screenshots/screenshot-thumbnail.png) Once you've clicked on the event ID of a specific issue, you'll be able to see an overview of all the attachments as well as associated events in the "Attachments" tab. -![Screenshots List Example](./img/screenshot-list-example.png) +![Screenshots List Example](/platforms/kotlin-multiplatform/enriching-events/screenshots/screenshot-list-example.png) diff --git a/docs/platforms/kotlin-multiplatform/enriching-events/tags/index.mdx b/docs/platforms/kotlin-multiplatform/enriching-events/tags/index.mdx index 895cfb5c222cc..b3a39f1af8344 100644 --- a/docs/platforms/kotlin-multiplatform/enriching-events/tags/index.mdx +++ b/docs/platforms/kotlin-multiplatform/enriching-events/tags/index.mdx @@ -25,4 +25,4 @@ Some tags are automatically set by Sentry. We strongly recommend against overwri Once you've started sending tagged data, you'll see it when logged in to sentry.io. There, you can view the filters within the sidebar on the Project page, summarized within an event, and on the Tags page for an aggregated event. -![](/img/tags.png) +![](/platforms/kotlin-multiplatform/enriching-events/tags/tags.png) diff --git a/docs/platforms/kotlin-multiplatform/enriching-events/viewhierarchy/index.mdx b/docs/platforms/kotlin-multiplatform/enriching-events/viewhierarchy/index.mdx index b1aea192e57a8..b14da279cbb91 100644 --- a/docs/platforms/kotlin-multiplatform/enriching-events/viewhierarchy/index.mdx +++ b/docs/platforms/kotlin-multiplatform/enriching-events/viewhierarchy/index.mdx @@ -23,8 +23,8 @@ View hierarchy debugging is an opt-in feature. You can enable it as shown below: View hierarchies appear in the "Attachments" tab, where you can view all attachments, as well as associated events. Click the event ID to open the [Issue Details](/product/issues/issue-details) page of that specific event. -![Screenshots List Example](/img/viewhierarchy-list-example.png) +![Screenshots List Example](/platforms/kotlin-multiplatform/enriching-events/viewhierarchy/viewhierarchy-list-example.png) On the **Issue Details** page, you can interact with the view hierarchy attachment in a section called "View Hierarchy". This section represents the state of your application at the time of an error event. There are three displays: a tree view, wireframe, and detailed view for a selected node. You can select nodes in either the tree or the wireframe to view the properties collected by the SDK. The SDK will report on the following keys for each node in the view: `alpha`, `visible`, `x`, `y`, `width`, `height`, `type`, and `identifier` if applicable, but there may be additional values specific to the SDK. This feature can be used as an exploratory tool to debug layout issues, visualize unnecessarily rendered content, or gain a better understanding of the relationship between views. -![View Hierarchy Example](/img/viewhierarchy-example.png) +![View Hierarchy Example](/platforms/kotlin-multiplatform/enriching-events/viewhierarchy/viewhierarchy-example.png) diff --git a/docs/platforms/native/common/data-management/debug-files/source-context/index.mdx b/docs/platforms/native/common/data-management/debug-files/source-context/index.mdx index 4d80a865c7908..c35da4c97c268 100644 --- a/docs/platforms/native/common/data-management/debug-files/source-context/index.mdx +++ b/docs/platforms/native/common/data-management/debug-files/source-context/index.mdx @@ -9,7 +9,7 @@ If Sentry has access to your application's source code, it can show snippets of For example, here's a stack trace from a .NET application. The source context contains the original C# source code of the application, with the location of the frame highlighted. -![Screenshot of stack trace showing source context.](./img/source-context-screenshot.png) +![Screenshot of stack trace showing source context.](/platforms/native/common/data-management/debug-files/source-context/source-context-screenshot.png) ### Source Bundles diff --git a/docs/platforms/native/common/data-management/debug-files/upload/index.mdx b/docs/platforms/native/common/data-management/debug-files/upload/index.mdx index 77b5f21be7559..479265a485773 100644 --- a/docs/platforms/native/common/data-management/debug-files/upload/index.mdx +++ b/docs/platforms/native/common/data-management/debug-files/upload/index.mdx @@ -9,7 +9,7 @@ to upload them using `sentry-cli`. Depending on your workflow, you may want to upload as part of your build pipeline or when deploying and publishing your application: -![](/img/debug-files-workflow.png) +![](/platforms/native/common/data-management/debug-files/upload/debug-files-workflow.png) diff --git a/docs/platforms/native/common/enriching-events/attachments/index.mdx b/docs/platforms/native/common/enriching-events/attachments/index.mdx index 932e160441ad9..27af949c4e891 100644 --- a/docs/platforms/native/common/enriching-events/attachments/index.mdx +++ b/docs/platforms/native/common/enriching-events/attachments/index.mdx @@ -39,7 +39,7 @@ All other types of attachments, such as log files or screenshots, are stored for You can enable _Store Native Crash Reports_ in your organization's **Security and Privacy Settings**. By default, this setting is disabled. Determine the maximum number of crash reports that will be stored per issue; disabled, unlimited, or maximum per issue: -![Attachments Example](./img/slide-bar-native-crashes.png) +![Attachments Example](/platforms/native/common/enriching-events/attachments/slide-bar-native-crashes.png) If you set a limit per issue, as in the example above, a limit of 10, Sentry will store the first 10 attachments associated with this issue, but drop any that follow. To make room for additional attachments, delete them. Sentry will then accept attachments until the limit is reached again. @@ -47,7 +47,7 @@ If you set a limit per issue, as in the example above, a limit of 10, Sentry wil To limit access to attachments, navigate to your organization's **General Settings**, then select the _Attachments Access_ dropdown to set appropriate access — any member of your organization, the organization billing owner, member, admin, manager, or owner. -![Attachments Access](/img/attachments-access.png) +![Attachments Access](/platforms/native/common/enriching-events/attachments/attachments-access.png) By default, access is granted to all members when storage is enabled. If a member does not have access to the project, the ability to download an attachment is not available; the button will be greyed out in Sentry. The member may only view that an attachment is stored. @@ -55,10 +55,10 @@ By default, access is granted to all members when storage is enabled. If a membe Attachments display on the bottom of the **Issue Details** page for the event that is shown. -![Attachments Access Denied](/img/attachments-access-denied.png) +![Attachments Access Denied](/platforms/native/common/enriching-events/attachments/attachments-access-denied.png) Alternately, attachments also appear in the _Attachments_ tab on the **Issue Details** page, where you can view the _Type_ of attachment, as well as associated events. Click the Event ID to open the **Issue Details** of that specific event. -![Attachments List Example](/img/attachments-list-example.png) +![Attachments List Example](/platforms/native/common/enriching-events/attachments/attachments-list-example.png) If you chose to limit the number of crash reports per issue, you can show _Only Crash Reports_. This removes all other attachments from the list, which can be useful if the issue has accumulated a large number of events. diff --git a/docs/platforms/native/common/enriching-events/context/index.mdx b/docs/platforms/native/common/enriching-events/context/index.mdx index 3253378fdaa99..6bdd9aa6e9b28 100644 --- a/docs/platforms/native/common/enriching-events/context/index.mdx +++ b/docs/platforms/native/common/enriching-events/context/index.mdx @@ -10,7 +10,7 @@ description: "Custom contexts allow you to attach arbitrary data (strings, lists Custom contexts allow you to attach arbitrary data to an event. Often, this context is shared among any issue captured in its lifecycle. You cannot search these, but they are viewable on the issue page: -![Custom contexts as viewed on the Additional Data section of an event](/img/additional_data.png) +![Custom contexts as viewed on the Additional Data section of an event](/platforms/native/common/enriching-events/context/additional_data.png) diff --git a/docs/platforms/native/common/enriching-events/tags/index.mdx b/docs/platforms/native/common/enriching-events/tags/index.mdx index 3fc9ad7206a1b..c96d5051d559a 100644 --- a/docs/platforms/native/common/enriching-events/tags/index.mdx +++ b/docs/platforms/native/common/enriching-events/tags/index.mdx @@ -28,4 +28,4 @@ Some tags are automatically set by Sentry. We strongly recommend against overwri Once you've started sending tagged data, you'll see it when logged in to sentry.io. There, you can view the filters within the sidebar on the Project page, summarized within an event, and on the Tags page for an aggregated event. -![](/img/tags.png) +![](/platforms/native/common/enriching-events/tags/tags.png) diff --git a/docs/platforms/native/common/usage/distributed-tracing/index.mdx b/docs/platforms/native/common/usage/distributed-tracing/index.mdx index 5c92f909e36b8..3964c7e472aee 100644 --- a/docs/platforms/native/common/usage/distributed-tracing/index.mdx +++ b/docs/platforms/native/common/usage/distributed-tracing/index.mdx @@ -16,7 +16,7 @@ When an error or performance issue occurs, it can be challenging to pinpoint the Here's an example showing a distributed trace in Sentry: -![A full distributed trace in Sentry](/img/distributed-trace-in-sentry.png) +![A full distributed trace in Sentry](/platforms/native/common/usage/distributed-tracing/distributed-trace-in-sentry.png) This distributed trace shows a Vue app's `pageload` making a request to a Python backend, which then calls the `/api` endpoint of a Ruby microservice. diff --git a/docs/platforms/node/common/configuration/application-not-responding.mdx b/docs/platforms/node/common/configuration/application-not-responding.mdx index ba2029797d7d6..79348e8391d05 100644 --- a/docs/platforms/node/common/configuration/application-not-responding.mdx +++ b/docs/platforms/node/common/configuration/application-not-responding.mdx @@ -40,7 +40,7 @@ Sentry.init({ }); ``` -![Example of an ANR error event](./img/anr-node-example.png) +![Example of an ANR error event](/platforms/node/common/configuration/anr-node-example.png) ## Configuration options diff --git a/docs/platforms/node/common/crons/index.mdx b/docs/platforms/node/common/crons/index.mdx index 4269ee7938740..2e985f355fe36 100644 --- a/docs/platforms/node/common/crons/index.mdx +++ b/docs/platforms/node/common/crons/index.mdx @@ -24,6 +24,6 @@ To receive alerts about these events: Example: `The event's tags match monitor.slug equals my-monitor-slug-here` -![Cron completed alert filter](/img/crons-alerts-example.png) +![Cron completed alert filter](/platforms/node/common/crons/crons-alerts-example.png) Learn more in [Issue Alert Configuration](/product/alerts/create-alerts/issue-alert-config/). diff --git a/docs/platforms/node/common/enriching-events/attachments/index.mdx b/docs/platforms/node/common/enriching-events/attachments/index.mdx index 319f4fbc35f16..8c581bf41880f 100644 --- a/docs/platforms/node/common/enriching-events/attachments/index.mdx +++ b/docs/platforms/node/common/enriching-events/attachments/index.mdx @@ -27,7 +27,7 @@ Learn more about how attachments impact your [quota](/product/accounts/quotas/). To limit access to attachments, navigate to your organization's **General Settings**, then select the _Attachments Access_ dropdown to set appropriate access — any member of your organization, the organization billing owner, member, admin, manager, or owner. -![Attachments Access](/img/attachments-access.png) +![Attachments Access](/platforms/node/common/enriching-events/attachments/attachments-access.png) By default, access is granted to all members when storage is enabled. If a member does not have access to the project, the ability to download an attachment is not available; the button will be greyed out in Sentry. The member may only view that an attachment is stored. @@ -35,8 +35,8 @@ By default, access is granted to all members when storage is enabled. If a membe Attachments display on the bottom of the **Issue Details** page for the event that is shown. -![Attachments Access Denied](/img/attachments-access-denied.png) +![Attachments Access Denied](/platforms/node/common/enriching-events/attachments/attachments-access-denied.png) Alternately, attachments also appear in the _Attachments_ tab on the **Issue Details** page, where you can view the _Type_ of attachment, as well as associated events. Click the Event ID to open the **Issue Details** of that specific event. -![Attachments List Example](/img/attachments-list-example.png) +![Attachments List Example](/platforms/node/common/enriching-events/attachments/attachments-list-example.png) diff --git a/docs/platforms/node/common/enriching-events/context/index.mdx b/docs/platforms/node/common/enriching-events/context/index.mdx index 5cbf211cee34a..b9eb1d6b223cf 100644 --- a/docs/platforms/node/common/enriching-events/context/index.mdx +++ b/docs/platforms/node/common/enriching-events/context/index.mdx @@ -5,7 +5,7 @@ description: "Custom contexts allow you to attach arbitrary data (strings, lists Custom contexts allow you to attach arbitrary data to an event. Often, this context is shared among any issue captured in its lifecycle. You cannot search these, but they are viewable on the issue page: -![Custom contexts as viewed on the Additional Data section of an event](/img/additional_data.png) +![Custom contexts as viewed on the Additional Data section of an event](/platforms/node/common/enriching-events/context/additional_data.png) diff --git a/docs/platforms/node/common/enriching-events/tags/index.mdx b/docs/platforms/node/common/enriching-events/tags/index.mdx index cb16f27d3635c..7bd533365b2b9 100644 --- a/docs/platforms/node/common/enriching-events/tags/index.mdx +++ b/docs/platforms/node/common/enriching-events/tags/index.mdx @@ -29,4 +29,4 @@ Some tags are automatically set by Sentry. We strongly recommend against overwri Once you've started sending tagged data, you'll see it when logged in to sentry.io. There, you can view the filters within the sidebar on the Project page, summarized within an event, and on the Tags page for an aggregated event. -![](/img/tags.png) +![](/platforms/node/common/enriching-events/tags/tags.png) diff --git a/docs/platforms/node/common/troubleshooting/img/event_JSON.png b/docs/platforms/node/common/troubleshooting/img/event_JSON.png deleted file mode 100644 index 5ca238448ea5e..0000000000000 Binary files a/docs/platforms/node/common/troubleshooting/img/event_JSON.png and /dev/null differ diff --git a/docs/platforms/node/common/troubleshooting/index.mdx b/docs/platforms/node/common/troubleshooting/index.mdx index 9c169871f25ab..c0ce07d417f68 100644 --- a/docs/platforms/node/common/troubleshooting/index.mdx +++ b/docs/platforms/node/common/troubleshooting/index.mdx @@ -18,7 +18,7 @@ to know to get up and running again with the latest Sentry features. You can view the JSON payload of an event to see how Sentry stores additional data in the event. The shape of the data may not exactly match the description. -![Red box highlighting where to find the JSON connected to an event](./img/event_JSON.png) +![Red box highlighting where to find the JSON connected to an event](/platforms/javascript/common/troubleshooting/event_JSON.png) For more details, see the [full documentation on Event Payload](https://develop.sentry.dev/sdk/event-payloads/). diff --git a/docs/platforms/node/common/usage/distributed-tracing/index.mdx b/docs/platforms/node/common/usage/distributed-tracing/index.mdx index 5c92f909e36b8..6ffa4c38129f5 100644 --- a/docs/platforms/node/common/usage/distributed-tracing/index.mdx +++ b/docs/platforms/node/common/usage/distributed-tracing/index.mdx @@ -16,7 +16,7 @@ When an error or performance issue occurs, it can be challenging to pinpoint the Here's an example showing a distributed trace in Sentry: -![A full distributed trace in Sentry](/img/distributed-trace-in-sentry.png) +![A full distributed trace in Sentry](/platforms/node/common/usage/distributed-tracing/distributed-trace-in-sentry.png) This distributed trace shows a Vue app's `pageload` making a request to a Python backend, which then calls the `/api` endpoint of a Ruby microservice. diff --git a/docs/platforms/node/common/user-feedback/index.mdx b/docs/platforms/node/common/user-feedback/index.mdx index 348adb90aeb05..db03b48b39ce0 100644 --- a/docs/platforms/node/common/user-feedback/index.mdx +++ b/docs/platforms/node/common/user-feedback/index.mdx @@ -22,7 +22,7 @@ To collect feedback, the Crash-Report modal requests and collects the user's nam The screenshot below provides an example of the Crash-Report modal, though yours may differ depending on your customization: -![An example of a Crash-Report modal with text boxes for user name, email, and additional details about the break.](/img/user_feedback_widget.png) +![An example of a Crash-Report modal with text boxes for user name, email, and additional details about the break.](/platforms/node/common/user-feedback/user_feedback_widget.png) ### Integration diff --git a/docs/platforms/node/guides/aws-lambda/layer/index.mdx b/docs/platforms/node/guides/aws-lambda/layer/index.mdx index 70f189338b130..2271191b26e2e 100644 --- a/docs/platforms/node/guides/aws-lambda/layer/index.mdx +++ b/docs/platforms/node/guides/aws-lambda/layer/index.mdx @@ -17,11 +17,11 @@ This installation method will not work if you are using webpack. Then add the Sentry Layer by navigating to your Lambda function. Select **Layers**, then **Add a Layer**. -![](./img/lambda_view.png) +![](/platforms/node/guides/aws-lambda/layer/lambda_view.png) **Specify an ARN** tab as illustrated: -![](./img/add_layer.png) +![](/platforms/node/guides/aws-lambda/layer/add_layer.png) Finally, set the region and copy the provided ARN value into the input. diff --git a/docs/platforms/node/guides/express/index.mdx b/docs/platforms/node/guides/express/index.mdx index 53b3b3bb5f9b0..45922def340d9 100644 --- a/docs/platforms/node/guides/express/index.mdx +++ b/docs/platforms/node/guides/express/index.mdx @@ -166,6 +166,6 @@ Spans are instrumented for the following operations within a transaction: When capturing errors locally, ensure that your project's data filter for filtering localhost events is toggled off: -![](./img/express-data-filters.png) +![](/platforms/node/guides/express/express-data-filters.png) This ensures that errors produced by your browser (such as errors produced by HTTP methods) are properly captured. diff --git a/docs/platforms/php/common/crons/index.mdx b/docs/platforms/php/common/crons/index.mdx index 4269ee7938740..b0b8352f3d543 100644 --- a/docs/platforms/php/common/crons/index.mdx +++ b/docs/platforms/php/common/crons/index.mdx @@ -24,6 +24,6 @@ To receive alerts about these events: Example: `The event's tags match monitor.slug equals my-monitor-slug-here` -![Cron completed alert filter](/img/crons-alerts-example.png) +![Cron completed alert filter](/platforms/php/common/crons/crons-alerts-example.png) Learn more in [Issue Alert Configuration](/product/alerts/create-alerts/issue-alert-config/). diff --git a/docs/platforms/php/common/enriching-events/context/index.mdx b/docs/platforms/php/common/enriching-events/context/index.mdx index 288bbadd5d4ea..81dbddad59fcb 100644 --- a/docs/platforms/php/common/enriching-events/context/index.mdx +++ b/docs/platforms/php/common/enriching-events/context/index.mdx @@ -5,7 +5,7 @@ description: "Custom contexts allow you to attach arbitrary data (strings, lists Custom contexts allow you to attach arbitrary data to an event. Often, this context is shared among any issue captured in its lifecycle. You cannot search these, but they are viewable on the issue page: -![Custom contexts as viewed on the Additional Data section of an event](/img/additional_data.png) +![Custom contexts as viewed on the Additional Data section of an event](/platforms/php/common/enriching-events/context/additional_data.png) diff --git a/docs/platforms/php/common/enriching-events/tags/index.mdx b/docs/platforms/php/common/enriching-events/tags/index.mdx index cf057874a5715..b6b3a30ed4b10 100644 --- a/docs/platforms/php/common/enriching-events/tags/index.mdx +++ b/docs/platforms/php/common/enriching-events/tags/index.mdx @@ -23,4 +23,4 @@ Some tags are automatically set by Sentry. We strongly recommend against overwri Once you've started sending tagged data, you'll see it when logged in to sentry.io. There, you can view the filters within the sidebar on the Project page, summarized within an event, and on the Tags page for an aggregated event. -![](/img/tags.png) +![](/platforms/php/common/enriching-events/tags/tags.png) diff --git a/docs/platforms/php/common/usage/distributed-tracing/index.mdx b/docs/platforms/php/common/usage/distributed-tracing/index.mdx index 5c92f909e36b8..fe228f7c94204 100644 --- a/docs/platforms/php/common/usage/distributed-tracing/index.mdx +++ b/docs/platforms/php/common/usage/distributed-tracing/index.mdx @@ -16,7 +16,7 @@ When an error or performance issue occurs, it can be challenging to pinpoint the Here's an example showing a distributed trace in Sentry: -![A full distributed trace in Sentry](/img/distributed-trace-in-sentry.png) +![A full distributed trace in Sentry](/platforms/php/common/usage/distributed-tracing/distributed-trace-in-sentry.png) This distributed trace shows a Vue app's `pageload` making a request to a Python backend, which then calls the `/api` endpoint of a Ruby microservice. diff --git a/docs/platforms/php/common/user-feedback/index.mdx b/docs/platforms/php/common/user-feedback/index.mdx index 4f3570f425f52..5d24252af399c 100644 --- a/docs/platforms/php/common/user-feedback/index.mdx +++ b/docs/platforms/php/common/user-feedback/index.mdx @@ -14,7 +14,7 @@ To collect feedback, the Crash-Report modal requests and collects the user's nam The screenshot below provides an example of the Crash-Report modal, though yours may differ depending on your customization: -![An example of a Crash-Report modal with text boxes for user name, email, and additional details about the break.](/img/user_feedback_widget.png) +![An example of a Crash-Report modal with text boxes for user name, email, and additional details about the break.](/platforms/php/common/user-feedback/user_feedback_widget.png) ### Integration diff --git a/docs/platforms/php/guides/symfony/enriching-events/tags/index.mdx b/docs/platforms/php/guides/symfony/enriching-events/tags/index.mdx index c4e911ccc8a95..9ab714b9919a4 100644 --- a/docs/platforms/php/guides/symfony/enriching-events/tags/index.mdx +++ b/docs/platforms/php/guides/symfony/enriching-events/tags/index.mdx @@ -19,7 +19,7 @@ Some tags are automatically set by Sentry. We strongly recommend against overwri Once you've started sending tagged data, you'll see it when logged in to sentry.io. There, you can view the filters within the sidebar on the Project page, summarized within an event, and on the Tags page for an aggregated event. -![](/img/tags.png) +![](/platforms/php/common/enriching-events/tags/tags.png) ## Symfony configuration diff --git a/docs/platforms/powershell/enriching-events/attachments/index.mdx b/docs/platforms/powershell/enriching-events/attachments/index.mdx index 330678c0151c7..5f8ab1b4494ba 100644 --- a/docs/platforms/powershell/enriching-events/attachments/index.mdx +++ b/docs/platforms/powershell/enriching-events/attachments/index.mdx @@ -47,7 +47,7 @@ Learn more about how attachments impact your [quota](/product/accounts/quotas/). To limit access to attachments, navigate to your organization's **General Settings**, then select the _Attachments Access_ dropdown to set appropriate access — any member of your organization, the organization billing owner, member, admin, manager, or owner. -![Attachments Access](/img/attachments-access.png) +![Attachments Access](/platforms/dotnet/common/enriching-events/attachments/attachments-access.png) By default, access is granted to all members when storage is enabled. If a member does not have access to the project, the ability to download an attachment is not available; the button will be greyed out in Sentry. The member may only view that an attachment is stored. @@ -55,11 +55,11 @@ By default, access is granted to all members when storage is enabled. If a membe Attachments display on the bottom of the **Issue Details** page for the event that is shown. -![Attachments Access Denied](/img/attachments-access-denied.png) +![Attachments Access Denied](/platforms/dotnet/common/enriching-events/attachments/attachments-access-denied.png) Alternately, attachments also appear in the _Attachments_ tab on the **Issue Details** page, where you can view the _Type_ of attachment, as well as associated events. Click the Event ID to open the **Issue Details** of that specific event. -![Attachments List Example](/img/attachments-list-example.png) +![Attachments List Example](/platforms/dotnet/common/enriching-events/attachments/attachments-list-example.png) ## Maximum Attachment Size diff --git a/docs/platforms/powershell/enriching-events/context/index.mdx b/docs/platforms/powershell/enriching-events/context/index.mdx index 414e8eca722d6..b8e4cf8329ef3 100644 --- a/docs/platforms/powershell/enriching-events/context/index.mdx +++ b/docs/platforms/powershell/enriching-events/context/index.mdx @@ -5,7 +5,7 @@ description: "Custom contexts allow you to attach arbitrary data (strings, lists Custom contexts allow you to attach arbitrary data to an event. Often, this context is shared among any issue captured in its lifecycle. You cannot search these, but they are viewable on the issue page: -![Custom contexts as viewed on the Additional Data section of an event](/img/additional_data.png) +![Custom contexts as viewed on the Additional Data section of an event](/platforms/dotnet/common/enriching-events/context/additional_data.png) diff --git a/docs/platforms/powershell/enriching-events/tags/index.mdx b/docs/platforms/powershell/enriching-events/tags/index.mdx index 895cfb5c222cc..a80992f5a05db 100644 --- a/docs/platforms/powershell/enriching-events/tags/index.mdx +++ b/docs/platforms/powershell/enriching-events/tags/index.mdx @@ -25,4 +25,4 @@ Some tags are automatically set by Sentry. We strongly recommend against overwri Once you've started sending tagged data, you'll see it when logged in to sentry.io. There, you can view the filters within the sidebar on the Project page, summarized within an event, and on the Tags page for an aggregated event. -![](/img/tags.png) +![](/platforms/dotnet/common/enriching-events/tags/tags.png) diff --git a/docs/platforms/python/crons/index.mdx b/docs/platforms/python/crons/index.mdx index 4269ee7938740..11a7db9ca3d5a 100644 --- a/docs/platforms/python/crons/index.mdx +++ b/docs/platforms/python/crons/index.mdx @@ -24,6 +24,6 @@ To receive alerts about these events: Example: `The event's tags match monitor.slug equals my-monitor-slug-here` -![Cron completed alert filter](/img/crons-alerts-example.png) +![Cron completed alert filter](/platforms/python/crons/crons-alerts-example.png) Learn more in [Issue Alert Configuration](/product/alerts/create-alerts/issue-alert-config/). diff --git a/docs/platforms/python/enriching-events/attachments/index.mdx b/docs/platforms/python/enriching-events/attachments/index.mdx index 1c54752f1e7e9..c0e71c218a454 100644 --- a/docs/platforms/python/enriching-events/attachments/index.mdx +++ b/docs/platforms/python/enriching-events/attachments/index.mdx @@ -23,7 +23,7 @@ Learn more about how attachments impact your [quota](/product/accounts/quotas/). To limit access to attachments, navigate to your organization's **General Settings**, then select the _Attachments Access_ dropdown to set appropriate access — any member of your organization, the organization billing owner, member, admin, manager, or owner. -![Attachments Access](/img/attachments-access.png) +![Attachments Access](/platforms/python/enriching-events/attachments/attachments-access.png) By default, access is granted to all members when storage is enabled. If a member does not have access to the project, the ability to download an attachment is not available; the button will be greyed out in Sentry. The member may only view that an attachment is stored. @@ -31,8 +31,8 @@ By default, access is granted to all members when storage is enabled. If a membe Attachments display on the bottom of the **Issue Details** page for the event that is shown. -![Attachments Access Denied](/img/attachments-access-denied.png) +![Attachments Access Denied](/platforms/python/enriching-events/attachments/attachments-access-denied.png) Alternately, attachments also appear in the _Attachments_ tab on the **Issue Details** page, where you can view the _Type_ of attachment, as well as associated events. Click the Event ID to open the **Issue Details** of that specific event. -![Attachments List Example](/img/attachments-list-example.png) +![Attachments List Example](/platforms/python/enriching-events/attachments/attachments-list-example.png) diff --git a/docs/platforms/python/enriching-events/context/index.mdx b/docs/platforms/python/enriching-events/context/index.mdx index 288bbadd5d4ea..bd775e7e52db6 100644 --- a/docs/platforms/python/enriching-events/context/index.mdx +++ b/docs/platforms/python/enriching-events/context/index.mdx @@ -5,7 +5,7 @@ description: "Custom contexts allow you to attach arbitrary data (strings, lists Custom contexts allow you to attach arbitrary data to an event. Often, this context is shared among any issue captured in its lifecycle. You cannot search these, but they are viewable on the issue page: -![Custom contexts as viewed on the Additional Data section of an event](/img/additional_data.png) +![Custom contexts as viewed on the Additional Data section of an event](/platforms/python/enriching-events/context/additional_data.png) diff --git a/docs/platforms/python/enriching-events/tags/index.mdx b/docs/platforms/python/enriching-events/tags/index.mdx index 895cfb5c222cc..3ae79ca888709 100644 --- a/docs/platforms/python/enriching-events/tags/index.mdx +++ b/docs/platforms/python/enriching-events/tags/index.mdx @@ -25,4 +25,4 @@ Some tags are automatically set by Sentry. We strongly recommend against overwri Once you've started sending tagged data, you'll see it when logged in to sentry.io. There, you can view the filters within the sidebar on the Project page, summarized within an event, and on the Tags page for an aggregated event. -![](/img/tags.png) +![](/platforms/python/enriching-events/tags/tags.png) diff --git a/docs/platforms/python/integrations/aws-lambda/manual-layer/index.mdx b/docs/platforms/python/integrations/aws-lambda/manual-layer/index.mdx index 5242a582fc5b6..94c88c239f13c 100644 --- a/docs/platforms/python/integrations/aws-lambda/manual-layer/index.mdx +++ b/docs/platforms/python/integrations/aws-lambda/manual-layer/index.mdx @@ -19,11 +19,11 @@ You can also configure this function in one of the two ways described below: Navigate to your Lambda function: -![](./img/lambda-function-detail.png) +![](/platforms/python/integrations/aws-lambda/manual-layer/lambda-function-detail.png) Scroll down to the **Layers** section and click **Add a Layer**: -![](./img/lambda-function-detail-layer.png) +![](/platforms/python/integrations/aws-lambda/manual-layer/lambda-function-detail-layer.png) **Specify an ARN** tab as illustrated: @@ -33,7 +33,7 @@ First, set the region and copy the provided ARN value: Now copy that ARN into the input box: -![](./img/lambda-function-add-layer.png) +![](/platforms/python/integrations/aws-lambda/manual-layer/lambda-function-add-layer.png) ## Configure the Sentry SDK @@ -45,15 +45,15 @@ The Sentry layer will wrap your function handler to initialise the Sentry SDK in In you Lambda function, scroll to **Runtime settings** and click **Edit**: -![](./img/lambda-function-runtime-settings.png) +![](/platforms/python/integrations/aws-lambda/manual-layer/lambda-function-runtime-settings.png) Note your current **Handler** and change it to: `sentry_sdk.integrations.init_serverless_sdk.sentry_lambda_handler`: -![](./img/runtime-settings-handler.png) +![](/platforms/python/integrations/aws-lambda/manual-layer/runtime-settings-handler.png) After saving, open the "Configuration" tab of your Lambda Function and set `SENTRY_INITIAL_HANDLER` to the handler you noted before: -![](./img/lambda-function-configuration.png) +![](/platforms/python/integrations/aws-lambda/manual-layer/lambda-function-configuration.png) ### Configuration Options diff --git a/docs/platforms/python/integrations/cloudresourcecontext/index.mdx b/docs/platforms/python/integrations/cloudresourcecontext/index.mdx index 9b525d3b276d7..02907c4c5a1ee 100644 --- a/docs/platforms/python/integrations/cloudresourcecontext/index.mdx +++ b/docs/platforms/python/integrations/cloudresourcecontext/index.mdx @@ -43,11 +43,11 @@ The [developer documentation](https://develop.sentry.dev/sdk/event-payloads/cont In AWS EC2 the context looks like this: -![AWS EC2 Cloud Resource Context in Sentry event](./img/cloudresourcecontext-aws-ec2.png) +![AWS EC2 Cloud Resource Context in Sentry event](/platforms/python/integrations/cloudresourcecontext/cloudresourcecontext-aws-ec2.png) In Google Cloud Platform GCE the context looks like this: -![Google GCE Cloud Resource Context in Sentry event](./img/cloudresourcecontext-gcp-gce.png) +![Google GCE Cloud Resource Context in Sentry event](/platforms/python/integrations/cloudresourcecontext/cloudresourcecontext-gcp-gce.png) ## Supported Versions diff --git a/docs/platforms/python/integrations/fastapi/index.mdx b/docs/platforms/python/integrations/fastapi/index.mdx index f86b97398b7e0..1655d939bed33 100644 --- a/docs/platforms/python/integrations/fastapi/index.mdx +++ b/docs/platforms/python/integrations/fastapi/index.mdx @@ -60,7 +60,7 @@ The following information about your FastAPI project will be available to you on - Sentry excludes raw bodies and multipart file uploads. - Sentry also excludes personally identifiable information (such as user ids, usernames, cookies, authorization headers, IP addresses) unless you set `send_default_pii` to `True`. -![Issues List](./img/fastapi-issues-list.png) +![Issues List](/platforms/python/integrations/fastapi/fastapi-issues-list.png) ### Monitor Performance @@ -71,7 +71,7 @@ The following parts of your FastAPI project are monitored: - Database queries - Redis commands -![Performance details are shown as waterfall diagram](./img/fastapi-performance-details.png) +![Performance details are shown as waterfall diagram](/platforms/python/integrations/fastapi/fastapi-performance-details.png) diff --git a/docs/platforms/python/integrations/pymongo/index.mdx b/docs/platforms/python/integrations/pymongo/index.mdx index 7946168ad4bbd..15e1265792902 100644 --- a/docs/platforms/python/integrations/pymongo/index.mdx +++ b/docs/platforms/python/integrations/pymongo/index.mdx @@ -71,7 +71,7 @@ The following information about your MongoDB queries will be available to you on - Breadcrumbs for all MongoDB queries - Personal identifiable information (PII) will be stripped from all MongoDB queries if `send_default_pii` is disabled in the SDK. (This was tested for PyMongo 4.2 and below, but "should" also be future proof) -![MongoDB query details are shown as a waterfall diagram](./img/pymongo-query-performance-details.png) +![MongoDB query details are shown as a waterfall diagram](/platforms/python/integrations/pymongo/pymongo-query-performance-details.png) ### Other MongoDB libraries diff --git a/docs/platforms/python/usage/distributed-tracing/index.mdx b/docs/platforms/python/usage/distributed-tracing/index.mdx index 5c92f909e36b8..6df8cc28df044 100644 --- a/docs/platforms/python/usage/distributed-tracing/index.mdx +++ b/docs/platforms/python/usage/distributed-tracing/index.mdx @@ -16,7 +16,7 @@ When an error or performance issue occurs, it can be challenging to pinpoint the Here's an example showing a distributed trace in Sentry: -![A full distributed trace in Sentry](/img/distributed-trace-in-sentry.png) +![A full distributed trace in Sentry](/platforms/python/usage/distributed-tracing/distributed-trace-in-sentry.png) This distributed trace shows a Vue app's `pageload` making a request to a Python backend, which then calls the `/api` endpoint of a Ruby microservice. diff --git a/docs/platforms/python/user-feedback/index.mdx b/docs/platforms/python/user-feedback/index.mdx index 4f3570f425f52..7111e1b7493ba 100644 --- a/docs/platforms/python/user-feedback/index.mdx +++ b/docs/platforms/python/user-feedback/index.mdx @@ -14,7 +14,7 @@ To collect feedback, the Crash-Report modal requests and collects the user's nam The screenshot below provides an example of the Crash-Report modal, though yours may differ depending on your customization: -![An example of a Crash-Report modal with text boxes for user name, email, and additional details about the break.](/img/user_feedback_widget.png) +![An example of a Crash-Report modal with text boxes for user name, email, and additional details about the break.](/platforms/python/user-feedback/user_feedback_widget.png) ### Integration diff --git a/docs/platforms/react-native/data-management/debug-files/source-context/index.mdx b/docs/platforms/react-native/data-management/debug-files/source-context/index.mdx index 74354df398a42..d219e7382062a 100644 --- a/docs/platforms/react-native/data-management/debug-files/source-context/index.mdx +++ b/docs/platforms/react-native/data-management/debug-files/source-context/index.mdx @@ -9,7 +9,7 @@ If Sentry has access to your application's source code, it can show snippets of For example, here's a stack trace from a .NET application. The source context contains the original C# source code of the application, with the location of the frame highlighted. -![Screenshot of stack trace showing source context.](./img/source-context-screenshot.png) +![Screenshot of stack trace showing source context.](/platforms/react-native/data-management/debug-files/source-context/source-context-screenshot.png) ### Source Bundles diff --git a/docs/platforms/react-native/data-management/debug-files/upload/index.mdx b/docs/platforms/react-native/data-management/debug-files/upload/index.mdx index 77b5f21be7559..7b0784ef2f75f 100644 --- a/docs/platforms/react-native/data-management/debug-files/upload/index.mdx +++ b/docs/platforms/react-native/data-management/debug-files/upload/index.mdx @@ -9,7 +9,7 @@ to upload them using `sentry-cli`. Depending on your workflow, you may want to upload as part of your build pipeline or when deploying and publishing your application: -![](/img/debug-files-workflow.png) +![](/platforms/react-native/data-management/debug-files/upload/debug-files-workflow.png) diff --git a/docs/platforms/react-native/enriching-events/attachments/index.mdx b/docs/platforms/react-native/enriching-events/attachments/index.mdx index 319f4fbc35f16..ae45014047513 100644 --- a/docs/platforms/react-native/enriching-events/attachments/index.mdx +++ b/docs/platforms/react-native/enriching-events/attachments/index.mdx @@ -27,7 +27,7 @@ Learn more about how attachments impact your [quota](/product/accounts/quotas/). To limit access to attachments, navigate to your organization's **General Settings**, then select the _Attachments Access_ dropdown to set appropriate access — any member of your organization, the organization billing owner, member, admin, manager, or owner. -![Attachments Access](/img/attachments-access.png) +![Attachments Access](/platforms/react-native/enriching-events/attachments/attachments-access.png) By default, access is granted to all members when storage is enabled. If a member does not have access to the project, the ability to download an attachment is not available; the button will be greyed out in Sentry. The member may only view that an attachment is stored. @@ -35,8 +35,8 @@ By default, access is granted to all members when storage is enabled. If a membe Attachments display on the bottom of the **Issue Details** page for the event that is shown. -![Attachments Access Denied](/img/attachments-access-denied.png) +![Attachments Access Denied](/platforms/react-native/enriching-events/attachments/attachments-access-denied.png) Alternately, attachments also appear in the _Attachments_ tab on the **Issue Details** page, where you can view the _Type_ of attachment, as well as associated events. Click the Event ID to open the **Issue Details** of that specific event. -![Attachments List Example](/img/attachments-list-example.png) +![Attachments List Example](/platforms/react-native/enriching-events/attachments/attachments-list-example.png) diff --git a/docs/platforms/react-native/enriching-events/context/index.mdx b/docs/platforms/react-native/enriching-events/context/index.mdx index fbe4af026503d..d5819d824dc9c 100644 --- a/docs/platforms/react-native/enriching-events/context/index.mdx +++ b/docs/platforms/react-native/enriching-events/context/index.mdx @@ -5,7 +5,7 @@ description: "Custom contexts allow you to attach arbitrary data (strings, lists Custom contexts allow you to attach arbitrary data to an event. Often, this context is shared among any issue captured in its lifecycle. You cannot search these, but they are viewable on the issue page: -![Custom contexts as viewed on the Additional Data section of an event](/img/additional_data.png) +![Custom contexts as viewed on the Additional Data section of an event](/platforms/react-native/enriching-events/context/additional_data.png) diff --git a/docs/platforms/react-native/enriching-events/screenshots/index.mdx b/docs/platforms/react-native/enriching-events/screenshots/index.mdx index 6a4add125e8f6..75820cffe00fe 100644 --- a/docs/platforms/react-native/enriching-events/screenshots/index.mdx +++ b/docs/platforms/react-native/enriching-events/screenshots/index.mdx @@ -19,8 +19,8 @@ When `attachScreenshot` is enabled and an error event is captured, the screensho If one is available, you'll see a thumbnail of the screenshot when you click on a specific issue from the [**Issues**](https://demo.sentry.io/issues/) page. -![Screenshot Thumbnail](./img/screenshot-thumbnail.png) +![Screenshot Thumbnail](/platforms/react-native/enriching-events/screenshots/screenshot-thumbnail.png) Once you've clicked on the event ID of a specific issue, you'll be able to see an overview of all the attachments as well as associated events in the "Attachments" tab. -![Screenshots List Example](./img/screenshot-list-example.png) +![Screenshots List Example](/platforms/react-native/enriching-events/screenshots/screenshot-list-example.png) diff --git a/docs/platforms/react-native/enriching-events/tags/index.mdx b/docs/platforms/react-native/enriching-events/tags/index.mdx index cb16f27d3635c..5cebb5beab182 100644 --- a/docs/platforms/react-native/enriching-events/tags/index.mdx +++ b/docs/platforms/react-native/enriching-events/tags/index.mdx @@ -29,4 +29,4 @@ Some tags are automatically set by Sentry. We strongly recommend against overwri Once you've started sending tagged data, you'll see it when logged in to sentry.io. There, you can view the filters within the sidebar on the Project page, summarized within an event, and on the Tags page for an aggregated event. -![](/img/tags.png) +![](/platforms/react-native/enriching-events/tags/tags.png) diff --git a/docs/platforms/react-native/enriching-events/viewhierarchy/index.mdx b/docs/platforms/react-native/enriching-events/viewhierarchy/index.mdx index b951ddaa3d239..e43a08032a117 100644 --- a/docs/platforms/react-native/enriching-events/viewhierarchy/index.mdx +++ b/docs/platforms/react-native/enriching-events/viewhierarchy/index.mdx @@ -23,11 +23,11 @@ View hierarchy debugging is an opt-in feature. You can enable it as shown below: View hierarchies appear in the "Attachments" tab, where you can view all attachments, as well as associated events. Click the event ID to open the [Issue Details](/product/issues/issue-details) page of that specific event. -![Screenshots List Example](/img/viewhierarchy-list-example.png) +![Screenshots List Example](/platforms/react-native/enriching-events/viewhierarchy/viewhierarchy-list-example.png) On the **Issue Details** page, you can interact with the view hierarchy attachment in a section called "View Hierarchy". This section represents the state of your application at the time of an error event. There are three displays: a tree view, wireframe, and detailed view for a selected node. You can select nodes in either the tree or the wireframe to view the properties collected by the SDK. The SDK will report on the following keys for each node in the view: `alpha`, `visible`, `x`, `y`, `width`, `height`, `type`, and `identifier` if applicable, but there may be additional values specific to the SDK. This feature can be used as an exploratory tool to debug layout issues, visualize unnecessarily rendered content, or gain a better understanding of the relationship between views. -![View Hierarchy Example](/img/viewhierarchy-example.png) +![View Hierarchy Example](/platforms/react-native/enriching-events/viewhierarchy/viewhierarchy-example.png) ## View Hierarchy Mapping to React Native Components diff --git a/docs/platforms/react-native/sourcemaps/troubleshooting/index.mdx b/docs/platforms/react-native/sourcemaps/troubleshooting/index.mdx index 4fb0243e97881..c2e87c55fdf44 100644 --- a/docs/platforms/react-native/sourcemaps/troubleshooting/index.mdx +++ b/docs/platforms/react-native/sourcemaps/troubleshooting/index.mdx @@ -6,7 +6,7 @@ sidebar_order: 5 If source maps are not recognized, check for warnings similar to: -![Missing sources warning](./img/001-manual-sourcemaps.png) +![Missing sources warning](/platforms/react-native/sourcemaps/troubleshooting/001-manual-sourcemaps.png) The bundle filename needs to match the filename on the event (and shown on the warning) to correctly apply the source maps. diff --git a/docs/platforms/react-native/usage/distributed-tracing/index.mdx b/docs/platforms/react-native/usage/distributed-tracing/index.mdx index 5c92f909e36b8..6d799ab853569 100644 --- a/docs/platforms/react-native/usage/distributed-tracing/index.mdx +++ b/docs/platforms/react-native/usage/distributed-tracing/index.mdx @@ -16,7 +16,7 @@ When an error or performance issue occurs, it can be challenging to pinpoint the Here's an example showing a distributed trace in Sentry: -![A full distributed trace in Sentry](/img/distributed-trace-in-sentry.png) +![A full distributed trace in Sentry](/platforms/react-native/usage/distributed-tracing/distributed-trace-in-sentry.png) This distributed trace shows a Vue app's `pageload` making a request to a Python backend, which then calls the `/api` endpoint of a Ruby microservice. diff --git a/docs/platforms/ruby/common/crons/index.mdx b/docs/platforms/ruby/common/crons/index.mdx index 4269ee7938740..5634aa77f96c4 100644 --- a/docs/platforms/ruby/common/crons/index.mdx +++ b/docs/platforms/ruby/common/crons/index.mdx @@ -24,6 +24,6 @@ To receive alerts about these events: Example: `The event's tags match monitor.slug equals my-monitor-slug-here` -![Cron completed alert filter](/img/crons-alerts-example.png) +![Cron completed alert filter](/platforms/ruby/common/crons/crons-alerts-example.png) Learn more in [Issue Alert Configuration](/product/alerts/create-alerts/issue-alert-config/). diff --git a/docs/platforms/ruby/common/enriching-events/context/index.mdx b/docs/platforms/ruby/common/enriching-events/context/index.mdx index 288bbadd5d4ea..0a1783faa4831 100644 --- a/docs/platforms/ruby/common/enriching-events/context/index.mdx +++ b/docs/platforms/ruby/common/enriching-events/context/index.mdx @@ -5,7 +5,7 @@ description: "Custom contexts allow you to attach arbitrary data (strings, lists Custom contexts allow you to attach arbitrary data to an event. Often, this context is shared among any issue captured in its lifecycle. You cannot search these, but they are viewable on the issue page: -![Custom contexts as viewed on the Additional Data section of an event](/img/additional_data.png) +![Custom contexts as viewed on the Additional Data section of an event](/platforms/ruby/common/enriching-events/context/additional_data.png) diff --git a/docs/platforms/ruby/common/enriching-events/tags/index.mdx b/docs/platforms/ruby/common/enriching-events/tags/index.mdx index 895cfb5c222cc..395f48008afd7 100644 --- a/docs/platforms/ruby/common/enriching-events/tags/index.mdx +++ b/docs/platforms/ruby/common/enriching-events/tags/index.mdx @@ -25,4 +25,4 @@ Some tags are automatically set by Sentry. We strongly recommend against overwri Once you've started sending tagged data, you'll see it when logged in to sentry.io. There, you can view the filters within the sidebar on the Project page, summarized within an event, and on the Tags page for an aggregated event. -![](/img/tags.png) +![](/platforms/ruby/common/enriching-events/tags/tags.png) diff --git a/docs/platforms/ruby/common/usage/distributed-tracing/index.mdx b/docs/platforms/ruby/common/usage/distributed-tracing/index.mdx index 5c92f909e36b8..4d70fac2161e9 100644 --- a/docs/platforms/ruby/common/usage/distributed-tracing/index.mdx +++ b/docs/platforms/ruby/common/usage/distributed-tracing/index.mdx @@ -16,7 +16,7 @@ When an error or performance issue occurs, it can be challenging to pinpoint the Here's an example showing a distributed trace in Sentry: -![A full distributed trace in Sentry](/img/distributed-trace-in-sentry.png) +![A full distributed trace in Sentry](/platforms/ruby/common/usage/distributed-tracing/distributed-trace-in-sentry.png) This distributed trace shows a Vue app's `pageload` making a request to a Python backend, which then calls the `/api` endpoint of a Ruby microservice. diff --git a/docs/platforms/rust/common/enriching-events/context/index.mdx b/docs/platforms/rust/common/enriching-events/context/index.mdx index 288bbadd5d4ea..fb0449ca520b9 100644 --- a/docs/platforms/rust/common/enriching-events/context/index.mdx +++ b/docs/platforms/rust/common/enriching-events/context/index.mdx @@ -5,7 +5,7 @@ description: "Custom contexts allow you to attach arbitrary data (strings, lists Custom contexts allow you to attach arbitrary data to an event. Often, this context is shared among any issue captured in its lifecycle. You cannot search these, but they are viewable on the issue page: -![Custom contexts as viewed on the Additional Data section of an event](/img/additional_data.png) +![Custom contexts as viewed on the Additional Data section of an event](/platforms/rust/common/enriching-events/context/additional_data.png) diff --git a/docs/platforms/rust/common/enriching-events/tags/index.mdx b/docs/platforms/rust/common/enriching-events/tags/index.mdx index 895cfb5c222cc..561114edd1f21 100644 --- a/docs/platforms/rust/common/enriching-events/tags/index.mdx +++ b/docs/platforms/rust/common/enriching-events/tags/index.mdx @@ -25,4 +25,4 @@ Some tags are automatically set by Sentry. We strongly recommend against overwri Once you've started sending tagged data, you'll see it when logged in to sentry.io. There, you can view the filters within the sidebar on the Project page, summarized within an event, and on the Tags page for an aggregated event. -![](/img/tags.png) +![](/platforms/rust/common/enriching-events/tags/tags.png) diff --git a/docs/platforms/rust/common/usage/distributed-tracing/index.mdx b/docs/platforms/rust/common/usage/distributed-tracing/index.mdx index 5c92f909e36b8..d5ff2d5af7bca 100644 --- a/docs/platforms/rust/common/usage/distributed-tracing/index.mdx +++ b/docs/platforms/rust/common/usage/distributed-tracing/index.mdx @@ -16,7 +16,7 @@ When an error or performance issue occurs, it can be challenging to pinpoint the Here's an example showing a distributed trace in Sentry: -![A full distributed trace in Sentry](/img/distributed-trace-in-sentry.png) +![A full distributed trace in Sentry](/platforms/rust/common/usage/distributed-tracing/distributed-trace-in-sentry.png) This distributed trace shows a Vue app's `pageload` making a request to a Python backend, which then calls the `/api` endpoint of a Ruby microservice. diff --git a/docs/platforms/rust/common/user-feedback/index.mdx b/docs/platforms/rust/common/user-feedback/index.mdx index 4f3570f425f52..56a9e542511f5 100644 --- a/docs/platforms/rust/common/user-feedback/index.mdx +++ b/docs/platforms/rust/common/user-feedback/index.mdx @@ -14,7 +14,7 @@ To collect feedback, the Crash-Report modal requests and collects the user's nam The screenshot below provides an example of the Crash-Report modal, though yours may differ depending on your customization: -![An example of a Crash-Report modal with text boxes for user name, email, and additional details about the break.](/img/user_feedback_widget.png) +![An example of a Crash-Report modal with text boxes for user name, email, and additional details about the break.](/platforms/rust/common/user-feedback/user_feedback_widget.png) ### Integration diff --git a/docs/platforms/unity/configuration/app-not-responding/index.mdx b/docs/platforms/unity/configuration/app-not-responding/index.mdx index dab8eeec61ceb..ff20ddcfe2301 100644 --- a/docs/platforms/unity/configuration/app-not-responding/index.mdx +++ b/docs/platforms/unity/configuration/app-not-responding/index.mdx @@ -17,7 +17,7 @@ On platforms that do no support multithreading the ANR detection falls back to r ANR detection is enabled by default in Sentry, but you can opt-out through the editor window by going to `Tools -> Sentry -> Advanced -> ANR Detection`. You can also set the ANR timeout there. -![ANR Detection](./img/unity-anr.jpg) +![ANR Detection](/platforms/unity/configuration/app-not-responding/unity-anr.jpg) You can also opt out by disabling the integration. diff --git a/docs/platforms/unity/data-management/debug-files/source-context/index.mdx b/docs/platforms/unity/data-management/debug-files/source-context/index.mdx index ae84589de0e62..0a5e7770f66b9 100644 --- a/docs/platforms/unity/data-management/debug-files/source-context/index.mdx +++ b/docs/platforms/unity/data-management/debug-files/source-context/index.mdx @@ -9,7 +9,7 @@ If Sentry has access to your application's source code, it can show snippets of For example, here's a stack trace from a .NET application. The source context contains the original C# source code of the application, with the location of the frame highlighted. -![Screenshot of stack trace showing source context.](./img/source-context-screenshot.png) +![Screenshot of stack trace showing source context.](/platforms/unity/data-management/debug-files/source-context/source-context-screenshot.png) ### Source Bundles diff --git a/docs/platforms/unity/data-management/debug-files/upload/index.mdx b/docs/platforms/unity/data-management/debug-files/upload/index.mdx index ff33f3790d593..a9c09c6a2b452 100644 --- a/docs/platforms/unity/data-management/debug-files/upload/index.mdx +++ b/docs/platforms/unity/data-management/debug-files/upload/index.mdx @@ -16,7 +16,7 @@ to upload them using `sentry-cli`. Depending on your workflow, you may want to upload as part of your build pipeline or when deploying and publishing your application: -![](/img/debug-files-workflow.png) +![](/platforms/unity/data-management/debug-files/upload/debug-files-workflow.png) diff --git a/docs/platforms/unity/enriching-events/attachments/index.mdx b/docs/platforms/unity/enriching-events/attachments/index.mdx index ffd8ddf7a43eb..ea91917d2733c 100644 --- a/docs/platforms/unity/enriching-events/attachments/index.mdx +++ b/docs/platforms/unity/enriching-events/attachments/index.mdx @@ -53,7 +53,7 @@ Learn more about how attachments impact your [quota](/product/accounts/quotas/). To limit access to attachments, navigate to your organization's **General Settings**, then select the _Attachments Access_ dropdown to set appropriate access — any member of your organization, the organization billing owner, member, admin, manager, or owner. -![Attachments Access](/img/attachments-access.png) +![Attachments Access](/platforms/unity/enriching-events/attachments/attachments-access.png) By default, access is granted to all members when storage is enabled. If a member does not have access to the project, the ability to download an attachment is not available; the button will be greyed out in Sentry. The member may only view that an attachment is stored. @@ -61,11 +61,11 @@ By default, access is granted to all members when storage is enabled. If a membe Attachments display on the bottom of the **Issue Details** page for the event that is shown. -![Attachments Access Denied](/img/attachments-access-denied.png) +![Attachments Access Denied](/platforms/unity/enriching-events/attachments/attachments-access-denied.png) Alternately, attachments also appear in the _Attachments_ tab on the **Issue Details** page, where you can view the _Type_ of attachment, as well as associated events. Click the Event ID to open the **Issue Details** of that specific event. -![Attachments List Example](/img/attachments-list-example.png) +![Attachments List Example](/platforms/unity/enriching-events/attachments/attachments-list-example.png) ## Maximum Attachment Size diff --git a/docs/platforms/unity/enriching-events/context/index.mdx b/docs/platforms/unity/enriching-events/context/index.mdx index fc43e1773bc42..62e8533630205 100644 --- a/docs/platforms/unity/enriching-events/context/index.mdx +++ b/docs/platforms/unity/enriching-events/context/index.mdx @@ -5,7 +5,7 @@ description: "Custom contexts allow you to attach arbitrary data (strings, lists Custom contexts allow you to attach arbitrary data to an event. Often, this context is shared among any issue captured in its lifecycle. You cannot search these, but they are viewable on the issue page: -![Custom contexts as viewed on the Additional Data section of an event](/img/additional_data.png) +![Custom contexts as viewed on the Additional Data section of an event](/platforms/unity/enriching-events/context/additional_data.png) diff --git a/docs/platforms/unity/enriching-events/screenshots/img/screenshot-list-example.png b/docs/platforms/unity/enriching-events/screenshots/img/screenshot-list-example.png deleted file mode 100644 index 39c803c4dd822..0000000000000 Binary files a/docs/platforms/unity/enriching-events/screenshots/img/screenshot-list-example.png and /dev/null differ diff --git a/docs/platforms/unity/enriching-events/screenshots/img/screenshot-thumbnail.png b/docs/platforms/unity/enriching-events/screenshots/img/screenshot-thumbnail.png deleted file mode 100644 index c77859f613e87..0000000000000 Binary files a/docs/platforms/unity/enriching-events/screenshots/img/screenshot-thumbnail.png and /dev/null differ diff --git a/docs/platforms/unity/enriching-events/screenshots/index.mdx b/docs/platforms/unity/enriching-events/screenshots/index.mdx index 21b747ce283f3..2c9f9511ec97b 100644 --- a/docs/platforms/unity/enriching-events/screenshots/index.mdx +++ b/docs/platforms/unity/enriching-events/screenshots/index.mdx @@ -17,8 +17,8 @@ Because screenshots may contain ` annotation to point back to the C# code it was generated from. This can be due to optimization or the IL2CPP compiler generating code to handle C# specific features. - The C++ exception might return an incorrect line number which makes Sentry miss the `` annotation. You can try enabling uploading your source code in the debug symbol options to look at the generated C++ code. -![A Sentry event with a mixed stack trace](./img/unity-cpp-stacktrace.jpg) +![A Sentry event with a mixed stack trace](/platforms/unity/troubleshooting/unity-cpp-stacktrace.jpg) This is also why you might end up with very high line numbers (in the several thousands) even though your C# script is very small; the line numbers relate to the generated C++ code. diff --git a/docs/platforms/unity/usage/distributed-tracing/index.mdx b/docs/platforms/unity/usage/distributed-tracing/index.mdx index 5c92f909e36b8..cace1ec94f2a5 100644 --- a/docs/platforms/unity/usage/distributed-tracing/index.mdx +++ b/docs/platforms/unity/usage/distributed-tracing/index.mdx @@ -16,7 +16,7 @@ When an error or performance issue occurs, it can be challenging to pinpoint the Here's an example showing a distributed trace in Sentry: -![A full distributed trace in Sentry](/img/distributed-trace-in-sentry.png) +![A full distributed trace in Sentry](/platforms/unity/usage/distributed-tracing/distributed-trace-in-sentry.png) This distributed trace shows a Vue app's `pageload` making a request to a Python backend, which then calls the `/api` endpoint of a Ruby microservice. diff --git a/docs/platforms/unreal/configuration/debug-symbols/index.mdx b/docs/platforms/unreal/configuration/debug-symbols/index.mdx index 25797d3b43e7f..6b264cb3e4b5b 100644 --- a/docs/platforms/unreal/configuration/debug-symbols/index.mdx +++ b/docs/platforms/unreal/configuration/debug-symbols/index.mdx @@ -19,7 +19,7 @@ You must configure which build configurations, target types, and platforms Sentr -![The Unreal Engine debug symbols upload configuration](./img/unreal-debug-symbols.png) +![The Unreal Engine debug symbols upload configuration](/platforms/unreal/configuration/debug-symbols/unreal-debug-symbols.png) ### Manual Upload Using sentry-cli diff --git a/docs/platforms/unreal/configuration/setup-crashreporter/index.mdx b/docs/platforms/unreal/configuration/setup-crashreporter/index.mdx index 6a7d4f52831c9..dd57d933f551b 100644 --- a/docs/platforms/unreal/configuration/setup-crashreporter/index.mdx +++ b/docs/platforms/unreal/configuration/setup-crashreporter/index.mdx @@ -24,7 +24,7 @@ information about the crash and send it to a service like Sentry to process. Adding it to your game means that in case a crash happens, the following dialog is displayed to the user: -![The UE Crash Reporter](./img/ue-crash-reporter.png) +![The UE Crash Reporter](/platforms/unreal/configuration/setup-crashreporter/ue-crash-reporter.png) ### Using the UE Crash Reporter on Windows @@ -36,7 +36,7 @@ You can add the _Crash Reporter Client_ to your game in your _Project Settings_. The simplest way is to search the option: `Crash Reporter`: -![Include UE Crash Reporter](./img/ue-include-crash-reporter.png) +![Include UE Crash Reporter](/platforms/unreal/configuration/setup-crashreporter/ue-include-crash-reporter.png) The option is located under _Project > Packaging_ menu, then select _show advanced_ followed by checking the box for: `Include Crash Reporter`. @@ -75,7 +75,7 @@ is enough. Alternatively, the endpoint can be added automatically to the _DefaultEngine.ini_ file by using the Sentry configuration window. -![The UE Crash Reporter settings](./img/ue-crash-reporter-settings.png) +![The UE Crash Reporter settings](/platforms/unreal/configuration/setup-crashreporter/ue-crash-reporter-settings.png) Navigate to the editor's menu **Project Settings > Plugins > Sentry**, set the Sentry _Unreal Engine Endpoint_ in the corresponding input field, and click the **Update global settings** button to apply changes. The default endpoint value can be restored by clicking the **Reset** button once the _Crash Reporter_ is no longer needed. diff --git a/docs/platforms/unreal/data-management/debug-files/upload/index.mdx b/docs/platforms/unreal/data-management/debug-files/upload/index.mdx index c5cf1ac6e59d3..21ff6ab141346 100644 --- a/docs/platforms/unreal/data-management/debug-files/upload/index.mdx +++ b/docs/platforms/unreal/data-management/debug-files/upload/index.mdx @@ -9,7 +9,7 @@ to upload them using `sentry-cli`. Depending on your workflow, you may want to upload as part of your build pipeline or when deploying and publishing your application: -![](/img/debug-files-workflow.png) +![](/platforms/unreal/data-management/debug-files/upload/debug-files-workflow.png) For all available options and more information refer to [_Uploading Debug Information_](/product/cli/dif/#uploading-files). diff --git a/docs/platforms/unreal/enriching-events/attachments/index.mdx b/docs/platforms/unreal/enriching-events/attachments/index.mdx index 94276e7b3e247..4dad011f71be8 100644 --- a/docs/platforms/unreal/enriching-events/attachments/index.mdx +++ b/docs/platforms/unreal/enriching-events/attachments/index.mdx @@ -78,7 +78,7 @@ void USomeClass::HandleScopeDelegate(USentryScope* Scope) The same result can be achieved by calling the corresponding function in blueprint: -![Upload attachmnet](./img/unreal_attachment_upload.png) +![Upload attachmnet](/platforms/unreal/enriching-events/attachments/unreal_attachment_upload.png) @@ -94,7 +94,7 @@ Learn more about how attachments impact your [quota](/product/accounts/quotas/). To limit access to attachments, navigate to your organization's **General Settings**, then select the _Attachments Access_ dropdown to set appropriate access — any member of your organization, the organization billing owner, member, admin, manager, or owner. -![Attachments Access](/img/attachments-access.png) +![Attachments Access](/platforms/unreal/enriching-events/attachments/attachments-access.png) By default, access is granted to all members when storage is enabled. If a member does not have access to the project, the ability to download an attachment is not available; the button will be greyed out in Sentry. The member may only view that an attachment is stored. @@ -102,11 +102,11 @@ By default, access is granted to all members when storage is enabled. If a membe Attachments display on the bottom of the **Issue Details** page for the event that is shown. -![Attachments Access Denied](/img/attachments-access-denied.png) +![Attachments Access Denied](/platforms/unreal/enriching-events/attachments/attachments-access-denied.png) Alternately, attachments also appear in the _Attachments_ tab on the **Issue Details** page, where you can view the _Type_ of attachment, as well as associated events. Click the Event ID to open the **Issue Details** of that specific event. -![Attachments List Example](/img/attachments-list-example.png) +![Attachments List Example](/platforms/unreal/enriching-events/attachments/attachments-list-example.png) ## Maximum Attachment Size diff --git a/docs/platforms/unreal/enriching-events/breadcrumbs/index.mdx b/docs/platforms/unreal/enriching-events/breadcrumbs/index.mdx index d354f42708562..1c676b4706af8 100644 --- a/docs/platforms/unreal/enriching-events/breadcrumbs/index.mdx +++ b/docs/platforms/unreal/enriching-events/breadcrumbs/index.mdx @@ -30,10 +30,10 @@ SentrySubsystem->AddBreadcrumb("Message", "Category", "Type", AdditionalData, ES The same result can be achieved by calling corresponding function in blueprint: -![Add breadcrumb](./img/unreal_breadcrumb.png) +![Add breadcrumb](/platforms/unreal/enriching-events/breadcrumbs/unreal_breadcrumb.png) ## Automatic Breadcrumbs The Unreal Engine SDK can capture certain types of breadcrumbs automatically. Those can be enabled using the Sentry configuration window at **Project Settings > Plugins > Sentry**. -![Sentry automatic breadcrumbs](./img/unreal_automatic_breadcrumbs.png) +![Sentry automatic breadcrumbs](/platforms/unreal/enriching-events/breadcrumbs/unreal_automatic_breadcrumbs.png) diff --git a/docs/platforms/unreal/enriching-events/context/index.mdx b/docs/platforms/unreal/enriching-events/context/index.mdx index f79b605234dd3..cf0fa2d8f5b70 100644 --- a/docs/platforms/unreal/enriching-events/context/index.mdx +++ b/docs/platforms/unreal/enriching-events/context/index.mdx @@ -5,7 +5,7 @@ description: "Custom contexts allow you to attach arbitrary data (strings, lists Custom contexts allow you to attach arbitrary data to an event. Often, this context is shared among any issue captured in its lifecycle. You cannot search these, but they are viewable on the issue page: -![Custom contexts as viewed on the Additional Data section of an event](/img/additional_data.png) +![Custom contexts as viewed on the Additional Data section of an event](/platforms/unreal/enriching-events/context/additional_data.png) @@ -31,7 +31,7 @@ SentrySubsystem->SetContext("Character", ContextData); The same result can be achieved by calling corresponding function in blueprint: -![Set context](./unreal_set_context.png) +![Set context](/platforms/unreal/enriching-events/context/unreal_set_context.png) Alternatively, this configuration can be provided to the crash reporter [during initialization](/platforms/unreal/configuration/setup-crashreporter/#configure-attributes). diff --git a/docs/platforms/unreal/enriching-events/identify-user/index.mdx b/docs/platforms/unreal/enriching-events/identify-user/index.mdx index c44f04289a8bb..7fde885bd988e 100644 --- a/docs/platforms/unreal/enriching-events/identify-user/index.mdx +++ b/docs/platforms/unreal/enriching-events/identify-user/index.mdx @@ -54,7 +54,7 @@ SentrySubsystem->SetUser(User); The same result can be achieved by calling corresponding function in blueprint: -![Set user](./img/unreal_set_user.png) +![Set user](/platforms/unreal/enriching-events/identify-user/unreal_set_user.png) Alternatively, this configuration can be provided to the crash reporter [during initialization](/platforms/unreal/configuration/setup-crashreporter/#configure-attributes). @@ -68,6 +68,6 @@ SentrySubsystem->RemoveUser(); Or in blueprint: -![Unset user](./img/unreal_unset_user.png) +![Unset user](/platforms/unreal/enriching-events/identify-user/unreal_unset_user.png) In configurations with a crash reporter, create a new `__sentry` config object without the `user` field. Then, call `FGenericCrashContext::SetGameData` from the [initialization function](/platforms/unreal/configuration/setup-crashreporter/#configure-attributes) with the new JSON data. You have to provide all other fields again, as the call overrides the previously registered data. diff --git a/docs/platforms/unreal/enriching-events/tags/index.mdx b/docs/platforms/unreal/enriching-events/tags/index.mdx index cf057874a5715..aacab6f7831ba 100644 --- a/docs/platforms/unreal/enriching-events/tags/index.mdx +++ b/docs/platforms/unreal/enriching-events/tags/index.mdx @@ -23,4 +23,4 @@ Some tags are automatically set by Sentry. We strongly recommend against overwri Once you've started sending tagged data, you'll see it when logged in to sentry.io. There, you can view the filters within the sidebar on the Project page, summarized within an event, and on the Tags page for an aggregated event. -![](/img/tags.png) +![](/platforms/unreal/enriching-events/tags/tags.png) diff --git a/docs/platforms/unreal/index.mdx b/docs/platforms/unreal/index.mdx index 525897f0c8b25..2f8e130a655d3 100644 --- a/docs/platforms/unreal/index.mdx +++ b/docs/platforms/unreal/index.mdx @@ -64,7 +64,7 @@ This method is recommended only for Blueprint UE projects. If you already have a To make sure the Sentry plugin has been enabled after installation has been completed, go to the editor and navigate to the **Settings > Plugins > Code Plugins** menu and check for the installation. -![Sentry window](./img/unreal_plugins_window.png) +![Sentry window](/platforms/unreal/unreal_plugins_window.png) To access the plugin API from within C++, add `Sentry` support to the build script (`MyProject.build.cs`): @@ -92,7 +92,7 @@ If you are logged in, you can also go to your project settings and copy its DSN Sentry can be configured using the Sentry configuration window. The window can be accessed by going to editor's menu: **Project Settings > Plugins > Sentry**. -![Sentry settings window](./img/unreal_window.png) +![Sentry settings window](/platforms/unreal/unreal_window.png) By default, the SDK is automatically initialized on application startup. Alternatively, the `Initialize SDK automatically` option can be disabled and in this case, explicit SDK initialization is required. @@ -115,7 +115,7 @@ void Verify() The same result can be achieved by calling corresponding function in blueprint: -![Sentry capture message BP](./img/unreal_bp_message.png) +![Sentry capture message BP](/platforms/unreal/unreal_bp_message.png) diff --git a/docs/product/accounts/auth-tokens/img/user-auth-token-create.png b/docs/product/accounts/auth-tokens/img/user-auth-token-create.png deleted file mode 100644 index 40d83d447f6fd..0000000000000 Binary files a/docs/product/accounts/auth-tokens/img/user-auth-token-create.png and /dev/null differ diff --git a/docs/product/accounts/auth-tokens/index.mdx b/docs/product/accounts/auth-tokens/index.mdx index e9d0ee64d69c8..078d641dfd0ac 100644 --- a/docs/product/accounts/auth-tokens/index.mdx +++ b/docs/product/accounts/auth-tokens/index.mdx @@ -45,7 +45,7 @@ User auth token permissions are customizable but cannot be edited later. [Organization auth tokens](https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/) can be created in [sentry.io](https://sentry.io) on the **Auth Tokens** page under **Settings > Developer Settings > Auth Tokens**. -![](./img/org-auth-tokens-overview.png) +![](/product/accounts/auth-tokens/org-auth-tokens-overview.png) They can also be generated on certain pages of Sentry's docs if you're signed in, and by using the Sentry Wizard to configure uploading source maps. @@ -55,7 +55,7 @@ For security reasons, organization auth tokens are only visible _once_, right af Any user can create organization auth tokens for any of their organizations. This allows any user (not only organization owners) to configure a Sentry SDK and set up CI processes by creating and using organization auth tokens. Since organization auth tokens have limited access, there is limited potential for abuse. -![](./img/org-auth-token-create.png) +![](/product/accounts/auth-tokens/org-auth-token-create.png) All owners of the organization will receive a security email when a new organization auth token is created and can revoke these tokens at any point. _Only_ organization owners & managers can revoke organization auth tokens . @@ -69,16 +69,16 @@ To get started, see our docs on [Internal Integrations](/product/integrations/in [User auth tokens](https://sentry.io/settings/account/api/auth-tokens/) can be created in [sentry.io](https://sentry.io) on the **User Auth Tokens** page under the Account dropdown in the top left. -![](./img/user-auth-tokens-menu.png) +![](/product/accounts/auth-tokens/user-auth-tokens-menu.png) User auth tokens can be created by any user, and are bound to that user. The tokens can be given permissions to all organizations and projects that user has access to. This means a user auth token's _maximum_ scope is all the scopes that the user has access to for a given organization. A user auth token cannot exceed the permissions of the user who created it. See [Organization and User Management](/product/accounts/membership/) for more details on how permissions work in Sentry. When you create a new user auth token, you can select which [scopes](/api/permissions/) the token should have in the UI: -![](./img/user-auth-token-create.png) +![](/product/accounts/auth-tokens/user-auth-token-create.png) Currently, you can view user auth tokens in the UI after creating them. This is a legacy behavior that may change in the future. We recommend only using each user auth token once, and creating a new token for each use case. Any user can always revoke any of their user auth tokens. -![](./img/user-auth-tokens-overview.png) +![](/product/accounts/auth-tokens/user-auth-tokens-overview.png) We recommend only using a user auth token to interact with the Sentry API on behalf of a user. See Sentry's API [Authentication](/api/auth/) docs for more information on how to do this. diff --git a/docs/product/accounts/early-adopter-features/index.mdx b/docs/product/accounts/early-adopter-features/index.mdx index 52a474f29727e..1f6c1a5e7fdbe 100644 --- a/docs/product/accounts/early-adopter-features/index.mdx +++ b/docs/product/accounts/early-adopter-features/index.mdx @@ -6,7 +6,7 @@ description: "Learn which features are currently in the early adopter phase." If you’re interested in being an Early Adopter, you can turn your organization’s Early Adopter status on/off in **Settings > General Settings**. This will affect all users in your organization and can be turned back off just as easily. -![The Early Adopter toggle enabled in settings.](./img/early-adopter-toggle.png) +![The Early Adopter toggle enabled in settings.](/product/accounts/early-adopter-features/early-adopter-toggle.png) This page lists the features that you'll have access to when you opt-in as "Early Adopter". Note that features are sometimes released to early adopters in waves, so you may not see a feature immediately upon enabling the "Early Adopter" setting. diff --git a/docs/product/accounts/getting-started/index.mdx b/docs/product/accounts/getting-started/index.mdx index 0357f4f558e21..9ce12365a61d3 100644 --- a/docs/product/accounts/getting-started/index.mdx +++ b/docs/product/accounts/getting-started/index.mdx @@ -26,14 +26,14 @@ Sentry also supports a subset of the specification for System for Cross-Domain I Now that SSO is configured and members have created their accounts, add them to their Sentry Teams. Teams are associated with your [Sentry projects](#4-create-projects), and their members receive issue notifications in addition to becoming issue assignees. We recommend creating Sentry teams that align with your internal team structure (for example, _#Frontend_, _#Ops_, _#SDK_, and so on). To add a new team, go to **Settings > Teams** and click "Create Team". -![Create New Team](./img/team-settings.png) +![Create New Team](/product/accounts/getting-started/team-settings.png) Click on a team name to open the team settings and manage its associated members and projects. Under the "Members" tab, add existing members to your team by clicking on "Add Member > [Member Name]". You can also invite multiple new (external) members to join your organization and team by clicking on "Add Member > Invite Member". -![Invite Members](./img/invite-members.png) +![Invite Members](/product/accounts/getting-started/invite-members.png) Learn more about different user roles in [Organization Management](/product/accounts/membership/). @@ -60,9 +60,9 @@ When you enable an integration with your source code management (SCM) provider, 1. Mark an issue as **Resolved via Commit or PR** to stop notifications about similar errors in past releases and notify you of a regression. 1. Link a Sentry issue to a new or existing issue in your integrated [issue tracking](#33-issue-tracking) solution. - ![Identify suspect commits and see suggested assignees for issues.](./img/issue-integrations-01.png) + ![Identify suspect commits and see suggested assignees for issues.](/product/accounts/getting-started/issue-integrations-01.png) - ![Link a Sentry issue to a new or existing issue in your issue tracking solution.](./img/issue-integrations-02.png) + ![Link a Sentry issue to a new or existing issue in your issue tracking solution.](/product/accounts/getting-started/issue-integrations-02.png) Sentry has built-in SCM integrations with: @@ -91,7 +91,7 @@ Automatic issue management is available only if your organization is on a Busine To start monitoring errors in your app with Sentry, you'll need to initialize the SDK with a DSN key. To obtain a key, add a new Sentry project by going to **Projects** and clicking "Create Project". Give the project a name and assign the responsible [team (or teams)](#2-set-up-teams). Then, retrieve the key in **[Project] > Settings > Client Keys (DSN)**. -![Retrieve your project DSN key.](./img/project-dsn.png) +![Retrieve your project DSN key.](/product/accounts/getting-started/project-dsn.png) Once the SDK is initialized, any error that occurs in your code, wherever it may be deployed and running, will be associated with that specific project. @@ -108,7 +108,7 @@ A _project_ is a logical entity that connects the errors in your application (or Also, when you go to the **Issues** and **Discover** pages in [sentry.io](https://sentry.io), the filter at the top of the screen prioritizes the projects you're a member of by default. This way, developers are looking at information that is relevant to their work, and they see the errors that they might need to work on. -![Issues page with Project dropdown open.](./img/issues-project-dropdown.png) +![Issues page with Project dropdown open.](/product/accounts/getting-started/issues-project-dropdown.png) ### How Many Projects Should I Create? @@ -125,7 +125,7 @@ Here are some points to consider: Depending on your development life cycle, your applications are probably deployed and running in multiple environments — _QA_, _Staging_, _Production_, and so on. Configuring the environment in your Sentry SDK will add the tag to every error event and will help you associate events with the environment in which they occurred. You can do that by creating a `SENTRY_ENVIRONMENT` environment variable or by explicitly defining it in the SDK configuration. Learn more in [Environments](/platform-redirect/?next=/configuration/environments/). -![The Issues page with the Environment dropdown opened.](./img/environment-dropdown.png) +![The Issues page with the Environment dropdown opened.](/product/accounts/getting-started/environment-dropdown.png) Having the environment defined in your SDK will allow you to: diff --git a/docs/product/accounts/membership.mdx b/docs/product/accounts/membership.mdx index 447bee765fc35..6928d5c72178b 100644 --- a/docs/product/accounts/membership.mdx +++ b/docs/product/accounts/membership.mdx @@ -121,7 +121,7 @@ Team membership is open by default. All members can join, leave, and add other m To restrict access to teams and projects, turn off "Open Membership" for the organization in **Settings > General Settings**. -![](./img/membership-toggle.png) +![](/product/accounts/membership-toggle.png) If "Open Membership" is toggled off, team access is on an invite-only basis. Users can request to join a team and invite others to join their teams, but access requests and invitations must be approved by an Org Manager, Org Owner, or a Team Admin for that team. Org Admins who aren't part of the team also need to follow this process to join. Once they join, they automatically become a Team Admin. diff --git a/docs/product/accounts/migration/index.mdx b/docs/product/accounts/migration/index.mdx index a4cb87789cd1f..3db47298c91f9 100644 --- a/docs/product/accounts/migration/index.mdx +++ b/docs/product/accounts/migration/index.mdx @@ -26,11 +26,11 @@ One thing to note is we won't be able to transfer over historical event data, bu Before you begin the migration process, [sign up](https://sentry.io/signup/) for a new organization in Sentry. -![Sentry welcome page](./img/sign-up-welcome.png) +![Sentry welcome page](/product/accounts/migration/sign-up-welcome.png) Once you complete the onboarding steps, get your **org slug** from the browser URL or in **Settings > General Settings**. We'll need this information to know where to migrate your data. -![Org slug in the url](./img/org-slug.png) +![Org slug in the url](/product/accounts/migration/org-slug.png) diff --git a/docs/product/accounts/pricing.mdx b/docs/product/accounts/pricing.mdx index f2af7248017f5..f30ac8d9622f5 100644 --- a/docs/product/accounts/pricing.mdx +++ b/docs/product/accounts/pricing.mdx @@ -105,7 +105,7 @@ If the amount of prepaid data you want to buy falls in between increments, you m Use the slider on the [pricing](https://sentry.io/pricing/) page to determine the amount of prepaid data you might need based on the volume of event types you send. -![Reserved Volume settings in Subscriptions](./img/reserved-volume.png) +![Reserved Volume settings in Subscriptions](/product/accounts/reserved-volume.png) For more information on how to manage your monthly spending, check out our [Quota Management documentation](/product/accounts/quotas/). @@ -141,7 +141,7 @@ Organizations on all plans have the option to set a shared on-demand strategy. O - **Per-category:** Your on-demand budgets for categories such as errors, transactions, and replays, are set up individually so that any overages in one category won't consume the budget of another category. -![On-Demand Budgets settings in Subscriptions](./img/on-demand-budgets.png) +![On-Demand Budgets settings in Subscriptions](/product/accounts/on-demand-budgets.png) ### Changing Plans Mid-cycle diff --git a/docs/product/accounts/quotas/index.mdx b/docs/product/accounts/quotas/index.mdx index 55fbe559b7a6e..379d2a7c941b3 100644 --- a/docs/product/accounts/quotas/index.mdx +++ b/docs/product/accounts/quotas/index.mdx @@ -8,7 +8,7 @@ Data and quotas are interconnected in Sentry. When you [subscribe to Sentry](htt To see which projects are using up your quota, you can review the "Usage" tab of **Stats**. This page can be viewed by any member of your organization and can be shared by a team member with Owner or Billing-level permissions with the developers directly responsible for a given project. In addition, you can come back to this page to check if the changes you've made are having the desired effect: -![Overview of Usage Stats page](./img/usage-stats-errors.png) +![Overview of Usage Stats page](/product/accounts/quotas/usage-stats-errors.png) You can also download a project breakdown report in the "Usage History" tab of **Settings > Subscriptions** (only accessible to Owner and Billing members of your Sentry organization). diff --git a/docs/product/accounts/quotas/manage-attachments-quota.mdx b/docs/product/accounts/quotas/manage-attachments-quota.mdx index 8e16df90834f3..8fd231d44d286 100644 --- a/docs/product/accounts/quotas/manage-attachments-quota.mdx +++ b/docs/product/accounts/quotas/manage-attachments-quota.mdx @@ -19,7 +19,7 @@ This page is accessible to all members of your organization, so Owners in your S The [Usage Stats](/product/stats/#usage-stats) tab displays details about the total amount of data Sentry has received across your entire organization for up to 90 days. The page breaks down the events (by project) into three categories: _accepted_, _dropped_, or _filtered_. Only accepted attachments affect your quota: -![Overview of Usage Stats page](./img/usage-stats-attachments.png) +![Overview of Usage Stats page](/product/accounts/quotas/usage-stats-attachments.png) ### What are my busiest projects? @@ -77,7 +77,7 @@ Changes to on-demand volume typically go into effect immediately and are guarant To decrease your quota, go to **Settings > Subscription** and click "Manage Subscriptions". When you reach the "Review & Confirm" step, the date that these changes go into effect will be displayed: -![The Review & Confirm step of a subscription update.](./img/review-subscription.png) +![The Review & Confirm step of a subscription update.](/product/accounts/quotas/review-subscription.png) diff --git a/docs/product/accounts/quotas/manage-cron-monitors.mdx b/docs/product/accounts/quotas/manage-cron-monitors.mdx index 102367f3881c0..d7306bc239a7f 100644 --- a/docs/product/accounts/quotas/manage-cron-monitors.mdx +++ b/docs/product/accounts/quotas/manage-cron-monitors.mdx @@ -17,7 +17,7 @@ On-demand spend is only available on paid plans. To check your monthly on-demand budget for cron monitors, go to the **Organization Settings -> Subscription** page. From here, you can also change your budget as needed. -![On-demand budget for crons](./img/manage-crons-on-demand-budgets.png) +![On-demand budget for crons](/product/accounts/quotas/manage-crons-on-demand-budgets.png) ## Activate Additional Monitors diff --git a/docs/product/accounts/quotas/manage-event-stream-guide.mdx b/docs/product/accounts/quotas/manage-event-stream-guide.mdx index d5356ce57b3ba..20558355df874 100644 --- a/docs/product/accounts/quotas/manage-event-stream-guide.mdx +++ b/docs/product/accounts/quotas/manage-event-stream-guide.mdx @@ -23,7 +23,7 @@ This page is accessible to all members of your organization, so Owners in your S The [Usage Stats](/product/stats/#usage-stats) tab displays details about the total amount of data Sentry has received across your entire organization for up to 90 days. The page breaks down the events (by project) into three categories: _accepted_, _dropped_, or _filtered_. Only accepted events affect your quota: -![Usage Stats page showing errors](./img/usage-stats-errors.png) +![Usage Stats page showing errors](/product/accounts/quotas/usage-stats-errors.png) ### What are my busiest projects? @@ -39,11 +39,11 @@ You can only update the columns of the Results table in **Discover** if your org You can set up [a query](https://sentry.io/orgredirect/organizations/:orgslug/discover/results/?field=title&field=project&field=count%28%29&name=All+Events&query=event.type%3Aerror&sort=-count&statsPeriod=14d&yAxis=count%28%29) in **Discover** to take a more proactive approach to resolving your busiest issues. When you're building the query, search for `event.type:error` and then set the columns `issue`, `title`, `project`, and `count()`, as shown below: -![Busiest Projects](./img/manage-event-stream-02.png) +![Busiest Projects](/product/accounts/quotas/manage-event-stream-02.png) Once the changes are applied, sort the "Results" table by the "COUNT()" column to display your busiest issues: -![Busiest Issues](./img/manage-event-stream-10.png) +![Busiest Issues](/product/accounts/quotas/manage-event-stream-10.png) Once you know where your quota is being used, you can start taking the steps below to control it. @@ -109,7 +109,7 @@ Changes to on-demand volume typically go into effect immediately and are guarant To decrease your quota, go to **Settings > Subscription** and click "Manage Subscriptions". When you reach the "Review & Confirm" step, the date that these changes go into effect will be displayed: -![The Review & Confirm step of a subscription update.](./img/review-subscription.png) +![The Review & Confirm step of a subscription update.](/product/accounts/quotas/review-subscription.png) @@ -125,7 +125,7 @@ Rate limiting allows you to set the maximum volume of error events a project key In **[Project] > Settings > Client Keys (DSN)**, click "Configure", and you can create multiple DSN keys per project and assign different (or no) rate limits to each key. This will allow you to dynamically allocate keys (with varying thresholds) depending on release, environment, and so on. -![Per DSN Key rate limits](./img/manage-event-stream-11.png) +![Per DSN Key rate limits](/product/accounts/quotas/manage-event-stream-11.png) Once you've set the limit, events dropped because of rate limiting generate a 429 error code. @@ -137,14 +137,14 @@ A good way to set a project rate limit is by figuring out the expected event vol 1. Go **[Project] > Settings > Client Keys (DSN)** and open the project DSN key configuration under by clicking "Configure". 1. In the "KEY USAGE IN THE LAST 30 DAYS" graph, look for the highest point, or the maximum daily rate. In the example below, the maximum daily rate in the last month is less than 34K: - ![Calculating rate limits](./img/manage-event-stream-14-new.png) + ![Calculating rate limits](/product/accounts/quotas/manage-event-stream-14-new.png) {/**/} 1. Based on the rate, choose a **daily** maximum value or ceiling. In this example, we calculated a daily maximum of approximately 35K, which is around 1458 events an **hour**, or about 24 events a **minute**. 1. Set a daily, hourly, or minute-based rate limit. We recommend using a minute-based rate to avoid situations where a random event spike might exhaust your daily or hourly quota and leave you without event data for a long period. You should periodically go back and check the graph to see the number of events dropped due to rate limiting and, if needed, revisit your settings. -![Revisit rate limits](./img/manage-event-stream-15-new.png) +![Revisit rate limits](/product/accounts/quotas/manage-event-stream-15-new.png) ## Review Event Repetition @@ -160,11 +160,11 @@ The following rules apply for error event repetition and your quota: If there is an irrelevant, reoccurring issue that you are unable or unwilling to resolve, you can delete and discard it from the **Issue Details** page by clicking "Delete and discard future events". This will remove the issue and event data from Sentry and filter out future matching events. -![Delete and Discard](./img/manage-event-stream-06-new.png) +![Delete and Discard](/product/accounts/quotas/manage-event-stream-06-new.png) You can find a list of deleted and discarded issues in the "Discarded Issues" tab in **[Project] > Settings > Inbound Filters**. From here, you can un-discarded any of these issues to receive future events. -![List of Discarded Issues](./img/manage-event-stream-07-new.png) +![List of Discarded Issues](/product/accounts/quotas/manage-event-stream-07-new.png) Once you've identified a set of discarded issues, it might make sense to go back to your SDK configuration and add the related errors into your `beforeSend` client-side filtering. @@ -174,7 +174,7 @@ While SDK configuration requires changes to your source code and depends on your Once applied, you can track the filtered events (numbers and cause) using the graph provided at the top of the "Inbound Data Filters" page. -![Built-in Inbound Filters](./img/manage-event-stream-03.png) +![Built-in Inbound Filters](/product/accounts/quotas/manage-event-stream-03.png) Sentry provides several methods to filter all events and attachments server-side, which are applied before checking for potential rate limits. Inbound filters include: diff --git a/docs/product/accounts/quotas/manage-replay-quota.mdx b/docs/product/accounts/quotas/manage-replay-quota.mdx index a7149d1f7bc29..b46e018e752a4 100644 --- a/docs/product/accounts/quotas/manage-replay-quota.mdx +++ b/docs/product/accounts/quotas/manage-replay-quota.mdx @@ -17,7 +17,7 @@ This page is accessible to all members of your organization, so Owners in your S The Usage Stats tab displays details about the total amount of data Sentry has received across your entire organization for up to 90 days. The page breaks down the events (by project) into three categories: accepted, dropped, or filtered. Only accepted replays affect your quota: -![Usage Stats page showing replays](./img/usage-stats-replay.png) +![Usage Stats page showing replays](/product/accounts/quotas/usage-stats-replay.png) ### Which Projects Are Consuming My Quota? @@ -75,7 +75,7 @@ Changes to on-demand volume typically go into effect within minutes and are guar To decrease your quota, go to **Settings > Subscription** and click "Manage Subscriptions". When you reach the "Review & Confirm" step, the date that these changes go into effect will be displayed: -![The Review & Confirm step of a subscription update.](./img/review-subscription.png) +![The Review & Confirm step of a subscription update.](/product/accounts/quotas/review-subscription.png) diff --git a/docs/product/accounts/quotas/manage-transaction-quota.mdx b/docs/product/accounts/quotas/manage-transaction-quota.mdx index ca4642c333381..d15efd6112bef 100644 --- a/docs/product/accounts/quotas/manage-transaction-quota.mdx +++ b/docs/product/accounts/quotas/manage-transaction-quota.mdx @@ -25,7 +25,7 @@ This page is accessible to all members of your organization, so Owners in your S The [Usage Stats](/product/stats/#usage-stats) tab displays details about the total amount of data Sentry has received across your entire organization for up to 90 days. The page breaks down the events (by project) into three categories: _accepted_, _dropped_, or _filtered_. Only accepted events affect your quota: -![Usage Stats page showing transactions](./img/usage-stats-transactions.png) +![Usage Stats page showing transactions](/product/accounts/quotas/usage-stats-transactions.png) ### What are my busiest projects? @@ -41,11 +41,11 @@ You can only update the columns of the Results table in **Discover** if your org You can set up [a query]() in **Discover** to see which transactions or transactions with profiling you're receiving the most and if you want to adjust that. When you're building the query, search for `event.type:transaction` and then set the columns to `title`, `project`, and `count`, as shown below: -![Busiest Projects](./img/manage-trans-quota-01.png) +![Busiest Projects](/product/accounts/quotas/manage-trans-quota-01.png) Once the changes are applied, sort the "Results" table by the "COUNT()" column to display your busiest transactions: -![Busiest Issues](./img/manage-trans-quota-02.png) +![Busiest Issues](/product/accounts/quotas/manage-trans-quota-02.png) You can look for transactions with profiling using  `has:profile.id`. Adding a `profile.id` column to the query will give you a link to the profile. @@ -101,7 +101,7 @@ Changes to on-demand volume typically go into effect immediately and are guarant To decrease your quota, go to **Settings > Subscription** and click "Manage Subscriptions". When you reach the "Review & Confirm" step, the date that these changes go into effect will be displayed: -![The Review & Confirm step of a subscription update.](./img/review-subscription.png) +![The Review & Confirm step of a subscription update.](/product/accounts/quotas/review-subscription.png) @@ -115,7 +115,7 @@ While SDK configuration requires changes to your source code and depends on your Once applied, you can track the filtered events (numbers and cause) using the graph provided at the top of the "Inbound Filters" page. -![Built-in Inbound Filters](./img/manage-event-stream-03.png) +![Built-in Inbound Filters](/product/accounts/quotas/manage-event-stream-03.png) diff --git a/docs/product/accounts/quotas/spend-allocation.mdx b/docs/product/accounts/quotas/spend-allocation.mdx index 7cd88c4ebb89f..31ba6e61ee5e9 100644 --- a/docs/product/accounts/quotas/spend-allocation.mdx +++ b/docs/product/accounts/quotas/spend-allocation.mdx @@ -42,15 +42,15 @@ To enable spend allocation for your Org, you have to have **Manager, Billing, or 1. Go to **Settings > Spend Allocations > New Allocation**. -![Empty spend allocation page](./img/spend-allocation-empty.png) +![Empty spend allocation page](/product/accounts/quotas/spend-allocation-empty.png) 2. Select the project, the event category (errors, performance units, or attachments), and the allocation amount you'd like to set aside for that project. You can choose your allocations by volume or spend. Repeat the process for each event type you'd like to allocate to. -![Create spend allocation modal](./img/spend-allocation-creation.png) +![Create spend allocation modal](/product/accounts/quotas/spend-allocation-creation.png) The "Spend Allocations" panel shows both the consumed and the available event volume you have, broken out by event type. You can also see your spend allocation per project. You can make adjustments to your existing allocations in the current billing period if there are enough un-allocated events left to cover your request. If you've already depleted your quota for a data category, you'll need to wait until the following billing cycle to enable/adjust the allocation. -![Spend allocation page showing an existing allocation](./img/spend-allocation-populated.png) +![Spend allocation page showing an existing allocation](/product/accounts/quotas/spend-allocation-populated.png) ## Use Cases for Spend Allocation diff --git a/docs/product/accounts/quotas/spike-protection.mdx b/docs/product/accounts/quotas/spike-protection.mdx index 5c7b0d6ff7ecf..2b8031f1f085e 100644 --- a/docs/product/accounts/quotas/spike-protection.mdx +++ b/docs/product/accounts/quotas/spike-protection.mdx @@ -74,7 +74,7 @@ To ensure accuracy, your time window on the **Stats** page must be between a min To see spikes that are less than an hour long, visit Sentry's Audit Log by going to the **Settings** page and selecting "Audit Log" under the "ORGANIZATION" section. You'll be able to see spikes by filtering for spike-protection.activated, spike-protection.deactivated, spike-protection.disabled, or spike-protection.enabled in the "Select Action" dropdown. -![Spike limit threshold](./img/spike-limit-threshold.png) +![Spike limit threshold](/product/accounts/quotas/spike-limit-threshold.png) ## How the Spike Protection Algorithm Works @@ -95,10 +95,10 @@ Accepted events and dropped events are processed separately. An exponential deca ### Example In this example, the project usually ingests 100-200 events per hour. There's been a spike that's reached 50,000 events, as shown in the graph below: -![Spike zoomed out](./img/spike-protection-zoomed-out.png) +![Spike zoomed out](/product/accounts/quotas/spike-protection-zoomed-out.png) In the following graph, we can see a zoomed in perspective of the 12-hour period of the spike, along with a line indicating the spike limit as it's being recalculated over the course of the spike: -![Spike zoomed in plotted with spike limits](./img/spike-protection-zoomed-in.png) +![Spike zoomed in plotted with spike limits](/product/accounts/quotas/spike-protection-zoomed-in.png) Throughout the spike, the recalulating limit has the following effect: @@ -116,7 +116,7 @@ For this particular example: Here's an example of spike limit projections for a week, taking into account seasonality: -![Spike limit projections with seasonality](./img/spike-protection-steady-state.png) +![Spike limit projections with seasonality](/product/accounts/quotas/spike-protection-steady-state.png) These regular differences in event ingestion don't cause a spike to occur. @@ -124,6 +124,6 @@ These regular differences in event ingestion don't cause a spike to occur. There may be instances where a project routinely accepts a high volume of events in a very short period of time by design — for example projects that orchestrate cron/Airflow jobs or task runners. The screenshot below shows an example of this kind of behavior: -![A "bursty" project with intentional spikes.](./img/bursty_projects.png) +![A "bursty" project with intentional spikes.](/product/accounts/quotas/bursty_projects.png) If this is expected behavior for a given project in your organization, you may want to consider turning off spike protection in the project settings to ensure necessary events aren't dropped. diff --git a/docs/product/accounts/require-2fa.mdx b/docs/product/accounts/require-2fa.mdx index 1ed3c2eccb892..5b9d546688cbe 100644 --- a/docs/product/accounts/require-2fa.mdx +++ b/docs/product/accounts/require-2fa.mdx @@ -13,7 +13,7 @@ Sentry owner permissions are required to enforce two-factor authentication acros 1. Before you can require organization members to use 2FA, you must [enable two-factor authentication](https://sentry.io/settings/account/security/) for your own user account. 2. We recommend notifying your organization members, and asking them to setup 2FA for their accounts before requiring two-factor authentication. You can see which members are enrolled on your organization's members page. - ![](./img/require-2fa-members.png) + ![](/product/accounts/require-2fa-members.png) ## Setup Require 2FA @@ -22,7 +22,7 @@ When you require two-factor authentication, members who are not enrolled in 2FA 1. Go to **Organization Settings** >> General Settings. 2. Under Security & Privacy, toggle the **Require Two-Factor Authentication** switch. - ![](./img/require-2fa-switch.png) + ![](/product/accounts/require-2fa-switch.png) 3. Click **Confirm**. @@ -32,7 +32,7 @@ To view members who were removed from your organization for 2FA non-compliance, 1. Go to **Organization Settings** >> Audit Log. - ![](./img/require-2fa-audit-log.png) + ![](/product/accounts/require-2fa-audit-log.png) 2. You can filter for action **member.pending** to see removed organization members, and action **org.edit** to see when the require_2fa organization setting was changed. @@ -51,20 +51,20 @@ If you were removed from an organization due to 2FA non-compliance, follow these 1. Look in your inbox for an email from Sentry titled **Mandatory: Enable Two-Factor Authentication**. - ![](./img/require-2fa-email.png) + ![](/product/accounts/require-2fa-email.png) 2. Click the **Enable Two-Factor Authentication** button. 3. If you can't find the email, ask an organization Owner or Manager to go to the **Organization Settings** >> Members page and resend your invite. - ![](./img/require-2fa-resend-invite.png) + ![](/product/accounts/require-2fa-resend-invite.png) 4. After clicking through the email, you will be prompted to **Setup Two-Factor Authentication** before rejoining the organization. - ![](./img/require-2fa-rejoin.png) + ![](/product/accounts/require-2fa-rejoin.png) 5. This will take you to your **Account Settings** >> [Security](https://sentry.io/settings/account/security/) page where you need to setup at least one form of two-factor authentication. - ![](./img/require-2fa-add-auth.png) + ![](/product/accounts/require-2fa-add-auth.png) 6. Once you've enrolled in 2FA, remember to save your recovery codes in a safe place and consider adding a backup phone number. 7. Then use the left sidebar to navigate to your organization. diff --git a/docs/product/accounts/sso/azure-sso.mdx b/docs/product/accounts/sso/azure-sso.mdx index 8aa49a1b9bfc6..7caadd275d97c 100644 --- a/docs/product/accounts/sso/azure-sso.mdx +++ b/docs/product/accounts/sso/azure-sso.mdx @@ -22,11 +22,11 @@ If you change your organization slug, you'll need to make the same update in the 1. Return to the **Overview** page. In the search bar, enter `Enterprise Applications`, then navigate to it. Click "+ New application". Search for `Sentry` to create the application. - ![Sentry in Azure Gallery](./img/azure-search-sentry.png) + ![Sentry in Azure Gallery](/product/accounts/sso/azure-search-sentry.png) 1. Once the application is created, you'll be directed to **Sentry - Overview**. - ![Sentry Overview](./img/azure-sentry-overview.png) + ![Sentry Overview](/product/accounts/sso/azure-sentry-overview.png) 1. Click on "1. Assign users and groups", then "+ Add user". Add yourself and the group you've created to the Sentry app. Click "Assign". @@ -44,11 +44,11 @@ If you change your organization slug, you'll need to make the same update in the - Logout URL: `https://sentry.io/saml/sls/YOUR_ORG_SLUG/` - ![SAML Configuration](./img/azure-basic-saml-configuration.png) + ![SAML Configuration](/product/accounts/sso/azure-basic-saml-configuration.png) 1. In Section (3), labeled "SAML Signing Certificate", copy the "App Federation Metadata URL". - ![SAML Signing Certificate](./img/azure-saml-signing-certificate.png) + ![SAML Signing Certificate](/product/accounts/sso/azure-saml-signing-certificate.png) 1. Navigate to your **Org Settings > Auth** (or go to `https://sentry.io/settings/YOUR_ORG_SLUG/auth/`) and click on "Configure" for Active Directory. @@ -66,7 +66,7 @@ If you change your organization slug, you'll need to make the same update in the For more details about mappings for custom configs, see [The Role of Claims](https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims). - ![Map Identity with provider attributes](./img/azure-map-identity-provider-attributes.png) + ![Map Identity with provider attributes](/product/accounts/sso/azure-map-identity-provider-attributes.png) 1. Sentry will attempt to authenticate and link your account with Azure. After successful authentication, you'll be redirected to Sentry's SSO configuration page, where you can take the following actions: @@ -98,15 +98,15 @@ Sentry users can manage provisioning using Azure with SCIM. You'll need to have 1. Sign in to [sentry.io](https://sentry.io). Select **Settings > Auth** - ![Sentry Okta SCIM Auth Page](./img/scim-settings-auth.png) + ![Sentry Okta SCIM Auth Page](/product/accounts/sso/scim-settings-auth.png) 1. Under General Settings select "Enable SCIM", then "Save Settings" - ![Sentry Enable SCIM Instruction](./img/scim-enable-sentry.png) + ![Sentry Enable SCIM Instruction](/product/accounts/sso/scim-enable-sentry.png) - Sentry will display "SCIM Information" that contains your Auth Token and SCIM Base URL. - ![SCIM Credentials Fields](./img/scim-sentry-fields.png) + ![SCIM Credentials Fields](/product/accounts/sso/scim-sentry-fields.png) ### Azure Configuration @@ -117,7 +117,7 @@ Sentry users can manage provisioning using Azure with SCIM. You'll need to have 1. Select the existing Sentry application. 1. Select "Provisioning" from the "Manage" menu. - ![Azure Provisioning Selection](./img/azure-scim-provisioning.png) + ![Azure Provisioning Selection](/product/accounts/sso/azure-scim-provisioning.png) 1. Set "Provisioning Mode" to "Automatic". @@ -125,7 +125,7 @@ Sentry users can manage provisioning using Azure with SCIM. You'll need to have 1. Select "Test Connection" and wait for the message that confirms that the credentials are authorized to enable provisioning. - ![Azure Test SCIM Connection](./img/azure-scim-test-connection.png) + ![Azure Test SCIM Connection](/product/accounts/sso/azure-scim-test-connection.png) We recommend that you select the option to "Send an email notification when a failure occurs". diff --git a/docs/product/accounts/sso/okta-sso/img/scim-enable-sentry.png b/docs/product/accounts/sso/okta-sso/img/scim-enable-sentry.png deleted file mode 100644 index e6cdc030109b9..0000000000000 Binary files a/docs/product/accounts/sso/okta-sso/img/scim-enable-sentry.png and /dev/null differ diff --git a/docs/product/accounts/sso/okta-sso/img/scim-sentry-fields.png b/docs/product/accounts/sso/okta-sso/img/scim-sentry-fields.png deleted file mode 100644 index ce672b4e5a7f7..0000000000000 Binary files a/docs/product/accounts/sso/okta-sso/img/scim-sentry-fields.png and /dev/null differ diff --git a/docs/product/accounts/sso/okta-sso/img/scim-settings-auth.png b/docs/product/accounts/sso/okta-sso/img/scim-settings-auth.png deleted file mode 100644 index 5262d1e8a7ab1..0000000000000 Binary files a/docs/product/accounts/sso/okta-sso/img/scim-settings-auth.png and /dev/null differ diff --git a/docs/product/accounts/sso/okta-sso/index.mdx b/docs/product/accounts/sso/okta-sso/index.mdx index 42cedb71eefc0..4e52c8bd07a1e 100644 --- a/docs/product/accounts/sso/okta-sso/index.mdx +++ b/docs/product/accounts/sso/okta-sso/index.mdx @@ -18,7 +18,7 @@ If you change your organization slug, you'll need to make the same update in the 1. Search for `Sentry`, then click "Add" to be brought to the setup wizard. - ![Sentry in Okta Gallery of Integrations](./img/okta-gallery.png) + ![Sentry in Okta Gallery of Integrations](/product/accounts/sso/okta-sso/okta-gallery.png) 1. Provide the settings. Note that for "1. General Settings", you will not need to provide any special settings. For "2. Sign On Options", provide the following: @@ -30,7 +30,7 @@ If you change your organization slug, you'll need to make the same update in the - Email: `Email` - ![Configuring Sentry in Okta](./img/okta-settings-for-sentry.png) + ![Configuring Sentry in Okta](/product/accounts/sso/okta-sso/okta-settings-for-sentry.png) 1. Click "Save" to create the Sentry app. @@ -38,15 +38,15 @@ If you change your organization slug, you'll need to make the same update in the 1. Copy the "Metadata URL" in the set up instructions. - ![Okta metadata URL in setup instructions](./img/okta-setup-instructions-page.png) + ![Okta metadata URL in setup instructions](/product/accounts/sso/okta-sso/okta-setup-instructions-page.png) 1. Sign in to Sentry. Select **Settings > Auth > Configure Okta**. - ![Sentry single sign-on configuration page](./img/okta-sentry-sso-settings-page.png) + ![Sentry single sign-on configuration page](/product/accounts/sso/okta-sso/okta-sentry-sso-settings-page.png) 1. Paste the Metadata URL from Step 8, then click "Continue". - ![Sentry single sign-on configuration for Okta](./img/okta-sentry-settings-metadata-url.png) + ![Sentry single sign-on configuration for Okta](/product/accounts/sso/okta-sso/okta-sentry-settings-metadata-url.png) Sentry will attempt to authenticate and link your account with Okta. After successful authentication, you'll be redirected to Sentry's SSO configuration page, where you can: @@ -58,7 +58,7 @@ Sentry will attempt to authenticate and link your account with Okta. After succe If you make any changes, click "Save Settings" to complete your set up. -![Sentry single sign-on settings for Okta](./img/okta-sentry-settings-for-okta.png) +![Sentry single sign-on settings for Okta](/product/accounts/sso/okta-sso/okta-sentry-settings-for-okta.png) ## SCIM Integration diff --git a/docs/product/accounts/sso/okta-sso/okta-scim.mdx b/docs/product/accounts/sso/okta-sso/okta-scim.mdx index 3e1cf6ba3bf49..6eb1fc89fa6a4 100644 --- a/docs/product/accounts/sso/okta-sso/okta-scim.mdx +++ b/docs/product/accounts/sso/okta-sso/okta-scim.mdx @@ -32,23 +32,23 @@ Okta SCIM provisioning requires: - A subscription to Sentry Business Plan or higher. - Configuration of SAML SSO for Okta [as documented here](/product/accounts/sso/okta-sso/), or use the Okta sign-on tab in your Sentry Okta application to configure SAML. - **Selection of Email for the Application username format** in the Sign On application tab in Okta. - ![Okta username configuration](./img/scim-username-config.png) + ![Okta username configuration](/product/accounts/sso/okta-sso/scim-username-config.png) ### Sentry Configuration 1. Sign in to [sentry.io](https://sentry.io). Select **Settings > Auth** - ![Sentry Okta SCIM Auth Page](./img/scim-settings-auth.png) + ![Sentry Okta SCIM Auth Page](/product/accounts/sso/scim-settings-auth.png) 1. Under General Settings select "Enable SCIM", then "Save Settings" - ![Sentry Enable SCIM Instruction](./img/scim-enable-sentry.png) + ![Sentry Enable SCIM Instruction](/product/accounts/sso/scim-enable-sentry.png) Sentry will display "SCIM Information" that contains your Auth Token and SCIM Base URL. - ![SCIM Credentials Fields](./img/scim-sentry-fields.png) + ![SCIM Credentials Fields](/product/accounts/sso/scim-sentry-fields.png) ### Okta Configuration 1. Sign in to your Okta organization with your administrator account. From the admin console's sidebar, select Applications > Applications, then select the existing Sentry application. 2. Select the "Provisioning" tab, then "Configure API integration". - ![Okta configure SCIM API](./img/scim-okta-configure.png) + ![Okta configure SCIM API](/product/accounts/sso/okta-sso/scim-okta-configure.png) 3. Select "Enable API Integration", then enter the SCIM URL from the auth settings page as the Base URL field. @@ -59,10 +59,10 @@ Okta SCIM provisioning requires: 6. Select "Save" to be directed to SCIM App settings. 7. On the Provisioning page, select "To App", then "edit": - ![Okta Save SCIM Settings](./img/scim-okta-edit.png) + ![Okta Save SCIM Settings](/product/accounts/sso/okta-sso/scim-okta-edit.png) 8. Enable both "Create Users" and "Deactivate Users", then click the "Save" button. - ![Okta Create and Deactivate Users](./img/okta-user-sync.png) + ![Okta Create and Deactivate Users](/product/accounts/sso/okta-sso/okta-user-sync.png) Once these changes have been made, newly assigned users will be sent an invitation email. If a user gets un-assigned, they'll be removed from their organization in Sentry. @@ -74,7 +74,7 @@ If you use Okta to assign organization membership, you’ll be unable to make me -![Okta Provisioned User Unable to Leave](./img/okta-provisioned-unable-to-leave.png) +![Okta Provisioned User Unable to Leave](/product/accounts/sso/okta-sso/okta-provisioned-unable-to-leave.png) ### Configuring Organization-level Roles @@ -85,10 +85,10 @@ Here's how to assign an organization-level role to an Okta group: 1. Navigate to your application settings in Okta 2. Under the "Provisioning" tab, select "Go to Profile Editor" - ![Okta Provisioning Page](./img/okta-go-to-profile.png) + ![Okta Provisioning Page](/product/accounts/sso/okta-sso/okta-go-to-profile.png) 3. Select "+ Add Attribute" - ![Okta Add Attribute](./img/okta-add-attribute.png) + ![Okta Add Attribute](/product/accounts/sso/okta-sso/okta-add-attribute.png) 4. Fill out the form with the following settings (You can set whatever value you want for any setting not listed below.): @@ -99,13 +99,13 @@ Here's how to assign an organization-level role to an Okta group: - External namespace: `urn:ietf:params:scim:schemas:core:2.0:User` - Attribute type: `Group` - ![Okta Custom Attribute](./img/okta-custom-attribute-values.png) + ![Okta Custom Attribute](/product/accounts/sso/okta-sso/okta-custom-attribute-values.png) 2. Assign a group to your okta application - ![Okta Assign Group](./img/okta-assign-group.png) + ![Okta Assign Group](/product/accounts/sso/okta-sso/okta-assign-group.png) 3. In the form, enter the string for the org-level role - ![Okta Set Role](./img/okta-set-group-attribute.png) + ![Okta Set Role](/product/accounts/sso/okta-sso/okta-set-group-attribute.png) - If the `sentryOrgField` field is left blank, group members will be provisioned with the default organization-level role. This default role can be configured in Sentry, under Settings -> Organization -> Auth. Otherwise, the role must be one of the following: - Admin @@ -130,13 +130,13 @@ If you use Okta to assign organization-level roles, you’ll be unable to make m Users who've had their roles assigned via Okta will only be able to make membership changes via Okta. -![Okta Role Restricted Role Select](./img/okta-role-restricted-sentry-role-select.png) +![Okta Role Restricted Role Select](/product/accounts/sso/okta-sso/okta-role-restricted-sentry-role-select.png) ### Updating User Attributes Currently, Sentry only supports the ability to update user attributes for organization-level roles. You'll be able to edit the attribute for users assigned to your application once you've added the `sentryOrgRole` attribute to your Okta application profile. -![Okta Edit Attribute](./img/okta-edit-sentryOrgRole-attribute.png) +![Okta Edit Attribute](/product/accounts/sso/okta-sso/okta-edit-sentryOrgRole-attribute.png) The user's role in Sentry will reflect their organization role in your Auth settings. This means that if you change a user's attribute to blank, their organization-level role will be removed from Sentry. diff --git a/docs/product/accounts/sso/ping-sso.mdx b/docs/product/accounts/sso/ping-sso.mdx index 30abe1aefaae6..4e8198b9e7196 100644 --- a/docs/product/accounts/sso/ping-sso.mdx +++ b/docs/product/accounts/sso/ping-sso.mdx @@ -22,7 +22,7 @@ If you change your organization slug, you'll need to make the same update in the 1. In the sidebar, click on "Connections", then "Applications". Click on "+ Application" and for the application type, select "Web App" and "SAML". - ![Create web application for Ping](./img/ping-new-app.png) + ![Create web application for Ping](/product/accounts/sso/ping-new-app.png) 1. For section (1), labeled "Create App Profile", you can get the Sentry logo from [here](https://sentry.io/branding/). @@ -50,7 +50,7 @@ If you change your organization slug, you'll need to make the same update in the 1. Once the application is created, click on the Sentry application and navigate to "Configuration" and copy "IDP Metadata URL". This URL will be used in the subsequent step on Sentry. - ![Ping configuration for Sentry](./img/ping-configure-sentry.png) + ![Ping configuration for Sentry](/product/accounts/sso/ping-configure-sentry.png) 1. Go back to [Sentry](https://sentry.io). Navigate to **Settings > Auth** (or go to `https://sentry.io/settings/YOUR_ORG_SLUG/auth/`) and click on "Configure" for SAML2. diff --git a/docs/product/accounts/sso/saml2.mdx b/docs/product/accounts/sso/saml2.mdx index 7ea907e31bf51..453b1219681a9 100644 --- a/docs/product/accounts/sso/saml2.mdx +++ b/docs/product/accounts/sso/saml2.mdx @@ -70,13 +70,13 @@ There are three distinct methods for registering your IdP with Sentry: Metadata, This method only requires a Metadata URL provided by the IdP platform. After it has been supplied, Sentry will automatically fetch the metadata it needs. -![](./img/saml2-metadata-url.png) +![](/product/accounts/sso/saml2-metadata-url.png) ### Using Provider XML For this method to work, an administrator needs to provide the contents of the IdP’s generated metadata file. Once the contents are pasted directly into the text field, Sentry will do the rest. Please note that Sentry does not require a signing certificate. -![](./img/saml2-provider-xml.png) +![](/product/accounts/sso/saml2-provider-xml.png) Here’s an example of what the Metadata XML contents look like. @@ -103,7 +103,7 @@ Here’s an example of what the Metadata XML contents look like. This registration method is the most involved, and requires matching up the data fields from an IdP. The easiest way to accomplish this is to look for the values in a metadata file such as the one provided above. -![](./img/saml2-provider-data.png) +![](/product/accounts/sso/saml2-provider-data.png) Based on the XML file example above, the field values to plug in are as follows: @@ -123,13 +123,13 @@ Metadata field names can vary from one provider to another. For example, Microso Here, the field values of Sentry members need to be matched up with the corresponding values for members in the IdP. The basic required fields are the IdP's User ID and email address, but Sentry can also optionally pull first and last name values from there as well. -![](./img/saml2-map-attributes.png) +![](/product/accounts/sso/saml2-map-attributes.png) ## Confirm successful registration Once the SAML integration flow is complete, the related Auth page will reflect the status of a successful integration. From here, you can send reminders to any existing members who existed prior to the integration, and they will receive an email prompt to link their accounts. -![](./img/saml2-success.png) +![](/product/accounts/sso/saml2-success.png) Because Sentry uses Just-In-Time (JIT) provisioning, new members are registered with Sentry automatically during their first login attempt with SAML SSO. These accounts will have their membership types delegated based on what the default membership role is in your Organization Settings in Sentry. diff --git a/docs/product/accounts/user-settings/index.mdx b/docs/product/accounts/user-settings/index.mdx index 22be5378efe25..c51d13a30a6e2 100644 --- a/docs/product/accounts/user-settings/index.mdx +++ b/docs/product/accounts/user-settings/index.mdx @@ -38,7 +38,7 @@ Learn more in the [full Notifications documentation](/product/alerts/notificatio The email address used to log into your Sentry account is, by default, your primary email address. Add an alternative email address in the [Add Secondary Emails](https://sentry.io/settings/account/emails/) section. After verifying your secondary email, you can set it to become your primary email. -![After verifying the secondary email, you can change it to the primary email.](./img/change-primary-email.png) +![After verifying the secondary email, you can change it to the primary email.](/product/accounts/user-settings/change-primary-email.png) ## Close Account diff --git a/docs/product/alerts/alert-types.mdx b/docs/product/alerts/alert-types.mdx index 83d152bf2f4d7..b5e7e742ac542 100644 --- a/docs/product/alerts/alert-types.mdx +++ b/docs/product/alerts/alert-types.mdx @@ -15,7 +15,7 @@ Issue alerts trigger whenever a new event is received for any issue in a project In the “Alert Rules” tab, these alerts are identified by the issues icon, and by default, they are displayed at the bottom of your list of alerts. (If you have several metric alerts, this may push your issue alerts off the first page of the list.) -![Issue alert rules at the bottom of the list of alerts.](./img/issue-alert-rules.png) +![Issue alert rules at the bottom of the list of alerts.](/product/alerts/issue-alert-rules.png) In issue alerts, Sentry evaluates the configured alert conditions each time it receives a new event. Alert conditions have three parts: @@ -27,7 +27,7 @@ In issue alerts, Sentry evaluates the configured alert conditions each time it r The **Alert Details** page shows you the number of times an issue alert rule was triggered over time, grouped in one hour buckets. Clicking on the alert rule name in the "Alert Rules" tab, or on the notification you receive will take you to this page. The page also includes the alert rule conditions, the current status of the alert (Warning, Critical, or Resolved), and alert details such as when it was created, when it was last modified, and the team that owns the alert. -![Alert details illustrates a graph showing the alerts triggered over time.](./img/issue-alert-status-page-example.png) +![Alert details illustrates a graph showing the alerts triggered over time.](/product/alerts/issue-alert-status-page-example.png) The **Alert Details** page also includes a list of issues that triggered the alert. You can click on any of the issues in the list to go to that issue's details page for more information. @@ -109,6 +109,6 @@ Application performance alerts can help you pinpoint and identify specific probl The **Alert Details** page shows you the history of a metric alert rule for the last 24 hours by default, though can modify the time period using the "Display" dropdown. When an alert is triggered, clicking the notification you receive takes you to this page, which displays the period when the alert was active. The page also includes details such as the alert rule conditions, the current status of the alert, and a summary of how much time the alert spent in each state (Critical, Warning, or Resolved). -![Alert details illustrates a graph showing the performance of a transaction over time.](./img/alert-details-example.png) +![Alert details illustrates a graph showing the performance of a transaction over time.](/product/alerts/alert-details-example.png) The **Alert Details** page also includes a list of suspect issues or transactions related to the metric, to help pinpoint the root problem more quickly. You can see what might have caused the alert to be triggered, and then open the metric in **[Discover](/product/discover-queries)** to find more information. diff --git a/docs/product/alerts/create-alerts/index.mdx b/docs/product/alerts/create-alerts/index.mdx index 78f0856b77aae..67bb434436b9e 100644 --- a/docs/product/alerts/create-alerts/index.mdx +++ b/docs/product/alerts/create-alerts/index.mdx @@ -14,7 +14,7 @@ To create alerts: 1. Navigate to **Alerts** and click "Create Alert Rule". 1. Choose what you want to be alerted about. Selecting “Issues” creates an [issue alert](/product/alerts/alert-types/#issue-alerts), while selecting any other option creates a [metric alert](/product/alerts/alert-types/#metric-alerts). - ![Choice between alerts about Errors, Sessions, Performance, or a Custom Metric](./img/create-new-alert-rule.png) + ![Choice between alerts about Errors, Sessions, Performance, or a Custom Metric](/product/alerts/create-alerts/create-new-alert-rule.png) 1. Click "Set Conditions". 1. On the alert configuration page, set the conditions of the alert: @@ -25,7 +25,7 @@ To create alerts: You can also create an alert by duplicating an existing issue or metric alert rule. To do so, navigate to **Alerts** and click "Duplicate" in the context menu (under "Actions") on the row with the alert rule you want to copy: -![Expanded alert list row context menu](./img/alert-list-row-menu.png) +![Expanded alert list row context menu](/product/alerts/create-alerts/alert-list-row-menu.png) ## Alert Limits diff --git a/docs/product/alerts/create-alerts/issue-alert-config.mdx b/docs/product/alerts/create-alerts/issue-alert-config.mdx index fc99f204d7e17..8695df49ebf90 100644 --- a/docs/product/alerts/create-alerts/issue-alert-config.mdx +++ b/docs/product/alerts/create-alerts/issue-alert-config.mdx @@ -39,7 +39,7 @@ When you select the number of events or users affected by an issue as a trigger, For example, an alert can be triggered when an issue is affecting 10% more unique users in an hour compared to a week ago. Another example would be when the number of events in an issue is 40% higher this week than it was 30 days ago. -![The conditions that can be set to alert on an issue.](./img/issue-change-alert.png) +![The conditions that can be set to alert on an issue.](/product/alerts/create-alerts/issue-change-alert.png) ### Percent-Based Alerts @@ -87,7 +87,7 @@ Suggested Assignees include people or teams currently assigned the issue, issue If no suggested assignees are found, the notification will be sent to the teams or members specified in the fallback notification setting, as shown below: -![Suggested Assignees with notify all project members selected.](./img/suggested_assignee_all_members.png) +![Suggested Assignees with notify all project members selected.](/product/alerts/create-alerts/suggested_assignee_all_members.png) The following members will be notified based on the option selected and their notification settings: @@ -141,4 +141,4 @@ In **[Project] > Settings > Alerts**, you can configure alert email subject temp The digests feature only works for issue alert emails (not notifications sent through integrations), and unlike the [action interval](#action-interval-rate-limit), limits the total number of alert emails sent for the project. This project-level setting allows you to control the minimum and maximum delivery intervals for alerts. -![A sliding adjustment scale for the frequency of alert emails.](./img/alert-digest.png) +![A sliding adjustment scale for the frequency of alert emails.](/product/alerts/create-alerts/alert-digest.png) diff --git a/docs/product/alerts/create-alerts/metric-alert-config.mdx b/docs/product/alerts/create-alerts/metric-alert-config.mdx index e59654cc1f5fa..8a1154dfb8254 100644 --- a/docs/product/alerts/create-alerts/metric-alert-config.mdx +++ b/docs/product/alerts/create-alerts/metric-alert-config.mdx @@ -100,7 +100,7 @@ This feature is only available to organizations with a Business or Enterprise pl A wider variety of fields or tags are available in addition to the basic properties mentioned above, so you can create more advanced filtering conditions. However, Sentry only starts collecting these metrics after the alert is saved. If such a filter is used, Sentry provides an estimate of the metric for the previous period during the alert's creation. -![Advanced filters for transactions](./img/alerts-advanced-filters.png) +![Advanced filters for transactions](/product/alerts/create-alerts/alerts-advanced-filters.png) #### Invalid Filters @@ -121,7 +121,7 @@ By default, metric alerts use a fixed threshold. Change alerts, or alerts that use a percent change threshold, are useful when you want to know if a metric is significantly different from normal. To do this, you’ll need to pick a metric interval (when you're selecting your metric type) and a time against which to compare. One example would be comparing the number of errors in the last hour to the same time period one week ago. If errors are 25% higher in the last hour than they were in the same period a week ago, then an alert will trigger. -![When the percent change option is selected.](./img/percent-change.png) +![When the percent change option is selected.](/product/alerts/create-alerts/percent-change.png) ### Set Threshold to Trigger Alert diff --git a/docs/product/alerts/create-alerts/routing-alerts.mdx b/docs/product/alerts/create-alerts/routing-alerts.mdx index 7f9448a179b6c..61ebb197c05c8 100644 --- a/docs/product/alerts/create-alerts/routing-alerts.mdx +++ b/docs/product/alerts/create-alerts/routing-alerts.mdx @@ -16,7 +16,7 @@ A Sentry organization owner, manager, or admin can install and configure the [Sl This alert action allows you to route alert notifications to selected channels (using the `#` prefix), or to a specific user in a direct message (using the `@` prefix) in your Slack workspaces. -![Slack notification](./img/alerts_notifications_15.png) +![Slack notification](/product/alerts/create-alerts/alerts_notifications_15.png) Then, once you receive a Slack notification, you can use the "Resolve", "Archive", or "Assign" buttons to update the issue in [sentry.io](https://sentry.io) directly from Slack. @@ -26,7 +26,7 @@ A Sentry organization owner, manager, or admin can install and configure the [Di This alert action will allow you to route alert notifications to selected channels in your Discord server. -![Discord notification](./img/alerts-notifications-discord.png) +![Discord notification](/product/alerts/create-alerts/alerts-notifications-discord.png) You'll be able to "Resolve", "Archive", or "Assign" Sentry issues directly from your Discord notifications. diff --git a/docs/product/alerts/index.mdx b/docs/product/alerts/index.mdx index dd90592ccfd28..d66dd664051f0 100644 --- a/docs/product/alerts/index.mdx +++ b/docs/product/alerts/index.mdx @@ -8,7 +8,7 @@ Alerts provide real-time visibility into problems with your code and the impact From the **Alerts** page in [sentry.io](https://sentry.io), you can create new alert rules and manage existing ones. The “Alert Rules” tab displays your existing alert rules, along with their current status, project, team, and creation date. By default, the list is filtered so that only alerts associated with the teams you're a member of, as well as ones that aren't associated with any team, are displayed. You can change this using the filter button. -![A list of alert rules, along with their status, project, team, and creation date.](./img/alert-listing.png) +![A list of alert rules, along with their status, project, team, and creation date.](/product/alerts/alert-listing.png) The **Alerts** page also displays a “History” tab where you can find a list of metric alerts with information like when it was triggered and how long it was active. diff --git a/docs/product/alerts/notifications/index.mdx b/docs/product/alerts/notifications/index.mdx index 8d8fa134dd3f6..24f0d16ebcc7e 100644 --- a/docs/product/alerts/notifications/index.mdx +++ b/docs/product/alerts/notifications/index.mdx @@ -45,7 +45,7 @@ You'll be unsubscribed from an issue if you: Sentry sends deploy notifications to users who have committed to the release that was deployed. Learn more in the [deploy documentation](/product/releases/setup/#notify-sentry). -![An example of an email describing deployed features](./img/deploy-emails.png) +![An example of an email describing deployed features](/product/alerts/notifications/deploy-emails.png) ## Quota Notifications @@ -60,4 +60,4 @@ You cannot change or disable these notifications. Learn more in the [full Quotas Sentry sends weekly reports every Monday, by email. Reports contain a summary of your organization's Sentry activity over the last week. -![Weekly Report email sample.](./img/us-ereport.png) +![Weekly Report email sample.](/product/alerts/notifications/us-ereport.png) diff --git a/docs/product/alerts/notifications/notification-settings.mdx b/docs/product/alerts/notifications/notification-settings.mdx index aa7aa5e9b42ff..f5abc7a3b7a89 100644 --- a/docs/product/alerts/notifications/notification-settings.mdx +++ b/docs/product/alerts/notifications/notification-settings.mdx @@ -6,11 +6,11 @@ description: "Learn how to manage your personal notifications settings." You can update your personal notification settings for things like [workflow](/product/alerts/notifications/), deploy, issue alert, and [spike protection](/product/accounts/quotas/spike-protection/) by turning them on or off, specifying how you'd like to be notified (via email, Slack, or both), and more. Users who **aren't** on an [Enterprise](https://sentry.io/pricing/) plan can also configure their quota notifications. -![Issue alert notification page](./img/issue-alert-notification.png) +![Issue alert notification page](/product/alerts/notifications/issue-alert-notification.png) To make updates, go to your [user settings](https://sentry.io/settings/account/notifications/), select "Notifications", then click on the notification type you want to update. -![Issue alert notification detail page](./img/issue-alert-notification-detail.png) +![Issue alert notification detail page](/product/alerts/notifications/issue-alert-notification-detail.png) ## How to Subscribe to an Issue diff --git a/docs/product/codecov/how-it-works.mdx b/docs/product/codecov/how-it-works.mdx index 53709e9705a6a..ae85d49fefa55 100644 --- a/docs/product/codecov/how-it-works.mdx +++ b/docs/product/codecov/how-it-works.mdx @@ -5,4 +5,4 @@ sidebar_order: 0 Sentry uses code-mappings to determine the repository and default branch for the stack trace frame to query Codecov's coverage report endpoint. The endpoint gives Sentry the coverage state for each line so that it can be applied to the stack trace in the UI. This makes it possible for users to see the untested code that's causing errors, including whether it's partially or fully covered directly in the stack trace. This helps you avoid similar errors in the future. -![Codecov in Sentry](./img/codecov-read-timeout.png) +![Codecov in Sentry](/product/codecov/codecov-read-timeout.png) diff --git a/docs/product/codecov/set-up.mdx b/docs/product/codecov/set-up.mdx index c62c779a4802b..775f6b02ea903 100644 --- a/docs/product/codecov/set-up.mdx +++ b/docs/product/codecov/set-up.mdx @@ -24,7 +24,7 @@ There are a few prerequisites that have to be fulfilled in order for Codecov to Once the prerequisites have been met, you can enable Codecov by going to the **Settings** page in Sentry and toggling “Enable Code Coverage Insights” to on. -![Codecov in Org Settings](./img/codecov-setup-in-ui.png) +![Codecov in Org Settings](/product/codecov/codecov-setup-in-ui.png) Sentry automatically checks to see if you have your GitHub Org in Codecov diff --git a/docs/product/crons/getting-started/http/index.mdx b/docs/product/crons/getting-started/http/index.mdx index e94af1dcf80ff..7f4116e7e4209 100644 --- a/docs/product/crons/getting-started/http/index.mdx +++ b/docs/product/crons/getting-started/http/index.mdx @@ -247,6 +247,6 @@ To receive alerts about these events: Example: `The event's tags match monitor.slug equals my-monitor-slug-here` -![Cron completed alert filter](/img/crons-alerts-example.png) +![Cron completed alert filter](/product/crons/getting-started/http/crons-alerts-example.png) Learn more in [Issue Alert Configuration](/product/alerts/create-alerts/issue-alert-config/). diff --git a/docs/product/dashboards/custom-dashboards/index.mdx b/docs/product/dashboards/custom-dashboards/index.mdx index afa1ee1ad4334..8c7fe8936a229 100644 --- a/docs/product/dashboards/custom-dashboards/index.mdx +++ b/docs/product/dashboards/custom-dashboards/index.mdx @@ -17,7 +17,7 @@ When you have either a Business or Trial Plan, navigating to **Dashboards** take - Duplicate a dashboard - Delete a dashboard -![Manage mode.](./img/dashboard-management.png) +![Manage mode.](/product/dashboards/custom-dashboards/dashboard-management.png) ### Create Dashboards @@ -28,7 +28,7 @@ Clicking "Create Dashboard" takes you to a new dashboard where you can immediate - Rearrange existing widgets - Resize existing widgets -![Edit mode.](./img/dashboard-edit.png) +![Edit mode.](/product/dashboards/custom-dashboards/dashboard-edit.png) ### Create Dashboards From Templates diff --git a/docs/product/dashboards/index.mdx b/docs/product/dashboards/index.mdx index 9d6f9103dedd3..1931675ebbab6 100644 --- a/docs/product/dashboards/index.mdx +++ b/docs/product/dashboards/index.mdx @@ -8,7 +8,7 @@ description: "Sentry's Dashboards provide a single view of your application's he 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 [Discover queries](/product/discover-queries/). -![Widgets visualizing events, errors by country, affected users, and handled vs unhandled issues.](./img/dashboard-default.png) +![Widgets visualizing events, errors by country, affected users, and handled vs unhandled issues.](/product/dashboards/dashboard-default.png) All widgets in the same view reflect the date range indicated in date time range filter and update synchronously if you update that date range. You can also zoom in on any time series visualizations you may want to investigate, and all of the widgets reflect the time period that you’ve zoomed in on. @@ -16,7 +16,7 @@ All widgets in the same view reflect the date range indicated in date time range If you’d like to edit the default dashboard or build out multiple ones, each with their own set of unique widgets, you may want to consider our [Custom Dashboards](/product/dashboards/custom-dashboards/) feature which enables you to create more robust views such as the one below. -![Widgets visualizing key page performance, Web Vitals, and user misery.](./img/dashboard-custom.png) +![Widgets visualizing key page performance, Web Vitals, and user misery.](/product/dashboards/dashboard-custom.png) ## Open Dashboard Widgets in Discover diff --git a/docs/product/dashboards/widget-builder/index.mdx b/docs/product/dashboards/widget-builder/index.mdx index 733dc409577f3..55e5d88e1d527 100644 --- a/docs/product/dashboards/widget-builder/index.mdx +++ b/docs/product/dashboards/widget-builder/index.mdx @@ -8,7 +8,7 @@ description: "Learn how to create widgets for your dashboards or edit existing o When adding a widget or editing an existing one, you will be taken to a new page where you can see the dashboard widget builder: -![Widget Builder overview.](./img/widget-builder-overview.png) +![Widget Builder overview.](/product/dashboards/widget-builder/widget-builder-overview.png) The widget builder has several configuration options that you can use to shape data and add information to your dashboard. These options are presented as steps in the widget builder, but you don't have to do them in the order they're presented in. @@ -30,7 +30,7 @@ In this step, you can choose from four different visualization types: Area, bar, and line chart visualizations allow you to plot one or more aggregate functions as a time series. -![Time-series visualizations.](./img/widget-builder-time-series-visualizations.png) +![Time-series visualizations.](/product/dashboards/widget-builder/widget-builder-time-series-visualizations.png) Each chart type allows you to solve different problems: @@ -86,7 +86,7 @@ Next to each column and equation, you have the option to set an alias that will If two or more columns are added, you can change the order in which they're displayed in the table by clicking and dragging them: -![Drag and drop column.](./img/widget-builder-drag-and-drop-column.png) +![Drag and drop column.](/product/dashboards/widget-builder/widget-builder-drag-and-drop-column.png) ## Choose What to Plot in the Y-axis @@ -100,7 +100,7 @@ Use this field to filter your results by the searchable properties of your [data On [time-series visualizations](/product/dashboards/widget-builder/#area-chart--bar-chart--line-chart) you can add up to three queries to filter your results, each with their own search conditions, to compare results. Each query will generate a new series in your chart for each y-axis. To make it easier to differentiate between them in the legend and tooltip, you can add a legend alias that will be added as a prefix to the labels, as in the example below: -![Filter your results.](./img/widget-builder-filter-your-results-example.png) +![Filter your results.](/product/dashboards/widget-builder/widget-builder-filter-your-results-example.png) ## Group Your Results @@ -108,7 +108,7 @@ The option to group results is only available for [time-series visualizations](/ If two or more groups are added, a draggable element will be displayed that you can use to sort the fields, but the sort does not impact how your data is displayed in the visualization: -![Drag and drop group by.](./img/widget-builder-drag-and-drop-group-by.png) +![Drag and drop group by.](/product/dashboards/widget-builder/widget-builder-drag-and-drop-group-by.png) ## Sort By a Column @@ -124,11 +124,11 @@ The option to sort by a y-axis is only available if you've applied a grouping to If you select “Custom Equation”, an extra field appears where you can enter an equation of your choice that will be applied to the query: -![Custom equation field.](./img/widget-builder-custom-equation-field.png) +![Custom equation field.](/product/dashboards/widget-builder/widget-builder-custom-equation-field.png) ## Set Thresholds The option for setting thresholds is only available for [big number visualizations](/product/dashboards/widget-builder/#big-number). Thresholds help identify problematic widgets with colored indicators. Hovering over the colored indicators at the dashboard level displays the thresholds associated with a widget. Units can be attached to thresholds for duration or rate metric types. An example metric with units would be “p95 of all transactions”. -![Set Thresholds Step](./img/widget-builder-thresholds.png) -![Widget Coloured Indicator Hover](./img/widget-builder-thresholds-hover.png) +![Set Thresholds Step](/product/dashboards/widget-builder/widget-builder-thresholds.png) +![Widget Coloured Indicator Hover](/product/dashboards/widget-builder/widget-builder-thresholds-hover.png) diff --git a/docs/product/dashboards/widget-library/index.mdx b/docs/product/dashboards/widget-library/index.mdx index e37192f181380..56f6e912c0e40 100644 --- a/docs/product/dashboards/widget-library/index.mdx +++ b/docs/product/dashboards/widget-library/index.mdx @@ -64,7 +64,7 @@ Finally, add a third query for for the frustrating transaction duration: The chart now shows cumulative counts at different response time thresholds. -![Response Thresholds Widget.](./img/widget-library-response-thresholds-widget.png) +![Response Thresholds Widget.](/product/dashboards/widget-library/widget-library-response-thresholds-widget.png) ### My top issues diff --git a/docs/product/data-management-settings/event-grouping/index.mdx b/docs/product/data-management-settings/event-grouping/index.mdx index f6f7dd7f68b7e..b4331af092e68 100644 --- a/docs/product/data-management-settings/event-grouping/index.mdx +++ b/docs/product/data-management-settings/event-grouping/index.mdx @@ -26,7 +26,7 @@ Some kinds of errors, like [chunk load errors](https://sentry.io/answers/chunk-l Issues grouped by Sentry's built-in fingerprinting rules will list "Sentry Defined Fingerprint" in the "Event Grouping Information" at the bottom of the **Issue Details** page. -![event grouping information for a sentry defined fingerprint](./sentry-defined-fingerprint.png) +![event grouping information for a sentry defined fingerprint](sentry-defined-fingerprint.png) Built-in fingerprinting rules work the same as custom fingerprinting rules and are applied by default. If an user defined custom fingerprinting rule matches an event, the custom rule will always take precedence over the built-in ones. diff --git a/docs/product/data-management-settings/event-grouping/merging-issues/index.mdx b/docs/product/data-management-settings/event-grouping/merging-issues/index.mdx index 181a337584fb1..c1c404e2a7406 100644 --- a/docs/product/data-management-settings/event-grouping/merging-issues/index.mdx +++ b/docs/product/data-management-settings/event-grouping/merging-issues/index.mdx @@ -10,13 +10,13 @@ description: "Learn about merging similar issues that aren't automatically group If you have similar-looking issues that have not been grouped together automatically and you want to reduce noise, you can do so by merging them. In this example, before merge, there are two issues that are very similar, but have not been grouped together. One issue has 39 events in the past 24 hours, and the other has 76: -![Before merge.](./img/before-merge.png) +![Before merge.](/product/data-management-settings/event-grouping/merging-issues/before-merge.png) After the two issues are merged into one, the event count of 115 on that one issue reflects that they've been grouped together: -![After merge.](./img/after-merge.png) +![After merge.](/product/data-management-settings/event-grouping/merging-issues/after-merge.png) You can also do this from inside a single issue. Click the "Similar Issues" tab, select all of the issues that you want to merge, and click "Merge": -![Similar Issues](./img/similar-issues.png) +![Similar Issues](/product/data-management-settings/event-grouping/merging-issues/similar-issues.png) If you'd like to unmerge issues, go to the **Issue Details** page and click the “Merged Issues” tab. You will see the fingerprints that have been merged into that issue. Select the appropriate checkbox(es) and click “Unmerge”. diff --git a/docs/product/data-management-settings/filtering/index.mdx b/docs/product/data-management-settings/filtering/index.mdx index d9cb559535c29..8372a040a4c79 100644 --- a/docs/product/data-management-settings/filtering/index.mdx +++ b/docs/product/data-management-settings/filtering/index.mdx @@ -70,7 +70,7 @@ Filters do not apply to [sessions](/product/releases/health/#session). Error mes Once applied, you can track the filtered events (numbers and cause) using the graph provided at the top of the Inbound Data Filters view. -![](./img/builtin-inbound-filters.png) +![](/product/data-management-settings/filtering/builtin-inbound-filters.png) ## How Custom Filtering Works diff --git a/docs/product/discover-queries/index.mdx b/docs/product/discover-queries/index.mdx index 8674c99a9e76d..1f0be3424456b 100644 --- a/docs/product/discover-queries/index.mdx +++ b/docs/product/discover-queries/index.mdx @@ -15,7 +15,7 @@ upon and enriching your error data. You can Discover homepage displays the query builder where you can immediately begin creating a new query. By default, the page shows the pre-built "All Events" query, but you can customize the homepage and [set the custom version as your default](#set-as-default). To navigate back to the query management page, where you can find [pre-built](#pre-built-queries) and [saved](#saved-queries) queries, click the "Saved Queries" button. @@ -98,13 +98,13 @@ To navigate to the query management page, where you can find pre-built and saved ## Query Results -![Page displaying a graph of error spikes by URL, the event tag summary, and results of the query.](./img/discover-results.png) +![Page displaying a graph of error spikes by URL, the event tag summary, and results of the query.](/product/discover-queries/discover-results.png) To view query results, click on any query card. You'll find a graph, table, and toggleable tag summary (or facet map). The search bar at the top enables you to see the search conditions entered. The table reflects the events with sortable columns. Each table cell has a dynamic context menu that allows you to continue exploring your data by automatically updating the search bar or the table columns, according to your selection. Actions like, adding or excluding values from the filter, opening a selected release, or viewing the underlying stack of issues: -![Context menu](./img/013.png) +![Context menu](/product/discover-queries/013.png) If the first column shows an icon (as seen above), it means the events have been stacked. Click on the icon to view the full list of events. Each event will have an event ID you can click on for more details. Hovering over fields in the "Issue", "Release", and "Event ID" columns displays additional information like issue statuses, release authors, and stack traces for errors. @@ -112,7 +112,7 @@ For more about how to build a query, go to [the Query Builder](/product/discover ## Event Details -![Event detail page displaying a graph with spikes, the event details, and different metrics for tags.](./img/discover-event-details.png) +![Event detail page displaying a graph with spikes, the event details, and different metrics for tags.](/product/discover-queries/discover-event-details.png) Navigate to the Event Details page from **Discover > [Saved Query] > Event Detail**. You'll find all the relevant details about a single event. For every event, you will see the ID, timestamp, and link to view the normalized JSON payload that Sentry received. diff --git a/docs/product/discover-queries/query-builder.mdx b/docs/product/discover-queries/query-builder.mdx index a15e82991b0b5..1bab4e2727cae 100644 --- a/docs/product/discover-queries/query-builder.mdx +++ b/docs/product/discover-queries/query-builder.mdx @@ -53,7 +53,7 @@ Every event has a list of tag values. The tag summary (or facet map) is a visual Click on any of these sections to further refine your search. For example, clicking on a section that represents Chrome in a browser bar will automatically update the tag summary and then add Chrome to the search conditions. -![Facet map for transaction and handled tags. Map looks like a bar with gradient colors.](./img/discover-facet-map.png) +![Facet map for transaction and handled tags. Map looks like a bar with gradient colors.](/product/discover-queries/discover-facet-map.png) @@ -133,7 +133,7 @@ Each function will ask you to assign a parameter. Some are required while others Each cell in the table will have an ellipsis appear on hover. This will open a context menu with additional filtering capabilities depending on the value type. For example, you can selectively target a transaction to the search conditions bar by clicking on "Add to filter". -![Menu showing additional options to add to filter or exclude from filter](./img/discover-table-cell.png) +![Menu showing additional options to add to filter or exclude from filter](/product/discover-queries/discover-table-cell.png) ### Adding Equations diff --git a/docs/product/discover-queries/query-builder/query-equations.mdx b/docs/product/discover-queries/query-builder/query-equations.mdx index 51e650f83e59f..c8fb248a447ee 100644 --- a/docs/product/discover-queries/query-builder/query-equations.mdx +++ b/docs/product/discover-queries/query-builder/query-equations.mdx @@ -22,7 +22,7 @@ The equation becomes: The result of the equation is then displayed in the updated table as shown in the recording below: -![Adding an equation in discover](./img/add_equation.gif) +![Adding an equation in discover](/product/discover-queries/query-builder/add_equation.gif) These equations can help you calculate things like: diff --git a/docs/product/discover-queries/uncover-trends.mdx b/docs/product/discover-queries/uncover-trends.mdx index b1e498b399a02..33b7e8c30c50f 100644 --- a/docs/product/discover-queries/uncover-trends.mdx +++ b/docs/product/discover-queries/uncover-trends.mdx @@ -26,17 +26,17 @@ Sentry notifies you in real-time when your application breaks, and then provides 3. Sentry monitors different types of events for errors and performance. To query issues, filter by `event.type:error` in the search bar. - ![Filter by Error type](./img/004.png) + ![Filter by Error type](/product/discover-queries/004.png) 4. Edit the "Results" table columns to show the number of events [`count()`], impacted users [`count_unique(user)`], and unique issues [`count_unique(issue)`] per project. - ![Issues per project](./img/001.png) + ![Issues per project](/product/discover-queries/001.png) 5. With these columns set, you might want to look for the project with the most issues. Click on the `COUNT_UNIQUE(ISSUE)` column header to order the line items accordingly. 6. Hover your cursor over the top project line item, click on the actions icon that displays, and select "Add to filter". This will narrow your results even more so that you can continue looking into the issues of that specific project. - ![Project with most issues](./img/002.png) + ![Project with most issues](/product/discover-queries/002.png) 7. Now let's see what those issues are. Change the table columns to display: @@ -47,7 +47,7 @@ Sentry notifies you in real-time when your application breaks, and then provides 8. On each line item/issue, you can click on the issue name to open the **Issue Details** page and triage the issue. You can also click on the Open Group icon to continue querying through the events stack in the context of a specific issue. - ![Actions per line item](./img/003.png) + ![Actions per line item](/product/discover-queries/003.png) ## Discover Through Errors @@ -60,12 +60,12 @@ Create a report looking into all the errors occurring in the URL endpoints acros - Search condition: `event.type:error has:url` - Table columns: `url`, `platform.name`, `count()` -![Errors by URL](./img/005.png) +![Errors by URL](/product/discover-queries/005.png) - Look into any one of the URL endpoints by clicking on "Add to filter" and changing the table columns. - Alternatively, filter URL patterns using wild cards: -![Wildcard filter](./img/009.png) +![Wildcard filter](/product/discover-queries/009.png) ### Unhandled Errors @@ -74,14 +74,14 @@ Whether your code is running on mobile, in browser, or on a server, an unhandled - Search condition: `event.type:error handled:no level:fatal` - Table columns: `mechanism`, `platform.name`, `count()` - ![Crashes](./img/006.png) + ![Crashes](/product/discover-queries/006.png) To look deeper into one of the crash types: - Select one of the line item values and add it to the filter. - Modify the table columns to show the crash `message` and `count()`. - ![Native Crashes](./img/007.png) + ![Native Crashes](/product/discover-queries/007.png) ### Files With Most Errors @@ -90,13 +90,13 @@ To find out which files in your codebase are generating the most errors, run the - Search condition: `event.type:error has:stack.filename` - Table columns: `stack.filename`, `count()`, `count_unique(issue)` -![By File Names](./img/010.png) +![By File Names](/product/discover-queries/010.png) Change your "Display" selection to compare the current period to the previous one. You can continue exploring a specific filename by adding it to the filter and changing the table columns to display the major error culprits in that file: -![Culprits](./img/008.png) +![Culprits](/product/discover-queries/008.png) ### Errors per Release @@ -105,7 +105,7 @@ To find out how the health of a specific project is improving (or not) over time - Search condition: `event.type:error` - Table columns: `release`, `count()`, `count_unique(issue)` -![Issues per release](./img/012.png) +![Issues per release](/product/discover-queries/012.png) From here you can add a release as a filter and change the columns to `count()` and `title` to see similar errors. Then you can click the "Open Group" icon to drill down to individual events. You can also open the release in **Releases** from the "Results" table. @@ -113,7 +113,7 @@ From here you can add a release as a filter and change the columns to `count()` The `timestamp.to_hour` and `timestamp.to_day` fields round down the timestamp to the last hour or day respectively. For example, an event with a `timestamp` value of Mar 12, 2021 2:26:50 PM UTC will have a `timestamp.to_hour` value of Mar 12, 2021 2:00:00 PM UTC and `timestamp.to_day` value of Mar 12, 2021 12:00:00 AM UTC. This allows you to group events. For example, you can show hourly hit counts for errors hit at least twice per hour: -![Hourly counts for errors hit at least twice](./img/014.png) +![Hourly counts for errors hit at least twice](/product/discover-queries/014.png) All timestamps are displayed in your preferred timezone based on your user settings in **User Settings > Account > Account Details**. diff --git a/docs/product/integrations/cloud-monitoring/aws-lambda/how-it-works.mdx b/docs/product/integrations/cloud-monitoring/aws-lambda/how-it-works.mdx index 127fedb3de61d..cb54d8ce23573 100644 --- a/docs/product/integrations/cloud-monitoring/aws-lambda/how-it-works.mdx +++ b/docs/product/integrations/cloud-monitoring/aws-lambda/how-it-works.mdx @@ -9,7 +9,7 @@ When Sentry is added to a Lambda function, the following modifications are made - The layer for Sentry is added to your Lambdas. Any existing layers are honored and the Sentry layer is appended to the end. - ![](./img/layer.png) + ![](/product/integrations/cloud-monitoring/aws-lambda/layer.png) - Sentry adds the following environment variables @@ -17,7 +17,7 @@ When Sentry is added to a Lambda function, the following modifications are made - `SENTRY_DSN`: This is set to the [DSN](/product/sentry-basics/dsn-explainer/) of your project - `SENTRY_TRACES_SAMPLE_RATE`: This sets the [sampling rate](/platforms/node/configuration/sampling/#sampling-transaction-events) for transactions. You can manually edit your environment variables if you want a different sampling rate. - ![](./img/env_variables.png) + ![](/product/integrations/cloud-monitoring/aws-lambda/env_variables.png) ## Python @@ -25,11 +25,11 @@ When Sentry is added to a Lambda function, the following modifications are made - The layer for Sentry is added to your Lambdas. Any existing layers are honored and the Sentry layer is appended to the end. - ![](./img/layer_python.png) + ![](/product/integrations/cloud-monitoring/aws-lambda/layer_python.png) And your Runtime handler will point to Sentry's handler that will initialize the SDK for you, and then call your Runtime handler to invoke your function - ![](./img/handler_python.png) + ![](/product/integrations/cloud-monitoring/aws-lambda/handler_python.png) - Sentry adds the following environment variables @@ -37,4 +37,4 @@ When Sentry is added to a Lambda function, the following modifications are made - `SENTRY_DSN`: This is set to the [DSN](/product/sentry-basics/dsn-explainer/) of your project - `SENTRY_TRACES_SAMPLE_RATE`: This sets the [sampling rate](/platforms/python/configuration/sampling/#sampling-transaction-events) for transactions. You can manually edit your environment variables if you want a different sampling rate. - ![](./img/env_variables_python.png) + ![](/product/integrations/cloud-monitoring/aws-lambda/env_variables_python.png) diff --git a/docs/product/integrations/cloud-monitoring/aws-lambda/index.mdx b/docs/product/integrations/cloud-monitoring/aws-lambda/index.mdx index 20a7b551d7f16..f100882cc0356 100644 --- a/docs/product/integrations/cloud-monitoring/aws-lambda/index.mdx +++ b/docs/product/integrations/cloud-monitoring/aws-lambda/index.mdx @@ -22,31 +22,31 @@ Sentry owner, manager, or admin permissions are required to install this integra 1. Navigate to **Settings > Integrations > AWS Lambda**. - ![](./img/directory.png) + ![](/product/integrations/cloud-monitoring/aws-lambda/directory.png) 1. Press **Add Installation** to open the installation modal. - ![](./img/integration_detail.png) + ![](/product/integrations/cloud-monitoring/aws-lambda/integration_detail.png) 1. Select the project for your Lambda integration. **Note:** This project cannot be changed after installation is complete. If you only have a single project, you'll skip this step. - ![](./img/project.png) + ![](/product/integrations/cloud-monitoring/aws-lambda/project.png) 1. Click **Go To AWS**. - ![](./img/aws_account_1.png) + ![](/product/integrations/cloud-monitoring/aws-lambda/aws_account_1.png) 1. Scroll to the bottom of the Create Stack page, check the box, then press **Create Stack** to create a CloudFormation stack in your current region. This stack allows Sentry to automatically instrument your Lambda functions. - ![](./img/cloudformation-create-stack.png) + ![](/product/integrations/cloud-monitoring/aws-lambda/cloudformation-create-stack.png) 1. Wait for the stack to be created. Once it's confirmed and the status changes to **Create Complete**, click **I've created the stack** in the Sentry popup. - ![](./img/cloudformation-stack-create-complete.png) + ![](/product/integrations/cloud-monitoring/aws-lambda/cloudformation-stack-create-complete.png) 1. Now copy your AWS Account ID, select the region you want to use, and press **Next**. - ![](./img/aws_account_2.png) + ![](/product/integrations/cloud-monitoring/aws-lambda/aws_account_2.png) @@ -56,7 +56,7 @@ You need to create the CloudFormation stack only once per account, even when ins 8. Select the Lambda functions to automatically add the Sentry layer and necessary environment variables when you **Finish Setup**. **Note:** You can enable or disable Sentry on Lambda functions after installation. - ![](./img/select_lambdas.png) + ![](/product/integrations/cloud-monitoring/aws-lambda/select_lambdas.png) Wait a few minutes as the Lambda functions are enabled. If any functions failed to instrument, follow the suggestions in Troubleshooting. @@ -90,7 +90,7 @@ The integration configuration view in Sentry allows you to do the following with In the table view, you will also see the version of the Lambda layer below the name. -![](./img/sentry-manage-functions.png) +![](/product/integrations/cloud-monitoring/aws-lambda/sentry-manage-functions.png) ## Verify diff --git a/docs/product/integrations/cloud-monitoring/gcp-cloud-run/index.mdx b/docs/product/integrations/cloud-monitoring/gcp-cloud-run/index.mdx index b0d8c4e04d5a2..a48d71ff3f27e 100644 --- a/docs/product/integrations/cloud-monitoring/gcp-cloud-run/index.mdx +++ b/docs/product/integrations/cloud-monitoring/gcp-cloud-run/index.mdx @@ -18,7 +18,7 @@ Sentry owner, manager, or admin permissions are required to install this integra 2. Choose your application platform - ![Sentry Choose Platform](./img/sentry-choose-platform.png) + ![Sentry Choose Platform](/product/integrations/cloud-monitoring/gcp-cloud-run/sentry-choose-platform.png) 3. Follow instructions to instrument your Cloud Run application. Detailed platform docs [here](/platforms/). diff --git a/docs/product/integrations/data-visualization/amazon-sqs/index.mdx b/docs/product/integrations/data-visualization/amazon-sqs/index.mdx index 74795cd747839..e77ab034274d7 100644 --- a/docs/product/integrations/data-visualization/amazon-sqs/index.mdx +++ b/docs/product/integrations/data-visualization/amazon-sqs/index.mdx @@ -18,7 +18,7 @@ Sentry owner, manager, or admin permissions are required to install this integra Navigate to **Settings > Integrations > Amazon SQS** -![Install Amazon SQS integration](./img/amazon-sqs.png) +![Install Amazon SQS integration](/product/integrations/data-visualization/amazon-sqs/amazon-sqs.png) ### Data Forwarding diff --git a/docs/product/integrations/data-visualization/segment/index.mdx b/docs/product/integrations/data-visualization/segment/index.mdx index 16efadf14ecdf..95f1de4309731 100644 --- a/docs/product/integrations/data-visualization/segment/index.mdx +++ b/docs/product/integrations/data-visualization/segment/index.mdx @@ -24,7 +24,7 @@ Sentry owner, manager, or admin permissions are required to install this integra Navigate to **Settings > Integrations > Segment** -![Install Segment integration](./img/segment.png) +![Install Segment integration](/product/integrations/data-visualization/segment/segment.png) ### Data Forwarding diff --git a/docs/product/integrations/data-visualization/splunk/index.mdx b/docs/product/integrations/data-visualization/splunk/index.mdx index 0083bdfec57d0..7110f9ddc4f67 100644 --- a/docs/product/integrations/data-visualization/splunk/index.mdx +++ b/docs/product/integrations/data-visualization/splunk/index.mdx @@ -24,7 +24,7 @@ Sentry owner, manager, or admin permissions are required to install this integra Navigate to **Settings > Integrations > Splunk** -![Install Splunk integration](./img/splunk.png) +![Install Splunk integration](/product/integrations/data-visualization/splunk/splunk.png) ### Enabling HEC @@ -32,19 +32,19 @@ To get started, you’ll need to first enable the HTTP Event Collector: Under **Settings**, select **Data Inputs**: -![Splunk settings](./img/splunk-settings.png) +![Splunk settings](/product/integrations/data-visualization/splunk/splunk-settings.png) Select **HTTP Event Collector** under Local Inputs: -![Splunk data inputs](./img/splunk-data-inputs.png) +![Splunk data inputs](/product/integrations/data-visualization/splunk/splunk-data-inputs.png) Under your HEC settings, click "Global Settings": -![Splunk HEC inputs](./img/splunk-hec-inputs.png) +![Splunk HEC inputs](/product/integrations/data-visualization/splunk/splunk-hec-inputs.png) Change **All Tokens** to **Enabled**, and note the HTTP Port Number (`8088` by default): -![Splunk global settings](./img/splunk-hec-global-settings.png) +![Splunk global settings](/product/integrations/data-visualization/splunk/splunk-hec-global-settings.png) @@ -56,23 +56,23 @@ If you’re running Splunk in a privileged environment, you may need to expose t Under HTTP Event Collector, create a new Sentry input by clicking "New Token": -![Splunk Sentry input](./img/splunk-new-http-input.png) +![Splunk Sentry input](/product/integrations/data-visualization/splunk/splunk-new-http-input.png) Enter a name (e.g. `Sentry`), and click "Next": -![Input a name in Splunk](./img/splunk-new-input-name.png) +![Input a name in Splunk](/product/integrations/data-visualization/splunk/splunk-new-input-name.png) Select the index you wish to make accessible (e.g. `main`), and click "Review": -![Select index in Splunk](./img/splunk-new-input-index.png) +![Select index in Splunk](/product/integrations/data-visualization/splunk/splunk-new-input-index.png) You’ll be prompted to review the input details. Click "Submit" to continue: -![Review form before submitting](./img/splunk-new-input-review.png) +![Review form before submitting](/product/integrations/data-visualization/splunk/splunk-new-input-review.png) The input has now been created, and you should be presented with the **Token Value**: -![Token has been successfully created in Splunk](./img/splunk-new-input-final.png) +![Token has been successfully created in Splunk](/product/integrations/data-visualization/splunk/splunk-new-input-final.png) ### Enabling Splunk Forwarding @@ -89,7 +89,7 @@ Configure [data forwarding](/product/data-management-settings/data-forwarding/) After navigating to **Data Forwarding**, enable the Splunk integration: -![Data forwarding settings page](./img/splunk-data-forwarding-setting.png) +![Data forwarding settings page](/product/integrations/data-visualization/splunk/splunk-data-forwarding-setting.png) Your instance URL is going to vary based on the type of Splunk service you’re using. If you’re using self-service Splunk Cloud, the instance URL will be the URL of the Splunk instance running the HTTP Event Collector (HEC): @@ -107,7 +107,7 @@ If you’re using Splunk behind your firewall, you’ll need to fill in the appr Once you’ve filled in the required fields, hit **Save Changes**: -![Splunk settings form](./img/splunk-data-forwarding-setting-complete.png) +![Splunk settings form](/product/integrations/data-visualization/splunk/splunk-data-forwarding-setting-complete.png) We’ll now begin forwarding all new events into your Splunk instance. @@ -117,4 +117,4 @@ Sentry will internally limit the maximum number of events sent to your Splunk in -![Splunk page showing Sentry data](./img/splunk-search-sentry.png) +![Splunk page showing Sentry data](/product/integrations/data-visualization/splunk/splunk-search-sentry.png) diff --git a/docs/product/integrations/debugging/rookout/index.mdx b/docs/product/integrations/debugging/rookout/index.mdx index d2995d67a4bb1..e83c6c8292813 100644 --- a/docs/product/integrations/debugging/rookout/index.mdx +++ b/docs/product/integrations/debugging/rookout/index.mdx @@ -20,11 +20,11 @@ Rookout **won't** work with self-hosted Sentry. 1. Navigate to **Settings > Integrations > Rookout** - ![Install Rookout integration](./img/rookout.png) + ![Install Rookout integration](/product/integrations/debugging/rookout/rookout.png) 2. In the resulting modal, approve the permissions by clicking "Install". - ![Sentry modal indicating that permissions need installation.](./img/rookout_modal.png) + ![Sentry modal indicating that permissions need installation.](/product/integrations/debugging/rookout/rookout_modal.png) ## Use Integration in Stack Trace @@ -33,8 +33,8 @@ After installing Rookout in Sentry, you can go straight to the line of code in y 1. In Sentry, navigate to the specific **Issue** you want to link and navigate to the **Stack Trace**. 2. In the Stack Trace, you'll see the option to open the line in Rookout by clicking on the Rookout icon. - ![Sentry stack trace showing the Rookout icon on a specific line.](./img/rookout_line_in_stack_trace.png) + ![Sentry stack trace showing the Rookout icon on a specific line.](/product/integrations/debugging/rookout/rookout_line_in_stack_trace.png) 3. Clicking on the Rookout icon takes you to Rookout's web UI where you can continue the debugging process. Rookout makes the best guess for the corresponding project and file in its web UI and will take you to the correct line of code in the file. - ![Sentry modal indicating that permissions need installation.](./img/rookout_screen_1.png) + ![Sentry modal indicating that permissions need installation.](/product/integrations/debugging/rookout/rookout_screen_1.png) diff --git a/docs/product/integrations/deployment/heroku/index.mdx b/docs/product/integrations/deployment/heroku/index.mdx index beb779593079f..2f6fa89aba051 100644 --- a/docs/product/integrations/deployment/heroku/index.mdx +++ b/docs/product/integrations/deployment/heroku/index.mdx @@ -46,23 +46,23 @@ Next, you’ll want to add your repository and set up an app webhook: 1. Start by connecting your repository to your Sentry organization so we automatically retrieve your commit data. Find your repository integration (GitHub, GitLab, Bitbucket, for example) in **Settings > Integrations**. From the Configurations tab, click "Configure". - ![Configure Heroku integration](./img/heroku-configure-repo-integration.png) + ![Configure Heroku integration](/product/integrations/deployment/heroku/heroku-configure-repo-integration.png) On the Configure page, click "Add Repository" then select the repository you want to use. - ![Add repositories](./img/heroku-repo-add.png) + ![Add repositories](/product/integrations/deployment/heroku/heroku-repo-add.png) 2. Find the Heroku integration in **Settings > Integrations**, click "Add to Project", then select the project you want to use with Heroku. - ![Heroku integration details page](./img/heroku-integration-detail.png) + ![Heroku integration details page](/product/integrations/deployment/heroku/heroku-integration-detail.png) 3. In the Heroku integration configuration, specify which repository and deploy environment to be associated with your Sentry project. - ![Heroku project configuration](./img/heroku-project-config.png) + ![Heroku project configuration](/product/integrations/deployment/heroku/heroku-project-config.png) 4. Navigate to your project’s Release settings and copy the app webhook Heroku cli command to your Heroku configuration. - ![Heroku release configuration](./img/heroku-config.png) + ![Heroku release configuration](/product/integrations/deployment/heroku/heroku-config.png) 5. After running the Heroku cli command you'll see a Webhooks Signing Secret. Copy and paste this into the "Webhook Secret" field in Sentry. diff --git a/docs/product/integrations/deployment/vercel/index.mdx b/docs/product/integrations/deployment/vercel/index.mdx index 0ea3f97434270..8aa233c21ed0a 100644 --- a/docs/product/integrations/deployment/vercel/index.mdx +++ b/docs/product/integrations/deployment/vercel/index.mdx @@ -25,7 +25,7 @@ Sentry owner, manager, or admin permissions are required to install this integra 2. Click "Add Integration" and follow the setup to select the Vercel scope, the Vercel projects, and review the app's permissions. - ![Sentry modal showing Vercel installation](./img/vercel_install.png) + ![Sentry modal showing Vercel installation](/product/integrations/deployment/vercel/vercel_install.png) The installation created an internal integration to generate an auth token @@ -33,7 +33,7 @@ Sentry owner, manager, or admin permissions are required to install this integra your Vercel integration will stop working. - ![Sentry modal showing Vercel internal integration](./img/vercel_internal_integration.png) + ![Sentry modal showing Vercel internal integration](/product/integrations/deployment/vercel/vercel_internal_integration.png) ## Configure @@ -43,11 +43,11 @@ Use Vercel to [link projects](#project-linking) for uploading source maps and no 1. When prompted by the installer, select a Sentry project and a Vercel project to link together. - ![Sentry modal showing linking Sentry project to Vercel project](./img/vercel_link_project.png) + ![Sentry modal showing linking Sentry project to Vercel project](/product/integrations/deployment/vercel/vercel_link_project.png) - This step will generate environment variables in the selected Vercel project. Having these set means you can skip the [CLI Configuration step](https://github.com/getsentry/sentry-webpack-plugin#cli-configuration) in the Sentry webpack plugin setup. You can see these in Vercel in **Project Settings > General > Environment Variables**. - ![Sentry modal showing linking Sentry project to Vercel project](./img/vercel_env_vars.png) + ![Sentry modal showing linking Sentry project to Vercel project](/product/integrations/deployment/vercel/vercel_env_vars.png) - `SENTRY_ORG` - the name of your Sentry organization - `SENTRY_PROJECT` - the name of your linked Sentry project @@ -69,12 +69,12 @@ Use Vercel to [link projects](#project-linking) for uploading source maps and no 2. Delete the internal integration that was created by navigating to **Settings > Developer Settings** and clicking the trash can icon next to "Vercel Internal Integration". You will be prompted to confirm the deletion by entering a string provided in the modal. Enter the string and click "Confirm" to finalize the deletion: - ![Sentry modal showing uninstalling Vercel integration](./img/vercel_delete_internal_integration.png) + ![Sentry modal showing uninstalling Vercel integration](/product/integrations/deployment/vercel/vercel_delete_internal_integration.png) ## Troubleshooting ### Failed to fetch -![Failed to fetch error message](./img/vercel_failed_to_fetch.png) +![Failed to fetch error message](/product/integrations/deployment/vercel/vercel_failed_to_fetch.png) This issue typically occurs if you have an ad blocker blocking the conversation between Vercel and Sentry during setup. To remediate the issue, disable your ad blocker and go through the installation flow again. diff --git a/docs/product/integrations/feature-flag/split/index.mdx b/docs/product/integrations/feature-flag/split/index.mdx index a08f545669eac..7dd2baa3af85e 100644 --- a/docs/product/integrations/feature-flag/split/index.mdx +++ b/docs/product/integrations/feature-flag/split/index.mdx @@ -26,6 +26,6 @@ Split **won't** work with self-hosted Sentry. 1. Navigate to **Settings > Integrations > Split** -![Install Split integration](./img/split.png) +![Install Split integration](/product/integrations/feature-flag/split/split.png) 2. Then, follow the full [Split installation instructions](https://help.split.io/hc/en-us/articles/360029879431). diff --git a/docs/product/integrations/integration-platform/index.mdx b/docs/product/integrations/integration-platform/index.mdx index 32e1a7b211972..a4cf6f3aae1b8 100644 --- a/docs/product/integrations/integration-platform/index.mdx +++ b/docs/product/integrations/integration-platform/index.mdx @@ -10,7 +10,7 @@ Sentry’s integration platform provides a way for external services to interact If you're new to the integration platform, it might help to get started with an example project. To help you out, we've built an [example application](https://github.com/getsentry/integration-platform-example), which you can use as a starting point. It demonstrates the different features and data available for your application: -![Demo kanban application user interface that was built to show integration platform features.](./img/reference-implementation-frontend.png) +![Demo kanban application user interface that was built to show integration platform features.](/product/integrations/integration-platform/reference-implementation-frontend.png) It's a kanban application that uses many of the features available to Sentry integrations and it provides starter code in both Python and TypeScript. It also includes a step-by-step guide to setting up your first integration, as well as documentation and testing advice. Typically, the app should be safely consuming live Sentry data within minutes. @@ -18,7 +18,7 @@ It's a kanban application that uses many of the features available to Sentry int In [sentry.io](https://sentry.io), navigate to **Settings > Developer Settings**. From here, you can choose to create an [internal](/product/integrations/integration-platform/internal-integration) or [public](/product/integrations/integration-platform/public-integration) integration. Internal integrations can only be used by your organization, whereas public integrations can be published and are available for all Sentry users. -![Settings page that allows developer to choose between public or internal integrations.](./img/dev-settings.png) +![Settings page that allows developer to choose between public or internal integrations.](/product/integrations/integration-platform/dev-settings.png) There are several configuration options for your integration, which are described briefly below. Each section provides links to more detailed information. @@ -35,7 +35,7 @@ The Sentry integration platform provides the ability to add rich UI components t You can make any integration available as an action in [issue alerts](/product/integrations/integration-platform/webhooks/issue-alerts) and [metric alerts](/product/integrations/integration-platform/webhooks/metric-alerts) by enabling the "Alert Rule Action" toggle. The integration will then show up as a service in the action section when creating or updating an alert rule: -![Dropdown menu of actions for an alert rule.](./img/alert-rules.png) +![Dropdown menu of actions for an alert rule.](/product/integrations/integration-platform/alert-rules.png) For your service to receive webhooks for alert rules, users must add to existing rules or create new ones that have `Send a notification via ` as an action in the rule. Once that's set up, you'll start receiving webhook requests for triggered alerts. For more information about the request and payload, check out the [full Webhooks documentation](/product/integrations/integration-platform/webhooks/). If you'd like users to provide more app-specific information to handle these webhooks (e.g. assignees, teams, notification channels), consider implementing the [alert rule action UI component](/product/integrations/integration-platform/ui-components/alert-rule-action). @@ -43,7 +43,7 @@ For your service to receive webhooks for alert rules, users must add to existing Permissions specify what level of access your service requires of Sentry resources. The scopes are directly applied to any API tokens issued to the application. For public integrations, Sentry will prompt users to approve these permissions upon installation. For more information, check out the [full documentation on Permissions](/api/permissions/). -![Form that allows developer to set what permissions they'll need from their user.](./img/permissions.png) +![Form that allows developer to set what permissions they'll need from their user.](/product/integrations/integration-platform/permissions.png) You can't create an integration or change an existing integration to have permissions greater than your own user settings. Permissions are scoped to the organization, so adding scopes for issues and events, projects, or teams will enable access to issues and events, projects, or teams across the organization. diff --git a/docs/product/integrations/integration-platform/internal-integration.mdx b/docs/product/integrations/integration-platform/internal-integration.mdx index 7305d31a12446..ee90b3c60305e 100644 --- a/docs/product/integrations/integration-platform/internal-integration.mdx +++ b/docs/product/integrations/integration-platform/internal-integration.mdx @@ -14,7 +14,7 @@ Internal integrations are meant for custom integrations unique to your organizat Internal integrations don't require an OAuth flow. You receive an org-wide auth token immediately after creation: -![Diagram showing process difference between public and internal integrations.](./img/authentication-flow.png) +![Diagram showing process difference between public and internal integrations.](/product/integrations/integration-platform/authentication-flow.png) For an example of how to build an internal integration, see [our Round Robin Issue Assignment integration](https://blog.sentry.io/2019/11/21/customize-your-sentry-workflow-a-sample-internal-integration) (or jump straight to [the code on GitHub](https://github.com/getsentry/sentry-round-robin)). @@ -28,7 +28,7 @@ Internal integrations automatically generate an [authentication token](/product/ You can have up to 20 tokens at a time for each internal integration. These tokens do not expire automatically, but you can manually revoke them as needed. -![Image showing the ability to copy tokens, create new tokens, revoke tokens, and when they were created in UTC.](./img/tokens.png) +![Image showing the ability to copy tokens, create new tokens, revoke tokens, and when they were created in UTC.](/product/integrations/integration-platform/tokens.png) ## Image Requirements diff --git a/docs/product/integrations/integration-platform/public-integration.mdx b/docs/product/integrations/integration-platform/public-integration.mdx index 69f189aba91c6..97bd69704fdd2 100644 --- a/docs/product/integrations/integration-platform/public-integration.mdx +++ b/docs/product/integrations/integration-platform/public-integration.mdx @@ -18,7 +18,7 @@ The code examples in the sections below demonstrate a potential use case that in Users will have the option to install your integrations on the **Integrations** page in [sentry.io](https://sentry.io). If your integration is still in an unpublished state, the only Sentry organization that will be able to see or install it will be the organization that created the integration. Once published, clicking the name of the integration will allow users to see a description of your integration and the permissions that will be granted if the user chooses to install. -![A list of integrations that a user can install.](./img/integration-directory.png) +![A list of integrations that a user can install.](/product/integrations/integration-platform/integration-directory.png) ## OAuth Process @@ -157,4 +157,4 @@ If the integration has a [UI component](/product/integrations/integration-platfo When you're ready for the publication process, click "Publish" next to the integration you want to submit. This sends an email to partners@sentry.io, letting us know your integration is ready for review: -![Buttons providing the options to publish or delete.](./img/publish-button.png) +![Buttons providing the options to publish or delete.](/product/integrations/integration-platform/publish-button.png) diff --git a/docs/product/integrations/integration-platform/ui-components/alert-rule-action.mdx b/docs/product/integrations/integration-platform/ui-components/alert-rule-action.mdx index 6a14173d9a057..cf431fb7e9573 100644 --- a/docs/product/integrations/integration-platform/ui-components/alert-rule-action.mdx +++ b/docs/product/integrations/integration-platform/ui-components/alert-rule-action.mdx @@ -6,9 +6,9 @@ description: "Learn about the alert rule action UI component." The alert rule action component gives you to access to parameters to define routing or configuration in alert rules for your service. When alert rules are triggered for a user, the configured service will receive [issue alert](/product/integrations/integration-platform/webhooks/issue-alerts) and [metric alert](/product/integrations/integration-platform/webhooks/metric-alerts) webhook events, with the specified settings for that service, to further route the alert. -![Example of an alert rule UI component.](./img/alert-rule-component-action-example.png) +![Example of an alert rule UI component.](/product/integrations/integration-platform/ui-components/alert-rule-component-action-example.png) -![Example of an alert rule settings modal.](./img/alert-rule-component-modal-example.png) +![Example of an alert rule settings modal.](/product/integrations/integration-platform/ui-components/alert-rule-component-modal-example.png) ## Schema diff --git a/docs/product/integrations/integration-platform/ui-components/issue-link.mdx b/docs/product/integrations/integration-platform/ui-components/issue-link.mdx index 2ab739d8f4ab0..97ea1884a57ce 100644 --- a/docs/product/integrations/integration-platform/ui-components/issue-link.mdx +++ b/docs/product/integrations/integration-platform/ui-components/issue-link.mdx @@ -8,14 +8,14 @@ With an issue linking UI component, you can connect Sentry issues with a task in The issue link component displays with the text "Link <Service> Issue" in the **Issue Details** sidebar: -![Issue linking sidebar showing Shortcut icon.](./img/issue-sidebar-icons.png) +![Issue linking sidebar showing Shortcut icon.](/product/integrations/integration-platform/ui-components/issue-sidebar-icons.png) Clicking the link opens a modal allowing the user to create or link the issue to a task in the external service: -![Sentry modal that creates a Shortcut Story that's linked to a Sentry issue.](./img/shortcut_create_story_with_issue.png) +![Sentry modal that creates a Shortcut Story that's linked to a Sentry issue.](/product/integrations/issue-tracking/shortcut/shortcut_create_story_with_issue.png) When an external issue is created or linked in [sentry.io](https://sentry.io), a display name is shown that links back to the service where it was either created or linked. The display name is composed of two pieces: the `project` and the `identifier`. A hash (#) connects each piece. Here's an example of what it looks like in [sentry.io](https://sentry.io): -![Sentry's sidebar button illustrating that an issue is linked.](./img/shortcut_story_in_linked_issues_82.png) +![Sentry's sidebar button illustrating that an issue is linked.](/product/integrations/issue-tracking/shortcut/shortcut_story_in_linked_issues_82.png) ## Schema diff --git a/docs/product/integrations/integration-platform/ui-components/stacktrace-link.mdx b/docs/product/integrations/integration-platform/ui-components/stacktrace-link.mdx index a0885eaad2a3a..878865f7ce29c 100644 --- a/docs/product/integrations/integration-platform/ui-components/stacktrace-link.mdx +++ b/docs/product/integrations/integration-platform/ui-components/stacktrace-link.mdx @@ -6,7 +6,7 @@ description: "Learn about the stack trace link UI component." This feature allows you to insert a link within a stack trace frame. The link contains details about the project, the file name, and line number. This can be used to view the file on your service or continue the debugging with a helpful reference: -![Example of a stack trace using Rookout.](./img/stack-trace-example.png) +![Example of a stack trace using Rookout.](/product/integrations/integration-platform/ui-components/stack-trace-example.png) ## Schema diff --git a/docs/product/integrations/integration-platform/webhooks.mdx b/docs/product/integrations/integration-platform/webhooks.mdx index c1e55f1ee90a5..5baf98496b167 100644 --- a/docs/product/integrations/integration-platform/webhooks.mdx +++ b/docs/product/integrations/integration-platform/webhooks.mdx @@ -14,7 +14,7 @@ Webhooks are a way for two applications or services to communicate over the web, The concept is based on HTTP callbacks, where an HTTP POST request is sent to a specific URL (an HTTP endpoint in your tech stack) with a payload. Sentry uses JSON webhooks to get error notifications to your systems or services. -![Sentry integration webhook checkbox](./img/webhook-checkbox.png) +![Sentry integration webhook checkbox](/product/integrations/integration-platform/webhook-checkbox.png) ## Headers diff --git a/docs/product/integrations/issue-tracking/asana/index.mdx b/docs/product/integrations/issue-tracking/asana/index.mdx index e7c6c30ca1f11..815704fa6786f 100644 --- a/docs/product/integrations/issue-tracking/asana/index.mdx +++ b/docs/product/integrations/issue-tracking/asana/index.mdx @@ -18,7 +18,7 @@ Sentry owner, manager, or admin permissions are required to install this integra 1. Navigate to **Settings > Integrations > Asana** - ![Install Asana integration](./img/asana.png) + ![Install Asana integration](/product/integrations/issue-tracking/asana/asana.png) 2. Link your Asana account and select an organization or workspace. 3. Click "Enable Plugin". diff --git a/docs/product/integrations/issue-tracking/clickup/index.mdx b/docs/product/integrations/issue-tracking/clickup/index.mdx index 3cbda92e7f1b1..cbe3e97a04e0d 100644 --- a/docs/product/integrations/issue-tracking/clickup/index.mdx +++ b/docs/product/integrations/issue-tracking/clickup/index.mdx @@ -20,6 +20,6 @@ ClickUp **won't** work with self-hosted Sentry. 1. Navigate to **Settings > Integrations > ClickUp** - ![Install ClickUp integration](./img/click-up.png) + ![Install ClickUp integration](/product/integrations/issue-tracking/clickup/click-up.png) 2. Follow the full [ClickUp installation instructions](https://docs.clickup.com/en/articles/3420285-sentry-io). diff --git a/docs/product/integrations/issue-tracking/height/index.mdx b/docs/product/integrations/issue-tracking/height/index.mdx index 4d96731f6368a..e97a3963cb0f3 100644 --- a/docs/product/integrations/issue-tracking/height/index.mdx +++ b/docs/product/integrations/issue-tracking/height/index.mdx @@ -20,7 +20,7 @@ Height **won't** work with self-hosted Sentry. To add the Height integration, navigate to **Settings > Integrations > Height** and click "Install". -![Installed Height integration](./img/height-install.png) +![Installed Height integration](/product/integrations/issue-tracking/height/height-install.png) ## Issue Management @@ -30,7 +30,7 @@ Issue tracking allows you to create Height tasks from within [sentry.io](https:/ To configure issue management automatically, create an [issue alert](/product/alerts/alert-types/#issue-alerts) or a [metric alert](/product/alerts/alert-types/#metric-alerts). When selecting the [action](/product/alerts/create-alerts/issue-alert-config/#then-conditions-actions), choose "Notify Integration" and then "Height" for issue alerts, or select "Height" from the action dropdown for metric alerts: -![Height metric alert rule action settings](./img/height-rule.png) +![Height metric alert rule action settings](/product/integrations/issue-tracking/height/height-rule.png) A Height task will be created automatically when the alert is triggered. @@ -38,11 +38,11 @@ A Height task will be created automatically when the alert is triggered. To configure issue management manually, navigate to a specific Sentry issue and find the "Linked Issues" section on the right panel: -![Link Height issue in Sentry](./img/height-link-issue.png) +![Link Height issue in Sentry](/product/integrations/issue-tracking/height/height-link-issue.png) Here, you’ll be able to create or link Height tasks: -![Create Height issue form](./img/height-create-issue.png) +![Create Height issue form](/product/integrations/issue-tracking/height/height-create-issue.png) ## Issue Sync diff --git a/docs/product/integrations/issue-tracking/incidentio/index.mdx b/docs/product/integrations/issue-tracking/incidentio/index.mdx index 697309e4b5823..7565869fc4392 100644 --- a/docs/product/integrations/issue-tracking/incidentio/index.mdx +++ b/docs/product/integrations/issue-tracking/incidentio/index.mdx @@ -20,11 +20,11 @@ incident.io **won't** work with self-hosted Sentry. The preferred way to install the incident.io integration is by sharing a Sentry link in your active incident Slack channel, which prompts you to add the integration: -![Prompt to add incident.io integration in Slack.](./img/incidentio-slack-install.png) +![Prompt to add incident.io integration in Slack.](/product/integrations/issue-tracking/incidentio/incidentio-slack-install.png) To add the incident.io integration in [sentry.io](https://sentry.io), navigate to **Settings > Integrations > incident.io** and click "Install": -![incident.io integration installed](./img/incidentio-install.png) +![incident.io integration installed](/product/integrations/issue-tracking/incidentio/incidentio-install.png) ## Issue Linking @@ -34,20 +34,20 @@ Issue linking allows you to attach Sentry issues to existing incidents. Issue li To attach a Sentry issue to an incident in Slack, share a link to the Sentry issue and click "Yes, attach it" when prompted: -![Prompt to attach Sentry issue to incident in Slack](./img/incidentio-attach-prompt.png) +![Prompt to attach Sentry issue to incident in Slack](/product/integrations/issue-tracking/incidentio/incidentio-attach-prompt.png) The Sentry issue is now attached to the incident: -![Incident with Sentry issue attached](./img/incidentio-attach-post.png) +![Incident with Sentry issue attached](/product/integrations/issue-tracking/incidentio/incidentio-attach-post.png) ### In sentry.io To attach a Sentry issue to an incident in [sentry.io](https://sentry.io), navigate to a specific Sentry issue and find the "Linked Issues" section on the right panel. Click "Link incident.io issue" and select your active incident from the dropdown: -![incident.io issue link modal in sentry.io](./img/incidentio-link-issue.png) +![incident.io issue link modal in sentry.io](/product/integrations/issue-tracking/incidentio/incidentio-link-issue.png) ## Issue Sync The incident's Slack channel will be updated with attached Sentry issue comments, edited comments, and when the Sentry issue is resolved: -![Synced comments from Sentry on an incident in Slack](./img/incidentio-issue-sync.png) +![Synced comments from Sentry on an incident in Slack](/product/integrations/issue-tracking/incidentio/incidentio-issue-sync.png) diff --git a/docs/product/integrations/issue-tracking/jira/index.mdx b/docs/product/integrations/issue-tracking/jira/index.mdx index d2859c7c324c7..6540876d03c57 100644 --- a/docs/product/integrations/issue-tracking/jira/index.mdx +++ b/docs/product/integrations/issue-tracking/jira/index.mdx @@ -16,7 +16,7 @@ Sentry owner, manager, or admin permissions, and Jira admin permissions are requ 1. Navigate to **Settings > Integrations > Jira**. -![Install Jira integration](./img/jira-overview.png) +![Install Jira integration](/product/integrations/issue-tracking/jira/jira-overview.png) 2. Install the Sentry app through the [Jira marketplace](https://marketplace.atlassian.com/apps/1219432/sentry-for-jira?hosting=cloud&tab=overview). @@ -26,7 +26,7 @@ Sentry owner, manager, or admin permissions, and Jira admin permissions are requ 5. In Sentry, you’ll see a new Jira instance appear on the Integrations page. - ![Jira integration directory](./img/jira-install.png) + ![Jira integration directory](/product/integrations/issue-tracking/jira/jira-install.png) Jira should now be authorized for all projects under your Sentry organization. @@ -160,7 +160,7 @@ Issue management can be configured in two ways - automatically or manually. To configure issue management automatically, create an [**Issue Alert**](/product/alerts-notifications/issue-alerts/). When selecting the [**action**](/product/alerts/create-alerts/issue-alert-config/#then-conditions-actions), choose **Create a new Jira issue**. -![Create Jira ticket alert rule action](./img/jira-ticket-rule.png) +![Create Jira ticket alert rule action](/product/integrations/issue-tracking/jira/jira-ticket-rule.png) A Jira issue will be created automatically when the alert has been triggered. @@ -168,11 +168,11 @@ A Jira issue will be created automatically when the alert has been triggered. To configure issue management manually, once you've navigated to a specific Sentry issue, you'll find the **Linked Issues** section on the right hand panel. -![Link Jira issue from Sentry issue](./img/jira-link-issue.png) +![Link Jira issue from Sentry issue](/product/integrations/issue-tracking/jira/jira-link-issue.png) Here, you’ll be able to create or link Jira issues. -![Create Jira issue form](./img/jira-create-issue.png) +![Create Jira issue form](/product/integrations/issue-tracking/jira/jira-create-issue.png) ### Issue Sync @@ -185,7 +185,7 @@ Sync comments, assignees, and status updates for issues in Sentry to Jira, to mi To configure Issue sync, navigate to **Organization Settings** > **Integrations**, and click "Configure" next to your Jira Server instance. On the following page, you’ll see options of what information you’d like synced between Sentry and Jira. -![Sync Jira statuses to Sentry](./img/jira-sync.png) +![Sync Jira statuses to Sentry](/product/integrations/issue-tracking/jira/jira-sync.png) @@ -215,7 +215,7 @@ If you're having trouble setting up Self-Hosted Sentry, verify the following: ### "Something went wrong" Message with JIRA on SaaS sentry.io Install -![Something went wrong error message](./img/jira-something-went-wrong.png) +![Something went wrong error message](/product/integrations/issue-tracking/jira/jira-something-went-wrong.png) This issue typically occurs if you have an ad blocker blocking the conversation between JIRA and Sentry during setup. To remediate the issue, disable your ad blocker and go through the installation flow again. diff --git a/docs/product/integrations/issue-tracking/linear/index.mdx b/docs/product/integrations/issue-tracking/linear/index.mdx index 178eb378e4234..1fb7aae792f34 100644 --- a/docs/product/integrations/issue-tracking/linear/index.mdx +++ b/docs/product/integrations/issue-tracking/linear/index.mdx @@ -20,7 +20,7 @@ Linear **won't** work with self-hosted Sentry. 1. Navigate to **Settings > Integrations > Linear** - ![Install Linear integration](./img/linear-install-pg.png) + ![Install Linear integration](/product/integrations/issue-tracking/linear/linear-install-pg.png) 2. Follow the full [Linear installation instructions](https://linear.app/docs/sentry). @@ -32,7 +32,7 @@ Issue tracking allows you to create Linear issues from within Sentry, and link S To configure issue management automatically, create an [issue alert](/product/alerts/alert-types/#issue-alerts) or a [metric alert](/product/alerts/alert-types/#metric-alerts). When selecting the [action](/product/alerts/create-alerts/issue-alert-config/#then-conditions-actions), choose "Notify Integration" and then "Linear" for issue alerts, or select "Linear" from the action dropdown for metric alerts: -![Create Linear issue as metric alert rule action](./img/linear-rule.png) +![Create Linear issue as metric alert rule action](/product/integrations/issue-tracking/linear/linear-rule.png) A Linear issue will be created automatically when the alert is triggered. @@ -40,8 +40,8 @@ A Linear issue will be created automatically when the alert is triggered. To configure issue management manually, navigate to a specific Sentry issue and find the "Linked Issues" section on the right panel: -![Link Linear issue from Sentry issue](./img/linear-link-issue.png) +![Link Linear issue from Sentry issue](/product/integrations/issue-tracking/linear/linear-link-issue.png) Here, you’ll be able to create or link Linear issues. -![Create Linear issue form](./img/linear-create-issue.png) +![Create Linear issue form](/product/integrations/issue-tracking/linear/linear-create-issue.png) diff --git a/docs/product/integrations/issue-tracking/shortcut/index.mdx b/docs/product/integrations/issue-tracking/shortcut/index.mdx index 1424e1d5df1af..7408182904f52 100644 --- a/docs/product/integrations/issue-tracking/shortcut/index.mdx +++ b/docs/product/integrations/issue-tracking/shortcut/index.mdx @@ -20,6 +20,6 @@ Shortcut **won't** work with self-hosted Sentry. 1. Navigate to **Settings > Integrations > Shortcut** -![Install Shortcut integration](./img/shortcut.png) +![Install Shortcut integration](/product/integrations/issue-tracking/shortcut/shortcut.png) 2. Follow the full [Shortcut installation instructions](https://help.shortcut.com/hc/en-us/articles/360026979272-Setting-up-the-Sentry-Integration). diff --git a/docs/product/integrations/issue-tracking/teamwork/index.mdx b/docs/product/integrations/issue-tracking/teamwork/index.mdx index 58478df84d912..01e087530a098 100644 --- a/docs/product/integrations/issue-tracking/teamwork/index.mdx +++ b/docs/product/integrations/issue-tracking/teamwork/index.mdx @@ -20,6 +20,6 @@ Teamwork **won't** work with self-hosted Sentry. 1. Navigate to **Settings > Integrations > Teamwork** - ![Install Teamwork integration](./img/teamwork.png) + ![Install Teamwork integration](/product/integrations/issue-tracking/teamwork/teamwork.png) 2. Follow the full [Teamwork installation instructions](https://support.teamwork.com/projects/sentry). diff --git a/docs/product/integrations/notification-incidents/discord/index.mdx b/docs/product/integrations/notification-incidents/discord/index.mdx index 9275528027a12..8660be649856e 100644 --- a/docs/product/integrations/notification-incidents/discord/index.mdx +++ b/docs/product/integrations/notification-incidents/discord/index.mdx @@ -18,7 +18,7 @@ Sentry owner, manager, or admin permissions are required to install this integra 2. Click "Add Installation". You should see a pop up window. - ![Install Discord integration](./img/discord-integration-details.png) + ![Install Discord integration](/product/integrations/notification-incidents/discord/discord-integration-details.png) 3. Log in to your Discord account. If you're already logged in, this login step will not be displayed. @@ -29,7 +29,7 @@ Sentry owner, manager, or admin permissions are required to install this integra account in the server you're trying to add the bot to. - ![Select server](./img/discord-server-select.png) + ![Select server](/product/integrations/notification-incidents/discord/discord-server-select.png) 5. Once you've selected the server, click "Authorize" to create the integration and add the Sentry Discord bot. @@ -47,7 +47,7 @@ To create an issue alert that sends notifications to Discord, follow the steps b 2. Select "Issues" and then click "Set Conditions". - ![Create issue alert](./img/discord-add-issue-alert.png) + ![Create issue alert](/product/integrations/notification-incidents/discord/discord-add-issue-alert.png) 3. Configure your issue alert conditions. @@ -57,15 +57,15 @@ To create an issue alert that sends notifications to Discord, follow the steps b Note that the channel field must be filled in with a Discord channel ID or channel URL, **_not_** a channel name. To get the URL, right click on your channel, select "Copy Link". -![Discord Channel Link](./img/discord-copy-channel-link.png) +![Discord Channel Link](/product/integrations/notification-incidents/discord/discord-copy-channel-link.png) 6. Test your configuration by clicking "Send Test Notification". If the bot has access to the given channel, you should see an example notification there. - ![Discord issue alert](./img/discord-issue-alert.png) + ![Discord issue alert](/product/integrations/notification-incidents/discord/discord-issue-alert.png) Check out the gif below for a walkthrough of how to create an alert that sends Discord notifications: -![Issue alert creation](./img/discord-issue-alert-demo.gif) +![Issue alert creation](/product/integrations/notification-incidents/discord/discord-issue-alert-demo.gif) ### Metric Alerts @@ -83,17 +83,17 @@ To set up a metric alert that sends Discord notifications, follow the steps belo Note that the channel field must be filled in with a Discord channel ID, **_not_** a channel name. To get it, right click on your channel, select "Copy Link", then highlight the string of numbers at the end. -![Discord Channel Link](./img/discord-copy-channel-link.png) +![Discord Channel Link](/product/integrations/notification-incidents/discord/discord-copy-channel-link.png) For example, if the URL is `https://discord.com/channels/server-id/channel-id`, the ID is `channel-id`. -![Channel ID in Link](./img/discord-link-channel-id.png) +![Channel ID in Link](/product/integrations/notification-incidents/discord/discord-link-channel-id.png) 6. Name and save your alert rule. The gif below walks through how to create a metric alert that sends Discord notifications. -![Metric alert creation](./img/discord-metric-alert-demo.gif) +![Metric alert creation](/product/integrations/notification-incidents/discord/discord-metric-alert-demo.gif) ### Identity Linking @@ -103,7 +103,7 @@ When a user installs the Discord bot to their server, their identity gets linked Any user on a Discord server with the Sentry bot can link their account. To do so, use the `/link` command. The bot will reply with a link to our identity linking page. When you open the link, be sure you're signed into the Sentry account you want to link to, then click "Link with Discord". -![Discord identity linking page](./img/discord-identity-link-page.png) +![Discord identity linking page](/product/integrations/notification-incidents/discord/discord-identity-link-page.png) To unlink your accounts, use the `/unlink` command. Follow the link and click "Unlink from Discord" diff --git a/docs/product/integrations/notification-incidents/msteams/index.mdx b/docs/product/integrations/notification-incidents/msteams/index.mdx index 816659af3c893..3e27d88abe906 100644 --- a/docs/product/integrations/notification-incidents/msteams/index.mdx +++ b/docs/product/integrations/notification-incidents/msteams/index.mdx @@ -20,7 +20,7 @@ Sentry owner, manager, or admin permissions are required to install this integra 2. Click the arrow to the right of "Add" to bring up the "Add to Team" button and pick the Team you want for the integration. - ![Microsoft Teams installation modal](./img/msteams-add-to-team.png) + ![Microsoft Teams installation modal](/product/integrations/notification-incidents/msteams/msteams-add-to-team.png) If you click "Add" instead of "Add to Team", you won't get the welcome message @@ -29,7 +29,7 @@ Sentry owner, manager, or admin permissions are required to install this integra 3. You should see a welcome message in the "General" channel within a few seconds. The welcome message will always appear in the "General" channel, even if you intend to use the integration in another channel. Click "Complete Setup". - ![Welcome to Microsoft Teams message](./img/msteams-welcome-message.png) + ![Welcome to Microsoft Teams message](/product/integrations/notification-incidents/msteams/msteams-welcome-message.png) The integration should be installed at this point. @@ -49,16 +49,16 @@ Set up an alert rule by going to **Alerts** and clicking "Create Alert". From he In [issue alerts](/product/alerts/alert-types/#issue-alerts), select "Send a Microsoft Teams notification" in the actions dropdown and then select your team and channel: -![Microsoft Teams alert rule action](./img/msteams-add-action.png) +![Microsoft Teams alert rule action](/product/integrations/notification-incidents/msteams/msteams-add-action.png) In [metric alerts](/product/alerts/alert-types/#metric-alerts), select the Microsoft Teams option in the dropdown that corresponds to your team and then enter the username or channel: -![Microsoft Teams metric alert rule action](./img/msteams_metric_alert_rule.png) +![Microsoft Teams metric alert rule action](/product/integrations/notification-incidents/msteams/msteams_metric_alert_rule.png) Once you receive a Microsoft Teams notification, you can use the "Resolve", "Archive", or "Assign" buttons to update the Issue in Sentry. -![Sentry issue status buttons in Microsoft Teams alert](./img/msteams-alert-message.png) +![Sentry issue status buttons in Microsoft Teams alert](/product/integrations/notification-incidents/msteams/msteams-alert-message.png) The first time you try to interact with a notification, you will get a message from the Sentry bot asking you to link your identity. Click "Link Identities" to complete this step. Until you do this, you can't interact with messages. -![Link Microsoft Teams identity to Sentry](./img/msteams-link-identity.png) +![Link Microsoft Teams identity to Sentry](/product/integrations/notification-incidents/msteams/msteams-link-identity.png) diff --git a/docs/product/integrations/notification-incidents/opsgenie/index.mdx b/docs/product/integrations/notification-incidents/opsgenie/index.mdx index 79dc4581f0814..b5ebdfe51e5a4 100644 --- a/docs/product/integrations/notification-incidents/opsgenie/index.mdx +++ b/docs/product/integrations/notification-incidents/opsgenie/index.mdx @@ -16,11 +16,11 @@ You'll need Sentry owner, manager, or admin-level permissions to be able to inst 1. To get started, go to **Settings > Integrations > Opsgenie (Integration)** and click "Add Installation". - ![Install Opsgenie integration](./img/opsgenie-install.png) + ![Install Opsgenie integration](/product/integrations/notification-incidents/opsgenie/opsgenie-install.png) 2. Select your base Opsgenie URL and type in your Opsgenie account name. If you like, you can also add your integration key at this time. After you click 'Submit', you'll be directed to the configuration page for your connected Opsgenie integration. - ![Opsgenie installation form](./img/opsgenie-form.png) + ![Opsgenie installation form](/product/integrations/notification-incidents/opsgenie/opsgenie-form.png) ## Configure @@ -28,7 +28,7 @@ The Opsgenie integration should now be installed. Go to the configuration page t If you added an integration key during installation, it'll appear on the configuration page with the label 'my-first-key'. You can change this label at any time. -![Opsgenie configuration page](./img/opsgenie-config.png) +![Opsgenie configuration page](/product/integrations/notification-incidents/opsgenie/opsgenie-config.png) ### Set Up Alerts @@ -36,10 +36,10 @@ You can set up a new alert rule via the Opsgenie integration configuration page To create an [issue alert](/product/alerts/alert-types/#issue-alerts) in Sentry, go to the **Alerts** page and click "Create Alert". After you've decided what you want to be alerted about, you'll be able to choose to "Send an Opsgenie notification" from the "Add action" dropdown. You can then choose your account and team: -![Opsgenie issue alert rule action](./img/opsgenie-issue-alert-rule.png) +![Opsgenie issue alert rule action](/product/integrations/notification-incidents/opsgenie/opsgenie-issue-alert-rule.png) If you'd rather be alerted when a specific metric crosses a threshold, you can set a [metric alert](/product/alerts/alert-types/#metric-alerts) by following the same steps as above. Once you've chosen the metric you want to be alerted about, click "Add Action", then select Opsgenie from the notification types dropdown. -![Opsgenie metric alert rule action](./img/opsgenie-metric-alert-rule.png) +![Opsgenie metric alert rule action](/product/integrations/notification-incidents/opsgenie/opsgenie-metric-alert-rule.png) Alerts that get resolved in Sentry will be automatically acknowledged in Opsgenie. diff --git a/docs/product/integrations/notification-incidents/pagerduty/index.mdx b/docs/product/integrations/notification-incidents/pagerduty/index.mdx index 0370a31523180..07f61851ebed6 100644 --- a/docs/product/integrations/notification-incidents/pagerduty/index.mdx +++ b/docs/product/integrations/notification-incidents/pagerduty/index.mdx @@ -16,27 +16,27 @@ Sentry owner, manager, or admin permissions are required to install this integra 1. Navigate to **Settings > Integrations > PagerDuty** - ![Install PagerDuty integration](./img/pagerduty-overview.png) + ![Install PagerDuty integration](/product/integrations/notification-incidents/pagerduty/pagerduty-overview.png) 2. In the resulting modal, click "Add Installation". 3. You'll then be redirected to sign into PagerDuty and choose the account you'd like to connect to the current Sentry organization you are in. - ![PagerDuty account picker modal](./img/pd_account_picker.png) + ![PagerDuty account picker modal](/product/integrations/notification-incidents/pagerduty/pd_account_picker.png) 4. After picking the account, you'll be prompted to add the PagerDuty services you want Sentry to send incidents to. Click "Connect" once you've added your services. - ![Add PagerDuty services](./img/pd_add_services.png) + ![Add PagerDuty services](/product/integrations/notification-incidents/pagerduty/pd_add_services.png) ## Configure The PagerDuty integration should now be installed. You'll be able to see the services connected by going to the **configure** page for your installation. -![PagerDuty is installed](./img/pd_installed.png) +![PagerDuty is installed](/product/integrations/notification-incidents/pagerduty/pd_installed.png) You can now set up rules to use the new integration under **Project Configuration** in the configure section of your installation. -![PagerDuty configuration page](./img/pd_org_configuration.png) +![PagerDuty configuration page](/product/integrations/notification-incidents/pagerduty/pd_org_configuration.png) If you re-generate an integration key for one of your services in PagerDuty you can manually update that value in configuration page for your PagerDuty installation. Additionally, you can add services by clicking "Add Services" in the top right. This will take you to the same page, as shown in step 5. @@ -46,11 +46,11 @@ Click "Add Alert Rule" in the integration configuration page or go to **Alerts** In [issue alerts](/product/alerts/alert-types/#issue-alerts), select "Send a PagerDuty notification" in the actions dropdown and then select your account and service: -![PagerDuty alert rule action](./img/pd_alert_rule.png) +![PagerDuty alert rule action](/product/integrations/notification-incidents/pagerduty/pd_alert_rule.png) In [metric alerts](/product/alerts/alert-types/#metric-alerts), select the PagerDuty option in the dropdown that corresponds to your account and the select your service: -![PagerDuty metric alert rule action](./img/pd_metric_alert_rule.png) +![PagerDuty metric alert rule action](/product/integrations/notification-incidents/pagerduty/pd_metric_alert_rule.png) If a PagerDuty incident is created from the critical trigger of a metric alert and no warning threshold has been set, it will resolve itself when the Sentry metric alert is resolved. Metric alerts that have set warning thresholds may need to be manually resolved as PagerDuty incidents. diff --git a/docs/product/integrations/notification-incidents/slack/index.mdx b/docs/product/integrations/notification-incidents/slack/index.mdx index 4d03ecf47192e..9a2b944df0528 100644 --- a/docs/product/integrations/notification-incidents/slack/index.mdx +++ b/docs/product/integrations/notification-incidents/slack/index.mdx @@ -20,15 +20,15 @@ Slack defaults to let any workspace member authorize apps, but they may have to 2. Click "Add Workspace". - ![Install Slack integration](./img/slack-overview-details-page.png) + ![Install Slack integration](/product/integrations/notification-incidents/slack/slack-overview-details-page.png) 3. Toggle to the Slack workspace to which you want to connect using the dropdown menu in the upper right corner of the authentication window. Then select "Allow". Repeat this process if you are connecting to multiple workspaces. - ![Installation confirmation modal](./img/slack-allow-install.png) + ![Installation confirmation modal](/product/integrations/notification-incidents/slack/slack-allow-install.png) Your integration details page will refresh and show the Slack workspace you just added. -![Installation success message](./img/slack-install-success.png) +![Installation success message](/product/integrations/notification-incidents/slack/slack-install-success.png) Your Slack integration is now available to all projects in your Sentry organization. To enable Slack notification for private channels, add the Slack app to the channel. One quick method: use `@sentry` to invite the Sentry bot the Slack channel. @@ -56,19 +56,19 @@ Set up an alert rule by going to **Alerts** and clicking "Create Alert". From he In [issue alerts](/product/alerts/alert-types/#issue-alerts), select "Send a Slack notification" in the actions dropdown and then select your workspace and channel: -![Slack issue alert action](./img/slack_issue_alert.png) +![Slack issue alert action](/product/integrations/notification-incidents/slack/slack_issue_alert.png) In [metric alerts](/product/alerts/alert-types/#metric-alerts), select the Slack option in the dropdown that corresponds to your workspace and the select your channel: -![Slack metric alert action](./img/slack_metric_alert.png) +![Slack metric alert action](/product/integrations/notification-incidents/slack/slack_metric_alert.png) Once you receive a Slack notification for an issue alert, you can use the "Resolve", "Archive", or "Assign" buttons to update the Issue in Sentry. -![Slack notification of Sentry issue](./img/slack-alert-message.png) +![Slack notification of Sentry issue](/product/integrations/notification-incidents/slack/slack-alert-message.png) Metric alert Slack notifications include a chart of the metric's status and a link to investigate the alert further: -![Slack notification of Sentry metric alert](./img/slack-metric-alert-message.png) +![Slack notification of Sentry metric alert](/product/integrations/notification-incidents/slack/slack-metric-alert-message.png) ### Troubleshooting diff --git a/docs/product/integrations/notification-incidents/threads/index.mdx b/docs/product/integrations/notification-incidents/threads/index.mdx index a83338b3d1cea..204a8a4d488e0 100644 --- a/docs/product/integrations/notification-incidents/threads/index.mdx +++ b/docs/product/integrations/notification-incidents/threads/index.mdx @@ -20,22 +20,22 @@ Threads **won't** work with self-hosted Sentry. To add the Threads integration, navigate to **Settings > Integrations > Threads** and click "Install". -![Install Threads integration](./img/threads-install.png) +![Install Threads integration](/product/integrations/notification-incidents/threads/threads-install.png) ### Alert Rules The Threads Sentry integration supports [issue alerts](/product/alerts/alert-types/#issue-alerts) and [metric alerts](/product/alerts/alert-types/#metric-alerts). When selecting the [action](/product/alerts/create-alerts/issue-alert-config/#then-conditions-actions), choose "Notify Integration" and then "Threads" for issue alerts, or select "Threads" from the action dropdown for metric alerts. Finally, choose the channel to be notified in: -![Threads alert rule action settings](./img/threads-rule.png) +![Threads alert rule action settings](/product/integrations/notification-incidents/threads/threads-rule.png) A Threads notification will be created automatically when the alert is triggered. Threads will notify you when a metric alert has been triggered, and again when it was resolved: -![Threads metric alert rule firing and resolving](./img/threads-metric-alert.png) +![Threads metric alert rule firing and resolving](/product/integrations/notification-incidents/threads/threads-metric-alert.png) ## Issue Statuses Threads will keep your issue statuses in sync. The Threads notification will update when your issue is archived or resolved: -![Issue statuses synced](./img/threads-issue-alert.png) +![Issue statuses synced](/product/integrations/notification-incidents/threads/threads-issue-alert.png) diff --git a/docs/product/integrations/session-replay/atlas/index.mdx b/docs/product/integrations/session-replay/atlas/index.mdx index 6288dfabf89d9..ffcc1c41b53be 100644 --- a/docs/product/integrations/session-replay/atlas/index.mdx +++ b/docs/product/integrations/session-replay/atlas/index.mdx @@ -20,7 +20,7 @@ Atlas **won't** work with self-hosted Sentry. 1. Navigate to **App Configuration > Sentry** in Atlas -![Installation flow for Sentry integration from Atlas](./img/atlas_install.png) +![Installation flow for Sentry integration from Atlas](/product/integrations/session-replay/atlas/atlas_install.png) 2. Follow the instructions to install the Atlas app from within Sentry @@ -60,8 +60,8 @@ sentry_sdk.set_tag("atlasSupport.sessionId", atlas_session_id) Now, Sentry issues will appear in the customer’s timeline in Atlas: -![Sentry issues appearing on the customer timeline within Atlas](./img/atlas_timeline.png) +![Sentry issues appearing on the customer timeline within Atlas](/product/integrations/session-replay/atlas/atlas_timeline.png) As well as within the session recording: -![Sentry issues appearing on the session recording within Atlas](./img/atlas_session.png) +![Sentry issues appearing on the session recording within Atlas](/product/integrations/session-replay/atlas/atlas_session.png) diff --git a/docs/product/integrations/source-code-mgmt/azure-devops/index.mdx b/docs/product/integrations/source-code-mgmt/azure-devops/index.mdx index b7396589e2761..62c7497cc05ea 100644 --- a/docs/product/integrations/source-code-mgmt/azure-devops/index.mdx +++ b/docs/product/integrations/source-code-mgmt/azure-devops/index.mdx @@ -14,11 +14,11 @@ Track and resolve bugs faster by using data from your Azure DevOps commits. (Azu 3. In [Sentry.io](https://sentry.sentry.io/settings/organization/), navigate to **Settings > Integrations > Azure DevOps** and click "Add Installation". - ![Install Azure DevOps integration](./img/azure-devops-install.png) + ![Install Azure DevOps integration](/product/integrations/source-code-mgmt/azure-devops/azure-devops-install.png) 4. An Azure DevOps install window should pop up. Select the Azure DevOps account you'd like to link with Sentry, and press **Submit**. - ![Configure Azure DevOps](./img/azure-global-installed.png) + ![Configure Azure DevOps](/product/integrations/source-code-mgmt/azure-devops/azure-global-installed.png) Azure DevOps should now be enabled for all projects under your Sentry organization, but you'll need to configure the features below. @@ -55,7 +55,7 @@ Issue management can be configured in two ways - automatically or manually. To configure issue management automatically, create an [**Issue Alert**](/product/alerts-notifications/issue-alerts/). When selecting the [**action**](/product/alerts/create-alerts/issue-alert-config/#then-conditions-actions), choose **Create a new Azure DevOps work item**. -![Create Azure DevOps work item as alert rule action](./img/azure-ticket-rule.png) +![Create Azure DevOps work item as alert rule action](/product/integrations/source-code-mgmt/azure-devops/azure-ticket-rule.png) An Azure DevOps work item will be created automatically when the alert has been triggered. @@ -63,7 +63,7 @@ An Azure DevOps work item will be created automatically when the alert has been Once you’ve navigated to a specific issue, you’ll find the **Linked Issues** section on the right hand panel. Here, you’ll be able to create or link Azure DevOps issues. -![Link Azure DevOps work item to Sentry issue](./img/azure-global-link-issue.png) +![Link Azure DevOps work item to Sentry issue](/product/integrations/source-code-mgmt/azure-devops/azure-global-link-issue.png) ### Issue Sync @@ -76,7 +76,7 @@ Sync comments, assignees, and status updates for issues in Sentry to Azure DevOp To configure Issue sync, navigate to ** Organization Settings > Integrations**, and click "Configure" next to your Azure DevOps instance. On the following page, you’ll see options of what information you’d like synced between Sentry and Azure DevOps. -![Sync issue status](./img/azure-global-issue-sync.png) +![Sync issue status](/product/integrations/source-code-mgmt/azure-devops/azure-global-issue-sync.png) ### Resolve in Commit @@ -125,31 +125,31 @@ The following information is only valid for platforms which use traditional file First, navigate to a stack trace that you wish to map. Find an **In App** frame, which is denoted by a bubble on the right side of the frame. The filename will be shown as the first piece of text at the left hand side of the frame header. In this example, it is `src/main.py`. -![Highlighting where in the UI to find the file name in the stack trace](/img/code-mappings-stacktrace.png) +![Highlighting where in the UI to find the file name in the stack trace](/product/integrations/source-code-mgmt/code-mappings-stacktrace.png) For certain native platforms, the stack trace will look different. In cases like these, you can find the absolute path by hovering over the filename. -![Highlighting where in the UI to find the file path for native stack traces](./img/code-mappings-stacktrace-native.png) +![Highlighting where in the UI to find the file path for native stack traces](/product/integrations/source-code-mgmt/code-mappings-stacktrace-native.png) If you aren’t sure, you can look at the event JSON by clicking on the `{}` button in the event header. Find the text in the frame's `filename` or `abs_path`. -![Highlighting where in the UI to find the event JSON](/img/code-mappings-event-json.png) +![Highlighting where in the UI to find the event JSON](/product/integrations/source-code-mgmt/code-mappings-event-json.png) Next, locate the file seen in the stack trace with your source code provider (e.g. GitHub). In this example, the path is `flask/src/main.py` (`empower` is ignored since it is the name of the repo). -![An example of a file in source control](/img/code-mappings-source-file.png) +![An example of a file in source control](/product/integrations/source-code-mgmt/code-mappings-source-file.png) Compare the file path from the stack trace with the path found in your source repository. In this example, the `src/` folder in the stack trace matches the `flask/src` folder in the source code. Using that information, set the **Stack Trace Root** to `src/` and the **Source Code Root** to `flask/src/`. This tells Sentry to replace all file paths beginning in `src/` with `flask/src/` when searching for the source code. For best results, we recommend always providing a non-empty value for the **Stack Trace Root** when possible. -![An example of a completed code mapping](/img/code-mappings-configure-modal.png) +![An example of a completed code mapping](/product/integrations/source-code-mgmt/code-mappings-configure-modal.png) ## Troubleshooting ### No accounts during installation -![](./img/azure-add-account-no-accounts.png) +![](/product/integrations/source-code-mgmt/azure-devops/azure-add-account-no-accounts.png) If you reach the account selection page during the Azure Devops installation process (step 4 in the instructions above) and see that there are no accounts available to select, please check the following possibilities: diff --git a/docs/product/integrations/source-code-mgmt/bitbucket/index.mdx b/docs/product/integrations/source-code-mgmt/bitbucket/index.mdx index 972f43a7e2ca1..2451df6fa0ba3 100644 --- a/docs/product/integrations/source-code-mgmt/bitbucket/index.mdx +++ b/docs/product/integrations/source-code-mgmt/bitbucket/index.mdx @@ -16,7 +16,7 @@ Sentry owner, manager, or admin permissions, and Bitbucket admin permissions are 1. Navigate to **Settings > Integrations > Bitbucket**. -![Install BitBucket integration](./img/bitbucket-install-pg.png) +![Install BitBucket integration](/product/integrations/source-code-mgmt/bitbucket/bitbucket-install-pg.png) 2. If you have the legacy Bitbucket integration installed, use the button next to Bitbucket to **Upgrade**. If you don't have the legacy Bitbucket integration installed, use the button to **Install**. @@ -25,11 +25,11 @@ Sentry owner, manager, or admin permissions, and Bitbucket admin permissions are 4. A Bitbucket install window should pop up. Select the Bitbucket account you'd like to grant Sentry access to, and click "Grant Access". 5. On your new Bitbucket instance in Sentry, click "Configure". - ![Configure BitBucket integration](./img/bitbucket-installed.png) + ![Configure BitBucket integration](/product/integrations/source-code-mgmt/bitbucket/bitbucket-installed.png) 6. Add any repositories from which you want to collect commit data. - ![Add repositories](./img/bitbucket-add-repo.png) + ![Add repositories](/product/integrations/source-code-mgmt/bitbucket/bitbucket-add-repo.png) Bitbucket should now be enabled for all projects under your Sentry organization. @@ -148,7 +148,7 @@ Issue tracking allows you to create Bitbucket issues from within Sentry, and lin Once you’ve navigated to a specific issue, you’ll find the **Linked Issues** section on the right hand panel. Here, you’ll be able to create or link Bitbucket issues. -![Link BitBucket issue to Sentry issue](./img/bitbucket-link-issue.png) +![Link BitBucket issue to Sentry issue](/product/integrations/source-code-mgmt/bitbucket/bitbucket-link-issue.png) ### Resolving in Commit @@ -197,25 +197,25 @@ The following information is only valid for platforms which use traditional file First, navigate to a stack trace that you wish to map. Find an **In App** frame, which is denoted by a bubble on the right side of the frame. The filename will be shown as the first piece of text at the left hand side of the frame header. In this example, it is `src/main.py`. -![Highlighting where in the UI to find the file name in the stack trace](/img/code-mappings-stacktrace.png) +![Highlighting where in the UI to find the file name in the stack trace](/product/integrations/source-code-mgmt/code-mappings-stacktrace.png) For certain native platforms, the stack trace will look different. In cases like these, you can find the absolute path by hovering over the filename. -![Highlighting where in the UI to find the file path for native stack traces](./img/code-mappings-stacktrace-native.png) +![Highlighting where in the UI to find the file path for native stack traces](/product/integrations/source-code-mgmt/code-mappings-stacktrace-native.png) If you aren’t sure, you can look at the event JSON by clicking on the `{}` button in the event header. Find the text in the frame's `filename` or `abs_path`. -![Highlighting where in the UI to find the event JSON](/img/code-mappings-event-json.png) +![Highlighting where in the UI to find the event JSON](/product/integrations/source-code-mgmt/code-mappings-event-json.png) Next, locate the file seen in the stack trace with your source code provider (e.g. GitHub). In this example, the path is `flask/src/main.py` (`empower` is ignored since it is the name of the repo). -![An example of a file in source control](/img/code-mappings-source-file.png) +![An example of a file in source control](/product/integrations/source-code-mgmt/code-mappings-source-file.png) Compare the file path from the stack trace with the path found in your source repository. In this example, the `src/` folder in the stack trace matches the `flask/src` folder in the source code. Using that information, set the **Stack Trace Root** to `src/` and the **Source Code Root** to `flask/src/`. This tells Sentry to replace all file paths beginning in `src/` with `flask/src/` when searching for the source code. For best results, we recommend always providing a non-empty value for the **Stack Trace Root** when possible. -![An example of a completed code mapping](/img/code-mappings-configure-modal.png) +![An example of a completed code mapping](/product/integrations/source-code-mgmt/code-mappings-configure-modal.png) ## Troubleshooting diff --git a/docs/product/integrations/source-code-mgmt/github/img/code-mappings-stacktrace-native.png b/docs/product/integrations/source-code-mgmt/github/img/code-mappings-stacktrace-native.png deleted file mode 100644 index 0628a8cb9fe70..0000000000000 Binary files a/docs/product/integrations/source-code-mgmt/github/img/code-mappings-stacktrace-native.png and /dev/null differ diff --git a/docs/product/integrations/source-code-mgmt/github/index.mdx b/docs/product/integrations/source-code-mgmt/github/index.mdx index 7f4670802dfc7..279d60cee5e6f 100644 --- a/docs/product/integrations/source-code-mgmt/github/index.mdx +++ b/docs/product/integrations/source-code-mgmt/github/index.mdx @@ -20,7 +20,7 @@ Sentry owner, manager, or admin permissions, and GitHub owner permissions are re 1. Navigate to **Settings > Integrations > [GitHub](https://sentry.io/orgredirect/organizations/:orgslug/settings/integrations/github)**. - ![Install GitHub integration](./img/github-install-page.png) + ![Install GitHub integration](/product/integrations/source-code-mgmt/github/github-install-page.png) 2. If you have the legacy GitHub integration installed, use the button next to GitHub to **Upgrade**. If you don't have the legacy GitHub integration installed, use the button to **Install**. @@ -32,7 +32,7 @@ Sentry owner, manager, or admin permissions, and GitHub owner permissions are re 7. On your new GitHub instance in Sentry, click "Configure". 8. All of your repositories will be added by default, you just have to refresh your screen. To only add select repositories, choose them from the dropdown list. _Make sure you have given Sentry access to these repositories in GitHub in the previous steps._ - ![Add repository](./img/github-global-add-repo.png) + ![Add repository](/product/integrations/source-code-mgmt/github/github-global-add-repo.png) The GitHub integration is available for all projects under your Sentry organization. You can connect multiple GitHub organizations to one Sentry organization, but you **cannot** connect a single GitHub organization to multiple Sentry organizations. @@ -50,7 +50,7 @@ If you're using GitHub Enterprise Cloud, follow the [instructions for GitHub](/p 1. Confirm [Sentry's IP ranges](/product/security/ip-ranges/) are allowed for your GitHub Enterprise instance. 2. In your GitHub Enterprise organization, navigate to Settings > Developer Settings > **GitHub Apps** and click to add a new **New GitHub App**. - ![Create GitHub Enterprise app](./img/github-e-new-app.png) + ![Create GitHub Enterprise app](/product/integrations/source-code-mgmt/github/github-e-new-app.png) #### Register new GitHub App @@ -151,19 +151,19 @@ If you're using GitHub Enterprise Cloud, follow the [instructions for GitHub](/p 1. In Sentry, navigate to Organization Settings > **Integrations**. 2. Next to GitHub Enterprise, click "Install". - ![Install GitHub Enterprise integration](./img/github-e-install.png) + ![Install GitHub Enterprise integration](/product/integrations/source-code-mgmt/github/github-e-install.png) 3. Click "Add Installation". - ![Add Installation](./img/github-e-add-installation.png) + ![Add Installation](/product/integrations/source-code-mgmt/github/github-e-add-installation.png) 4. Fill out the following form with information from your GitHub apps configuration page. - ![GitHub Enterprise configuration form](./img/github-e-form.png) + ![GitHub Enterprise configuration form](/product/integrations/source-code-mgmt/github/github-e-form.png) You'll need to generate a private key on your GitHub apps configuration page, and paste the entire contents into the **GitHub App Private Key** field. - ![Generate private key](./img/github-e-generate-private-key.png) + ![Generate private key](/product/integrations/source-code-mgmt/github/github-e-generate-private-key.png) For example, in terminal: @@ -173,14 +173,14 @@ If you're using GitHub Enterprise Cloud, follow the [instructions for GitHub](/p 5. Click "Configure" and then a GitHub install window will pop up. Select which repositories Sentry should have access to (or select all repositories) and click "Install". - ![Install GitHub Enterprise confirmation modal](./img/github-e-repo-access.png) + ![Install GitHub Enterprise confirmation modal](/product/integrations/source-code-mgmt/github/github-e-repo-access.png) 6. You will then be redirected back to Sentry. On your new GitHub Enterprise instance, click "Configure". - ![Configure GitHub enterprise](./img/github-e-configure.png) + ![Configure GitHub enterprise](/product/integrations/source-code-mgmt/github/github-e-configure.png) 7. Add any repositories that you want to collect commit data from. _Make sure you have given Sentry access to these repositories in GitHub in the previous steps._ - ![Add GitHub Enterprise repository](./img/github-e-add-repo.png) + ![Add GitHub Enterprise repository](/product/integrations/source-code-mgmt/github/github-e-add-repo.png) GitHub Enterprise should now be enabled for all projects under your Sentry organization. @@ -198,7 +198,7 @@ Once you set up commit tracking, you’ll be able to see the most recent changes For issues where the files in the stack trace match files included in commits sent to Sentry, you’ll see the suspect commit, with a link to the commit itself. -![Suspect commits](./img/github-global-suspect-commits.png) +![Suspect commits](/product/integrations/source-code-mgmt/github/github-global-suspect-commits.png) You’ll also see that the author of the suspect commit will be listed as a suggested assignee for this issue. To assign the issue to the suggested assignee, click on their icon. @@ -224,7 +224,7 @@ Issue management can be configured in two ways - automatically or manually. To configure issue management automatically, create an [**Issue Alert**](/product/alerts-notifications/issue-alerts/). When selecting the [**action**](/product/alerts/create-alerts/issue-alert-config/#then-conditions-actions), choose **Create a new GitHub issue**. -![Create GitHub Issue alert rule action](./img/github-ticket-rule.png) +![Create GitHub Issue alert rule action](/product/integrations/source-code-mgmt/github/github-ticket-rule.png) A GitHub issue will be created automatically when the alert has been triggered. @@ -232,11 +232,11 @@ A GitHub issue will be created automatically when the alert has been triggered. To configure issue management manually, once you've navigated to a specific Sentry issue, you'll find the **Linked Issues** section on the right hand panel. -![Link GitHub issue from Sentry issue](./img/github-global-link-issue.png) +![Link GitHub issue from Sentry issue](/product/integrations/source-code-mgmt/github/github-global-link-issue.png) Here, you’ll be able to create or link GitHub issues. -![Create GitHub issue form](./img/github-create-issue.png) +![Create GitHub issue form](/product/integrations/source-code-mgmt/github/github-create-issue.png) ### Resolve via Commit or Pull Request @@ -256,13 +256,13 @@ When Sentry sees this, we’ll automatically annotate the matching issue with a Sentry can comment on merged and open pull requests. These features are automatically enabled once your GitHub integration has been set up. To disable it, go to **Settings > Integrations > GitHub** and toggle it off. -![How to disable Sentry comments on GitHub pull requests](./img/github-org-settings.png) +![How to disable Sentry comments on GitHub pull requests](/product/integrations/source-code-mgmt/github/github-org-settings.png) #### Merged Pull Request Comments If a recently merged pull request is suspected of causing an issue, Sentry will comment on it to surface the issue, as shown in the example below. -![Sentry comment on suspect pull request in GitHub](./img/sentry-github-pr-comment.png) +![Sentry comment on suspect pull request in GitHub](/product/integrations/source-code-mgmt/github/sentry-github-pr-comment.png) Sentry will only comment on pull requests less than two weeks old that are associated with suspect commits. The comment will continuously be updated with up to five issues the pull request is suspected to have caused. @@ -270,7 +270,7 @@ Sentry will only comment on pull requests less than two weeks old that are assoc When a pull request is opened, Sentry will parse the filenames and function names modified in the pull request from the PR diff to find recent unhandled, unresolved issues associated with your pull request. -![Sentry comment on open pull request in GitHub](./img/sentry-github-open-pr-comment.png) +![Sentry comment on open pull request in GitHub](/product/integrations/source-code-mgmt/github/sentry-github-open-pr-comment.png) Sentry will comment on the pull request with up to five issues per file that were first seen within the past 90 days and were last seen within the past 14 days. @@ -280,17 +280,17 @@ This feature requires [code mappings](/product/issues/suspect-commits/#2-set-up- If there are users committing to Github repositories linked to Sentry and they're not members of your organization, Sentry detects them as missing members. Once a month, Sentry sends organization owners and managers an email reminding them to invite those users to join their org. Sentry also shows a banner to invite missing members in the **Settings > Members** page. -![Github missing members invite banner](./img/github-missing-members-banner.png) +![Github missing members invite banner](/product/integrations/source-code-mgmt/github/github-missing-members-banner.png) The banner shows the 5 most active contributors that are not yet in the organization. To see all missing members (up to 50), click "View All" in the banner. To snooze the banner, click the ellipsis, then select "Hide Missing Members". Clicking "View All" on the invite banner will display the invite modal. From here, you can select multiple users and assign roles and teams before inviting them. -![Github missing members invite modal](./img/github-missing-members-modal.png) +![Github missing members invite modal](/product/integrations/source-code-mgmt/github/github-missing-members-modal.png) By default, this feature is automatically enabled once your GitHub integration has been set up. To disable it, go to **Settings > Integrations > GitHub** and toggle it off. -![How to disable missing member detection](./img/github-org-settings.png) +![How to disable missing member detection](/product/integrations/source-code-mgmt/github/github-org-settings.png) ### Stack Trace Linking @@ -327,25 +327,25 @@ The following information is only valid for platforms which use traditional file First, navigate to a stack trace that you wish to map. Find an **In App** frame, which is denoted by a bubble on the right side of the frame. The filename will be shown as the first piece of text at the left hand side of the frame header. In this example, it is `src/main.py`. -![Highlighting where in the UI to find the file name in the stack trace](/img/code-mappings-stacktrace.png) +![Highlighting where in the UI to find the file name in the stack trace](/product/integrations/source-code-mgmt/code-mappings-stacktrace.png) For certain native platforms, the stack trace will look different. In cases like these, you can find the absolute path by hovering over the filename. -![Highlighting where in the UI to find the file path for native stack traces](./img/code-mappings-stacktrace-native.png) +![Highlighting where in the UI to find the file path for native stack traces](/product/integrations/source-code-mgmt/code-mappings-stacktrace-native.png) If you aren’t sure, you can look at the event JSON by clicking on the `{}` button in the event header. Find the text in the frame's `filename` or `abs_path`. -![Highlighting where in the UI to find the event JSON](/img/code-mappings-event-json.png) +![Highlighting where in the UI to find the event JSON](/product/integrations/source-code-mgmt/code-mappings-event-json.png) Next, locate the file seen in the stack trace with your source code provider (e.g. GitHub). In this example, the path is `flask/src/main.py` (`empower` is ignored since it is the name of the repo). -![An example of a file in source control](/img/code-mappings-source-file.png) +![An example of a file in source control](/product/integrations/source-code-mgmt/code-mappings-source-file.png) Compare the file path from the stack trace with the path found in your source repository. In this example, the `src/` folder in the stack trace matches the `flask/src` folder in the source code. Using that information, set the **Stack Trace Root** to `src/` and the **Source Code Root** to `flask/src/`. This tells Sentry to replace all file paths beginning in `src/` with `flask/src/` when searching for the source code. For best results, we recommend always providing a non-empty value for the **Stack Trace Root** when possible. -![An example of a completed code mapping](/img/code-mappings-configure-modal.png) +![An example of a completed code mapping](/product/integrations/source-code-mgmt/code-mappings-configure-modal.png) ### Code Owners diff --git a/docs/product/integrations/source-code-mgmt/gitlab/img/code-mappings-stacktrace-native.png b/docs/product/integrations/source-code-mgmt/gitlab/img/code-mappings-stacktrace-native.png deleted file mode 100644 index 0628a8cb9fe70..0000000000000 Binary files a/docs/product/integrations/source-code-mgmt/gitlab/img/code-mappings-stacktrace-native.png and /dev/null differ diff --git a/docs/product/integrations/source-code-mgmt/gitlab/index.mdx b/docs/product/integrations/source-code-mgmt/gitlab/index.mdx index ec7d86672561b..66b01458ae2f2 100644 --- a/docs/product/integrations/source-code-mgmt/gitlab/index.mdx +++ b/docs/product/integrations/source-code-mgmt/gitlab/index.mdx @@ -16,15 +16,15 @@ Sentry owner, manager, or admin permissions and GitLab owner or maintainer permi 1. Navigate to **Settings > Integrations > GitLab**. - ![Install GitLab integration](./img/gitlab-overview.png) + ![Install GitLab integration](/product/integrations/source-code-mgmt/gitlab/gitlab-overview.png) 1. In the resulting modal, click "Add Installation". - ![Connect Sentry to a GitLab instance](./img/add-installation.png) + ![Connect Sentry to a GitLab instance](/product/integrations/source-code-mgmt/gitlab/add-installation.png) 1. In the pop-up window, complete the instructions to create a Sentry app within GitLab. Once you’re finished, click "Next". - ![Configuration modal and Sentry app within GitLab](./img/configuration-modal.png) + ![Configuration modal and Sentry app within GitLab](/product/integrations/source-code-mgmt/gitlab/configuration-modal.png) 1. Fill out the resulting GitLab Configuration form with the following information: @@ -32,15 +32,15 @@ Sentry owner, manager, or admin permissions and GitLab owner or maintainer permi 2. Find the GitLab Group Path in your group’s GitLab page. Groups might contain subgroups and projects. You should not specify the URL to any specific project, just to a group or subgroup. - ![GitLab page showing group path](./img/gitlab-groups.png) + ![GitLab page showing group path](/product/integrations/source-code-mgmt/gitlab/gitlab-groups.png) 3. Find the GitLab Application ID and Secret in the Sentry app within GitLab. - ![GitLab application id and secret](./img/gitlab-app-id.png) + ![GitLab application id and secret](/product/integrations/source-code-mgmt/gitlab/gitlab-app-id.png) 4. Use this information to fill out the GitLab Configuration and click "Submit". - ![GitLab configuration form](./img/gitlab-configuration.png) + ![GitLab configuration form](/product/integrations/source-code-mgmt/gitlab/gitlab-configuration.png) 1. In the resulting panel, click "Authorize". @@ -48,11 +48,11 @@ Sentry owner, manager, or admin permissions and GitLab owner or maintainer permi 1. Next to your GitLab Instance, click "Configure". _It’s important to configure to receive the full benefits of commit tracking._ - ![GitLab instance with connected group and highlighted configure button](./img/configure-button.png) + ![GitLab instance with connected group and highlighted configure button](/product/integrations/source-code-mgmt/gitlab/configure-button.png) 1. On the resulting page, click "Add Repository" to select which repositories in which you’d like to begin tracking commits. - ![Add repository](./img/add-repo.png) + ![Add repository](/product/integrations/source-code-mgmt/gitlab/add-repo.png) ## Configure @@ -64,25 +64,25 @@ Issue tracking allows you to create GitLab issues from within Sentry and link Se 1. Select your issue - ![List of unresolved issues](./img/sentry-unresolved-issues.png) + ![List of unresolved issues](/product/integrations/source-code-mgmt/gitlab/sentry-unresolved-issues.png) 1. Navigate to Linked Issues on the right panel of the issue's page and click "Link GitLab Issue". - ![GitLab logo with Link GitLab Issue text](./img/link-gitlab-issue.png) + ![GitLab logo with Link GitLab Issue text](/product/integrations/source-code-mgmt/gitlab/link-gitlab-issue.png) 1. You have two options to complete the issue link: 1. In the pop-up, you can fill out the appropriate details in the _Create_ tab, and then click "Create Issue". - ![pop-up modal to create issue](./img/gitlab-create-issue.png) + ![pop-up modal to create issue](/product/integrations/source-code-mgmt/gitlab/gitlab-create-issue.png) 1. Or, in the pop-up, you can click the Link tab, search the issue by name, and then click "Link Issue". _Issues aren't currently searchable by number._ - ![pop-up modal to search issue name](./img/link-issue-by-name.png) + ![pop-up modal to search issue name](/product/integrations/source-code-mgmt/gitlab/link-issue-by-name.png) 1. To unlink an issue, click on the "X" next to its name under Linked Issues. - ![GitLab logo and project next to an X icon](./img/unlink-issue.png) + ![GitLab logo and project next to an X icon](/product/integrations/source-code-mgmt/gitlab/unlink-issue.png) ### Commit Tracking @@ -90,11 +90,11 @@ Commit tracking allows you to hone in on problematic commits. With commit tracki Once you've configured both [release and commit tracking](/product/releases/), you'll be able to see more thorough information about a release: who made commits, which issues were newly introduced by this release, and which deploys were impacted. -![Dashboard with last commit highlighted](./img/last-commit-in-releases.png) +![Dashboard with last commit highlighted](/product/integrations/source-code-mgmt/gitlab/last-commit-in-releases.png) When you investigate deeper into that commit, you can leverage information from metadata like tags. -![Issue detail highlighting tags](./img/highlighting-tags.png) +![Issue detail highlighting tags](/product/integrations/source-code-mgmt/gitlab/highlighting-tags.png) Broadly, this lets you isolate problems in order to see which commits might be problematic. @@ -106,7 +106,7 @@ Once you've added a repository (see configuration step 8), you can start resolvi A `` may look something like 'BACKEND-C' in the image below. -![Issue detail highlighting suspect commits](./img/short-id.png) +![Issue detail highlighting suspect commits](/product/integrations/source-code-mgmt/gitlab/short-id.png) ### Stack Trace Linking @@ -143,25 +143,25 @@ The following information is only valid for platforms which use traditional file First, navigate to a stack trace that you wish to map. Find an **In App** frame, which is denoted by a bubble on the right side of the frame. The filename will be shown as the first piece of text at the left hand side of the frame header. In this example, it is `src/main.py`. -![Highlighting where in the UI to find the file name in the stack trace](/img/code-mappings-stacktrace.png) +![Highlighting where in the UI to find the file name in the stack trace](/product/integrations/source-code-mgmt/code-mappings-stacktrace.png) For certain native platforms, the stack trace will look different. In cases like these, you can find the absolute path by hovering over the filename. -![Highlighting where in the UI to find the file path for native stack traces](./img/code-mappings-stacktrace-native.png) +![Highlighting where in the UI to find the file path for native stack traces](/product/integrations/source-code-mgmt/code-mappings-stacktrace-native.png) If you aren’t sure, you can look at the event JSON by clicking on the `{}` button in the event header. Find the text in the frame's `filename` or `abs_path`. -![Highlighting where in the UI to find the event JSON](/img/code-mappings-event-json.png) +![Highlighting where in the UI to find the event JSON](/product/integrations/source-code-mgmt/code-mappings-event-json.png) Next, locate the file seen in the stack trace with your source code provider (e.g. GitHub). In this example, the path is `flask/src/main.py` (`empower` is ignored since it is the name of the repo). -![An example of a file in source control](/img/code-mappings-source-file.png) +![An example of a file in source control](/product/integrations/source-code-mgmt/code-mappings-source-file.png) Compare the file path from the stack trace with the path found in your source repository. In this example, the `src/` folder in the stack trace matches the `flask/src` folder in the source code. Using that information, set the **Stack Trace Root** to `src/` and the **Source Code Root** to `flask/src/`. This tells Sentry to replace all file paths beginning in `src/` with `flask/src/` when searching for the source code. For best results, we recommend always providing a non-empty value for the **Stack Trace Root** when possible. -![An example of a completed code mapping](/img/code-mappings-configure-modal.png) +![An example of a completed code mapping](/product/integrations/source-code-mgmt/code-mappings-configure-modal.png) ### Suspect Commits @@ -169,7 +169,7 @@ Once you've set up stack trace linking, Sentry can use information from your sou After pinpointing the suspect commit, you can also identify the developer who made the commit and assign them the task of fixing the error. -![Issue detail highlighting suspect commits](./img/highlighting-suspect-commits.png) +![Issue detail highlighting suspect commits](/product/integrations/source-code-mgmt/gitlab/highlighting-suspect-commits.png) Learn about setting up this functionality in [Suspect Commits](/product/issues/suspect-commits/). diff --git a/docs/product/issues/grouping-and-fingerprints/index.mdx b/docs/product/issues/grouping-and-fingerprints/index.mdx index c55d3acf1ae06..d6bbf4acc5368 100644 --- a/docs/product/issues/grouping-and-fingerprints/index.mdx +++ b/docs/product/issues/grouping-and-fingerprints/index.mdx @@ -7,7 +7,7 @@ description: "Learn more about how Sentry groups issues together as well as diff Have you ever had a set of similar-looking issues like this? -![Issues Dashboard](./img/issues-dashboard.png) +![Issues Dashboard](/product/issues/grouping-and-fingerprints/issues-dashboard.png) Ever wonder why some events group into a single issue but others group into separate issues? @@ -23,7 +23,7 @@ A fingerprint is a way to uniquely identify an event. Sentry sets a fingerprint ## Why are similar-looking issues not grouping together? Even if a set of issues in the Issues Stream looks similar, if they are separate then there is something that still differs. In this example, it's the function name at the top of the stack trace: -![Issues Dashboard](./img/issue-stacktraces-comparison.png) +![Issues Dashboard](/product/issues/grouping-and-fingerprints/issue-stacktraces-comparison.png) ## Changing How Events are Grouped @@ -52,13 +52,13 @@ See below for more details on each approach. This allows two or more existing issues to be combined, such that any future event which would have fallen into one of the issues will then be added to the merged issue. Before merge -![Before Merge](./img/before-merge-1.png) +![Before Merge](/product/issues/grouping-and-fingerprints/before-merge-1.png) After merge, we see that `testTypeIssue7` and `testTypeIssue8` were merged together. -![After Merge](./img/after-merge-1.png) +![After Merge](/product/issues/grouping-and-fingerprints/after-merge-1.png) You can also do this from inside a single issue. Click the Similar Issues tab -![Similar Issues](./img/similar-issues-1.png) +![Similar Issues](/product/issues/grouping-and-fingerprints/similar-issues-1.png) **Warning:** This will not affect the creation of future issues. In other words, any future event which would have created a new issue will still do so, regardless of similarity. Only events from the merged issues will be included in the new combined issue. @@ -74,24 +74,24 @@ In order to use fingerprint rules, there are two steps. #### 1. Identify Match Logic Let's say you want the following two issues to group together: -![ConnectionTimeouts](./img/connection-timeouts-2.png) +![ConnectionTimeouts](/product/issues/grouping-and-fingerprints/connection-timeouts-2.png) You can do it based on the error **type**: -![ConnectionTimeoutType](./img/connection-timeout-type.png) +![ConnectionTimeoutType](/product/issues/grouping-and-fingerprints/connection-timeout-type.png) Or you can do it based on the **message**: -![ConnectionTimeoutMessage](./img/connection-timeout-message.png) +![ConnectionTimeoutMessage](/product/issues/grouping-and-fingerprints/connection-timeout-message.png) #### 2. Add Rules to Project Settings Here's how to set the match based on the error **type** in **[Project] > Settings > Issue Grouping > Fingerprint Rules**: -![ConnectionTimeoutTypeExample](./img/connection-timeout-type-example.png) +![ConnectionTimeoutTypeExample](/product/issues/grouping-and-fingerprints/connection-timeout-type-example.png) Now all `ConnectTimeout` events will get a fingerprint of `connect-timeout-type` and will get grouped into a single issue, regardless of stack trace. Note that this only applies to future events. Here's how to set the match based on the error **message**. Note the use of `*` to allow the message to match on any `host` value. -![ConnectionTimeoutMessageExample](./img/connection-timeout-message-example.png) +![ConnectionTimeoutMessageExample](/product/issues/grouping-and-fingerprints/connection-timeout-message-example.png) You can also do this based on the file path of the erroring function, or on the function name itself. See [Fingerprint Rules](/product/data-management-settings/event-grouping/fingerprint-rules/). diff --git a/docs/product/issues/index.mdx b/docs/product/issues/index.mdx index 99b77db222ca2..73086d6004ac3 100644 --- a/docs/product/issues/index.mdx +++ b/docs/product/issues/index.mdx @@ -6,7 +6,7 @@ description: "Learn more about the Issues page and how you can use it to efficie The **Issues** page displays information about errors and performance problems in your application. This page allows you to filter by properties such as browser, device, impacted users, or whether an error is unhandled. You can then inspect issue details to better understand the problem and [triage](/product/issues/states-triage/) effectively. -![Issues homepage](./img/issue_page.png) +![Issues homepage](/product/issues/issue_page.png) A typical application sends a large number of events to Sentry. You can think of an issue as a single bug or problem with your app. To make them manageable, we group similar events into issues based on a fingerprint. This grouping of events into issues allows you to see how frequently a problem is happening and how many users it's affecting. @@ -28,7 +28,7 @@ For each issue, the page displays: For error issues, to see the stack trace of the latest event, you can hover over the issue title. You can also hover over the coloured square to the left of the issue information to see the error level (error, info, fatal, warning, debug, or sample) of the latest event: -![Error level icon](./img/error_level.png) +![Error level icon](/product/issues/error_level.png) You can save your issue queries and access them later by clicking the the "Saved Searches" button in the header. Learn more in [Saved Searches](/product/sentry-basics/search/saved-searches/). You can also add issues data to your [custom dashboards](/product/dashboards/custom-dashboards/) as widgets using the [dataset selector](/product/dashboards/widget-builder/#choose-your-dataset). @@ -54,7 +54,7 @@ Learn more about triaging issues and their different states in [Issue States and Change how issues are sorted in the issues stream by selecting from the sort dropdown: -![Issue sort](./img/issue_sort.png) +![Issue sort](/product/issues/issue_sort.png) - **Last Seen**: The most recent events are shown first. - **First Seen**: The newest issues are shown first. diff --git a/docs/product/issues/issue-details/ai-suggested-solution/index.mdx b/docs/product/issues/issue-details/ai-suggested-solution/index.mdx index 246f334f7dde8..5850e964d197b 100644 --- a/docs/product/issues/issue-details/ai-suggested-solution/index.mdx +++ b/docs/product/issues/issue-details/ai-suggested-solution/index.mdx @@ -10,13 +10,13 @@ of an error event to OpenAI for processing. You can find the feature below the breadcrumbs in the issue details page: -![Suggested Solution Banner](./img/banner.png) +![Suggested Solution Banner](/product/issues/issue-details/ai-suggested-solution/banner.png) Once you click on 'View Suggestion', Sentry will send information about the event to OpenAI for analysis. After some period of waiting, a suggested solution will be produced and might look something like this: -![Example Solution](./img/solution.png) +![Example Solution](/product/issues/issue-details/ai-suggested-solution/solution.png) ## Data Processing @@ -49,4 +49,4 @@ DPA signed with us, even if that toggle is enabled the feature won't be availabl to users until a owner of the organization signed the "OpenAI Subprocessor Acknowledgement". -![Disabling Feature](./img/disabling-feature.png) +![Disabling Feature](/product/issues/issue-details/ai-suggested-solution/disabling-feature.png) diff --git a/docs/product/issues/issue-details/breadcrumbs/index.mdx b/docs/product/issues/issue-details/breadcrumbs/index.mdx index 28f8057076da8..bcfbf1ef710ae 100644 --- a/docs/product/issues/issue-details/breadcrumbs/index.mdx +++ b/docs/product/issues/issue-details/breadcrumbs/index.mdx @@ -10,7 +10,7 @@ SDKs automatically start recording breadcrumbs by enabling integrations. To lear If an error event provides a trail, [sentry.io](https://sentry.io) displays the breadcrumbs on the **Issue Details** page: -![Breadcrumbs section](./img/breadcrumbs-section.png) +![Breadcrumbs section](/product/issues/issue-details/breadcrumbs/breadcrumbs-section.png) ## Breadcrumbs Display @@ -40,7 +40,7 @@ Time A timestamp representing when the breadcrumb occurred. The format is either a string, as defined in [RFC 3339](https://tools.ietf.org/html/rfc3339), or a numeric (integer or float) value representing the number of seconds that have elapsed since the Unix epoch. By default, [sentry.io](https://sentry.io) displays the timestamp as an absolute time. You can click the toggle to update the display to relative time: -![Switch time format button](./img/breadcrumbs-relative-time-switch.png) +![Switch time format button](/product/issues/issue-details/breadcrumbs/breadcrumbs-relative-time-switch.png) Learn more detailed information about breadcrumb data in the [Breadcrumbs Interface developer documentation](https://develop.sentry.dev/sdk/event-payloads/breadcrumbs/). @@ -48,7 +48,7 @@ Learn more detailed information about breadcrumb data in the [Breadcrumbs Interf You can filter the list of breadcrumbs by type and level. The provided types and levels are displayed as options in the filter: -![Filter By Types/Levels](./img/breadcrumbs-filter-by.png) +![Filter By Types/Levels](/product/issues/issue-details/breadcrumbs/breadcrumbs-filter-by.png) ## Full-Text Search @@ -58,4 +58,4 @@ If you type anything in the filter search field, [sentry.io](https://sentry.io) By default, breadcrumbs are sorted from newest to oldest. If you prefer a different ordering, use the dropdown to the right of the search bar. Your sort preference will be saved to the browser. -![Breadcrumbs sort dropdown](./img/breadcrumbs-sort.png) +![Breadcrumbs sort dropdown](/product/issues/issue-details/breadcrumbs/breadcrumbs-sort.png) diff --git a/docs/product/issues/issue-details/error-issues/index.mdx b/docs/product/issues/issue-details/error-issues/index.mdx index e2dcc53406ee9..c09741e69320e 100644 --- a/docs/product/issues/issue-details/error-issues/index.mdx +++ b/docs/product/issues/issue-details/error-issues/index.mdx @@ -8,11 +8,11 @@ An _error issue_ is a grouping of error events. What counts as an error varies b The **Issue Details** page helps you to gain further insight into the source of an error issue and the impact it has on your application's users. The main area of the page displays information about a specific error event that's part of an issue. The top panel and right-hand sidebar of the page display a summary of all the error events grouped together in this issue: -![Issue details](./img/issue_details_page.png) +![Issue details](/product/issues/issue-details/issue_details_page.png) You can view information about a specific error event that's part of an issue on the Issue Details page. You can also navigate between the events of an issue using the event navigator. To subscribe to an error issue and receive alerts about it, click the bell icon, then fine tune [workflow notifications](/product/alerts/notifications/#workflow-notifications) related to the issue in **User Settings > Notifications**. The event description is displayed just below the issue title along with an icon representing the error level of the event: -![Error level icon in issue details](./img/error-level-icon-2.png) +![Error level icon in issue details](/product/issues/issue-details/error-issues/error-level-icon-2.png) The level can be: @@ -29,7 +29,7 @@ In addition, this page provides several other key pieces of information explaine ## Trace Navigator -![Trace Navigator](./img/trace-navigator.png) +![Trace Navigator](/product/issues/issue-details/trace-navigator.png) The trace navigator (which displays below the date) is an abbreviated view of the related [trace](/product/sentry-basics/tracing/distributed-tracing) for the current transaction. It displays up to six nodes, each representing different groups of the event's trace: @@ -45,13 +45,13 @@ Click "View Full Trace" to display the [Trace View](/product/sentry-basics/traci ## Suspect Commits -![Suspect Commit](./img/suspect-commit.png) +![Suspect Commit](/product/issues/issue-details/suspect-commit.png) A _suspect commit_ is a commit that's been identified as potentially having caused the error event. If you've configured [suspect commits](/product/issues/suspect-commits/), these are displayed. This allows you to immediately investigate commits that are likely to have generated the issue. The author of the suspect commit is also suggested as an assignee for the error issue. ## Tags -![Tags](/img/tags.png) +![Tags](/product/issues/issue-details/tags.png) [Tags](/product/sentry-basics/search/) are key/value string pairs that are both indexed and searchable. For example, a tag provides you with information such as the browser, device, or user associated with the event. Tags are the diagnostic information sent by the SDK for the individual event. @@ -73,7 +73,7 @@ Sentry provides the ability to take a screenshot and include it as an attachment The "Stack Trace" section of the page displays the stack trace, which shows you the line of code that the event errored on: -![Exception](./img/issue-exception.png) +![Exception](/product/issues/issue-details/issue-exception.png) It's the most important piece of information that the Sentry grouping algorithm uses to group events into one error issue. You can also customize how error events are grouped. Learn more about customized grouping in [Issue Grouping](/product/data-management-settings/event-grouping/). @@ -81,7 +81,7 @@ It's the most important piece of information that the Sentry grouping algorithm [Breadcrumbs](/product/issues/issue-details/breadcrumbs/) provide a history and timeline leading up to the error event. These can include things like HTTP requests, log statements from the console or server, and DOM (document object model) events in JavaScript: -![Breadcrumbs](./img/issue-breadcrumbs.png) +![Breadcrumbs](/product/issues/issue-details/issue-breadcrumbs.png) You can set your own breadcrumbs to make them more useful for debugging. @@ -89,12 +89,12 @@ If you’ve enabled [Session Replay](/product/session-replay/), you’ll see a r ## Trace Details -![Trace Details](./img/trace-details.png) +![Trace Details](/product/issues/issue-details/trace-details.png) [Tracing](/product/sentry-basics/tracing/distributed-tracing/) augments your existing error data by capturing interactions between your software systems. In the "Trace Details" section, you can click the "Search by Trace" button to see all the events that share the same trace ID. ## Event Grouping Information -![Event Grouping](./img/event-grouping.png) +![Event Grouping](/product/issues/issue-details/event-grouping.png) The "Event Grouping Information" section provides details of how Sentry fingerprinted the event into the group. You can see which parts of the stack trace contributed to the fingerprint as well as all values that were available. You can also use the "Grouping Config" dropdown to experiment with other grouping algorithms. diff --git a/docs/product/issues/issue-details/img/issue-breadcrumbs.png b/docs/product/issues/issue-details/img/issue-breadcrumbs.png deleted file mode 100644 index 7ef8c2fa820c1..0000000000000 Binary files a/docs/product/issues/issue-details/img/issue-breadcrumbs.png and /dev/null differ diff --git a/docs/product/issues/issue-details/img/issue-exception.png b/docs/product/issues/issue-details/img/issue-exception.png deleted file mode 100644 index f1678ce953cf0..0000000000000 Binary files a/docs/product/issues/issue-details/img/issue-exception.png and /dev/null differ diff --git a/docs/product/issues/issue-details/img/issue_details_page.png b/docs/product/issues/issue-details/img/issue_details_page.png deleted file mode 100644 index 5fa221c502524..0000000000000 Binary files a/docs/product/issues/issue-details/img/issue_details_page.png and /dev/null differ diff --git a/docs/product/issues/issue-details/img/suspect-commit.png b/docs/product/issues/issue-details/img/suspect-commit.png deleted file mode 100644 index eedd6fc1be37f..0000000000000 Binary files a/docs/product/issues/issue-details/img/suspect-commit.png and /dev/null differ diff --git a/docs/product/issues/issue-details/img/trace-details.png b/docs/product/issues/issue-details/img/trace-details.png deleted file mode 100644 index 80d151018139a..0000000000000 Binary files a/docs/product/issues/issue-details/img/trace-details.png and /dev/null differ diff --git a/docs/product/issues/issue-details/img/trace-navigator.png b/docs/product/issues/issue-details/img/trace-navigator.png deleted file mode 100644 index a744103d24d4a..0000000000000 Binary files a/docs/product/issues/issue-details/img/trace-navigator.png and /dev/null differ diff --git a/docs/product/issues/issue-details/index.mdx b/docs/product/issues/issue-details/index.mdx index bb75f52e3d09b..cd478a2b52c5f 100644 --- a/docs/product/issues/issue-details/index.mdx +++ b/docs/product/issues/issue-details/index.mdx @@ -6,7 +6,7 @@ description: "Learn more about what information displays on the Issue Details pa The **Issue Details** page helps you to gain further insight into the source of the issue and the impact it has on your application's users. The main area of the page displays information about a specific event that's part of an issue. The top panel and right-hand sidebar of the page display a summary of all the events grouped together in this issue: -![Issue details](./img/issue_details_page.png) +![Issue details](/product/issues/issue-details/issue_details_page.png) You can view information about a specific error event that's part of an issue on the Issue Details page. You can also navigate between the events of an issue using the event navigator. @@ -32,7 +32,7 @@ In addition, this page provides several other key pieces of information. ## Event Navigator -![Event Navigator](./img/event-navigator.png) +![Event Navigator](/product/issues/issue-details/event-navigator.png) By default, the **Issue Details** page displays the "Recommended" event with the most context to help you solve the issue. Sentry uses the following criteria in determining the recommended event: @@ -44,7 +44,7 @@ To view other events, you can use the dropdown to skip to the latest or oldest e ## Trace Navigator -![Trace Navigator](./img/trace-navigator.png) +![Trace Navigator](/product/issues/issue-details/trace-navigator.png) The trace navigator (which you'll see right below the Event ID), is a timeline view that shows any other issues that might be part of the current event's [trace](/product/sentry-basics/tracing/distributed-tracing). The trace navigator shows up to 100 additional issues and you can click on any of them to view their details. Seeing (and being able to toggle between) multiple issues connected to a single event can be helpful for figuring out what went wrong. Note that the trace navigator is only available for issues that are part of a trace and have more than one issue. @@ -58,13 +58,13 @@ Click "View Full Trace" to display the [Trace View](/product/sentry-basics/traci ## Suspect Commits -![Suspect Commit](./img/suspect-commit.png) +![Suspect Commit](/product/issues/issue-details/suspect-commit.png) A _suspect commit_ is a commit that's been identified as potentially having caused the error event. If you've configured [suspect commits](/product/issues/suspect-commits/), these are displayed. This allows you to immediately investigate commits that are likely to have generated the issue. The author of the suspect commit is also suggested as an assignee for the issue. ## Tags -![Tags](/img/tags.png) +![Tags](/product/issues/issue-details/tags.png) [Tags](/product/sentry-basics/search/) are key/value string pairs that are both indexed and searchable. For example, a tag provides you with information such as the browser, device, or user associated with the event. Tags are the diagnostic information sent by the SDK for the individual event. @@ -74,7 +74,7 @@ The tags displayed in the main section of this page are specific to the event th The Stack Trace section of the page shows you the line of code that the event errored on. -![Exception](./img/issue-exception.png) +![Exception](/product/issues/issue-details/issue-exception.png) It's the most important piece of information that the Sentry grouping algorithm uses to group events into one issue. You can also customize how events are grouped. Learn more about customized grouping in [Issue Grouping](/product/data-management-settings/event-grouping/). @@ -82,7 +82,7 @@ It's the most important piece of information that the Sentry grouping algorithm [Breadcrumbs](/product/issues/issue-details/breadcrumbs/) provide a history and timeline leading up to the error event. These can include things like HTTP requests, log statements from the console or server, and DOM (document object model) events in JavaScript. -![Breadcrumbs](./img/issue-breadcrumbs.png) +![Breadcrumbs](/product/issues/issue-details/issue-breadcrumbs.png) You can set your own breadcrumbs to make them more useful for debugging. @@ -90,13 +90,13 @@ If you’ve enabled [Session Replay](/product/session-replay/), you’ll see a r ## Trace Details -![Trace Details](./img/trace-details.png) +![Trace Details](/product/issues/issue-details/trace-details.png) [Tracing](/product/sentry-basics/tracing/distributed-tracing/) augments your existing error data by capturing interactions between your software systems. In the "Trace Details" section, you can click the "Search by Trace" button to see all the events that share the same trace ID. ## Tabs -![Issue Tabs](./img/issue-tabs.png) +![Issue Tabs](/product/issues/issue-details/issue-tabs.png) This page displays the "Details" tab when it first opens, but several other tabs are available depending on issue category: diff --git a/docs/product/issues/issue-details/performance-issues/consecutive-db-queries/index.mdx b/docs/product/issues/issue-details/performance-issues/consecutive-db-queries/index.mdx index 67b6812fa0eaa..9aef7c90979c8 100644 --- a/docs/product/issues/issue-details/performance-issues/consecutive-db-queries/index.mdx +++ b/docs/product/issues/issue-details/performance-issues/consecutive-db-queries/index.mdx @@ -25,7 +25,7 @@ If Sentry isn't detecting a consecutive DB issue where you expect one, it's prob You can configure detector thresholds for consecutive DB queries issues in **Project Settings > Performance**: -![Consecutive DB Queries detector threshold settings](./img/consecutive-db-detector-settings.png) +![Consecutive DB Queries detector threshold settings](/product/issues/issue-details/performance-issues/consecutive-db-queries/consecutive-db-detector-settings.png) ## Span Evidence @@ -36,7 +36,7 @@ You can identify a consecutive DB queries problem by four main aspects in the "S - Parallelizable Spans - The spans that can be parallelized - Duration Impact - The fraction of time added to the total transaction time as a result of spans not being ran in parallel -![Consecutive DB Queries span evidence](./img/span-evidence.png) +![Consecutive DB Queries span evidence](/product/issues/issue-details/performance-issues/consecutive-db-queries/span-evidence.png) View it by going to the **Issues** page in Sentry, selecting your project, clicking on the Consecutive DB Queries error you want to examine, then scrolling down to the "Span Evidence" section in the "Details" tab. @@ -53,7 +53,7 @@ processMyData({ result, count }); This results in a consecutive DB performance issue. You'll notice these queries occur sequentially in the span tree, but they aren't interdependent because the result of one doesn't affect the other. Therefore, they can be executed in parallel. -![Consecutive DB Queries example](./img/consecutive-example.png) +![Consecutive DB Queries example](/product/issues/issue-details/performance-issues/consecutive-db-queries/consecutive-example.png) To fix this performance issue, you could use Promise.all(): @@ -67,4 +67,4 @@ processMyData({ result, count }); This makes the queries execute in parallel, which in this case, reduced the transaction duration by almost half! -![Consecutive DB Queries solved](./img/parallel-example.png) +![Consecutive DB Queries solved](/product/issues/issue-details/performance-issues/consecutive-db-queries/parallel-example.png) diff --git a/docs/product/issues/issue-details/performance-issues/consecutive-http/index.mdx b/docs/product/issues/issue-details/performance-issues/consecutive-http/index.mdx index 072bbb1f5ee8b..000ec00d421b0 100644 --- a/docs/product/issues/issue-details/performance-issues/consecutive-http/index.mdx +++ b/docs/product/issues/issue-details/performance-issues/consecutive-http/index.mdx @@ -32,7 +32,7 @@ If Sentry doesn't detect a Consecutive HTTP issue where you expect one, it's pro You can configure detector thresholds for consecutive HTTP issues in **Project Settings > Performance**: -![Consecutive HTTP detector threshold settings](./img/consecutive-http-threshold-settings.png) +![Consecutive HTTP detector threshold settings](/product/issues/issue-details/performance-issues/consecutive-http/consecutive-http-threshold-settings.png) ## Span Evidence @@ -41,7 +41,7 @@ You can find additional information about your Consecutive HTTP issue by looking - **Transaction name** - **Sequential HTTP Spans** -![Consecutive HTTP span evidence](./img/span-evidence.png) +![Consecutive HTTP span evidence](/product/issues/issue-details/performance-issues/consecutive-http/span-evidence.png) You can view the span evidence by going to the **Issues** page in Sentry, selecting your project, selecting the Consecutive HTTP Queries error you want to examine, then scrolling down to the "Span Evidence" section in the "Details" tab. diff --git a/docs/product/issues/issue-details/performance-issues/db-main-thread-io.mdx b/docs/product/issues/issue-details/performance-issues/db-main-thread-io.mdx index 55148030eef98..816012881460d 100644 --- a/docs/product/issues/issue-details/performance-issues/db-main-thread-io.mdx +++ b/docs/product/issues/issue-details/performance-issues/db-main-thread-io.mdx @@ -12,7 +12,7 @@ The detector for this performance issue looks at the total non-overlapping durat You can configure detector thresholds for database on main thread issues in **Project Settings > Performance**: -![Database on Main Thread detector threshold settings](./img/db-on-main-thread-detector-settings.png) +![Database on Main Thread detector threshold settings](/product/issues/issue-details/performance-issues/db-on-main-thread-detector-settings.png) ## Span Evidence @@ -22,6 +22,6 @@ Span evidence identifies the root cause of the database on main thread problem b - **Parent Span:** Where the database spans occurred - **Offending Span:** The actual spans that are performing database queries in the main thread -![Database Span Evidence](./img/db-io.png) +![Database Span Evidence](/product/issues/issue-details/performance-issues/db-io.png) View it by going to the **Issues** page in Sentry, selecting your Android project, clicking on the database error you want to examine, then scrolling down to the "Span Evidence" section in the "Details" tab. diff --git a/docs/product/issues/issue-details/performance-issues/endpoint-regressions/index.mdx b/docs/product/issues/issue-details/performance-issues/endpoint-regressions/index.mdx index 6285f04db7b56..bf85d7f442350 100644 --- a/docs/product/issues/issue-details/performance-issues/endpoint-regressions/index.mdx +++ b/docs/product/issues/issue-details/performance-issues/endpoint-regressions/index.mdx @@ -31,7 +31,7 @@ To find additional info, go to the Issues page and click on the Endpoint Regress The below chart shows the p95 transaction duration over a period of up to 14 days before and 14 days after the regression was identified. -![Endpoint Regression Issue Chart](./img/endpoint-regression-chart.png) +![Endpoint Regression Issue Chart](/product/issues/issue-details/performance-issues/endpoint-regressions/endpoint-regression-chart.png) ## Potential Causes diff --git a/docs/product/issues/issue-details/performance-issues/file-main-thread-io.mdx b/docs/product/issues/issue-details/performance-issues/file-main-thread-io.mdx index 817457791ea64..6aed43dd94d45 100644 --- a/docs/product/issues/issue-details/performance-issues/file-main-thread-io.mdx +++ b/docs/product/issues/issue-details/performance-issues/file-main-thread-io.mdx @@ -12,7 +12,7 @@ The detector for this performance issue looks at the total non-overlapping durat You can configure detector thresholds for file I/O on main thread issues in **Project Settings > Performance**: -![File I/O on Main Thread detector threshold settings](./img/file-main-thread-io-detector-settings.png) +![File I/O on Main Thread detector threshold settings](/product/issues/issue-details/performance-issues/file-main-thread-io-detector-settings.png) ## Span Evidence @@ -22,7 +22,7 @@ Span evidence identifies the root cause of the File I/O on main thread problem b - Parent Span - Where the File I/O spans occurred - Offending Span - The actual spans that are performing File I/O in the main thread -![File I/O Span Evidence](./img/file-io.png) +![File I/O Span Evidence](/product/issues/issue-details/performance-issues/file-io.png) View it by going to the **Issues** page in Sentry, selecting your Android project, clicking on the File I/O error you want to examine, then scrolling down to the "Span Evidence" section in the "Details" tab. diff --git a/docs/product/issues/issue-details/performance-issues/frame-drop/index.mdx b/docs/product/issues/issue-details/performance-issues/frame-drop/index.mdx index fc85a656832ed..875c7fa183082 100644 --- a/docs/product/issues/issue-details/performance-issues/frame-drop/index.mdx +++ b/docs/product/issues/issue-details/performance-issues/frame-drop/index.mdx @@ -26,19 +26,19 @@ To find additional information about your Frame Drop problem, go to its **Issue - **Suspect Function:** The function that triggered the issue detection. - **Duration:** How long the function took to execute and the number of consecutive samples collected by the profiler that contained the function. -![Frame Drop Function Evidence](./img/frame-drop-function-evidence.png) +![Frame Drop Function Evidence](/product/issues/issue-details/performance-issues/frame-drop/frame-drop-function-evidence.png) To view the entire profile associated with the issue, click the “View Profile” button. The profile will indicate where the suspect function was called from, along with other functions being called _by_ the suspect function: -![Frame Drop Profile](./img/frame-drop-profile.png) +![Frame Drop Profile](/product/issues/issue-details/performance-issues/frame-drop/frame-drop-profile.png) ## Stack Trace The “Stack Trace” section shows a full stack trace view, highlighting the long-running function frame: -![Frame Drop Stack Trace](./img/frame-drop-stack-trace.png) +![Frame Drop Stack Trace](/product/issues/issue-details/performance-issues/frame-drop/frame-drop-stack-trace.png) ## Examples diff --git a/docs/product/issues/issue-details/performance-issues/http-overhead/index.mdx b/docs/product/issues/issue-details/performance-issues/http-overhead/index.mdx index 535db1634a351..baad0128f0b78 100644 --- a/docs/product/issues/issue-details/performance-issues/http-overhead/index.mdx +++ b/docs/product/issues/issue-details/performance-issues/http-overhead/index.mdx @@ -35,7 +35,7 @@ You can find additional information about your Consecutive HTTP issue by looking - **Transaction name** - **Max Queue Time** -![HTTP overhead span evidence](./img/http-overhead-spans.png) +![HTTP overhead span evidence](/product/issues/issue-details/performance-issues/http-overhead/http-overhead-spans.png) You can view the span evidence by going to the **Issues** page in Sentry, selecting your project, selecting the HTTP overhead error you want to examine, then scrolling down to the "Span Evidence" section in the "Details" tab. diff --git a/docs/product/issues/issue-details/performance-issues/image-decoding-main-thread/index.mdx b/docs/product/issues/issue-details/performance-issues/image-decoding-main-thread/index.mdx index 6066da9d85bfa..a8889e9c1c151 100644 --- a/docs/product/issues/issue-details/performance-issues/image-decoding-main-thread/index.mdx +++ b/docs/product/issues/issue-details/performance-issues/image-decoding-main-thread/index.mdx @@ -20,19 +20,19 @@ To find additional information about your Image Decoding on Main Thread problem, - **Suspect function:** The function that triggered the issue detection (in this case, an image decoding function). - **Duration:** How long the function took to execute and the number of consecutive samples collected by the profiler that contained the function. -![Image Decoding on Main Thread Function Evidence](./img/image-decoding-function-evidence.png) +![Image Decoding on Main Thread Function Evidence](/product/issues/issue-details/performance-issues/image-decoding-main-thread/image-decoding-function-evidence.png) To view the entire profile associated with the issue, click the “View Profile” button. The profile will indicate where the suspect function was called from, along with other functions being called _by_ the suspect function: -![Image Decoding on Main Thread Profile](./img/image-decoding-profile.png) +![Image Decoding on Main Thread Profile](/product/issues/issue-details/performance-issues/image-decoding-main-thread/image-decoding-profile.png) ## Stack Trace The “Stack Trace” section shows a full stack trace for where the detected image decoding function was called from: -![Image Decoding on Main Thread Stack Trace](./img/image-decoding-stack-trace.png) +![Image Decoding on Main Thread Stack Trace](/product/issues/issue-details/performance-issues/image-decoding-main-thread/image-decoding-stack-trace.png) ## Example diff --git a/docs/product/issues/issue-details/performance-issues/index.mdx b/docs/product/issues/issue-details/performance-issues/index.mdx index 0fcd8ce28642e..61af42f2f1208 100644 --- a/docs/product/issues/issue-details/performance-issues/index.mdx +++ b/docs/product/issues/issue-details/performance-issues/index.mdx @@ -8,7 +8,7 @@ A _performance issue_ is a grouping of transaction events that are performing po The **Issue Details** page helps you to gain further insight into the source of a performance issue and the impact it has on your application's users. The main area of the page displays information about a specific transaction event that's part of an issue. The top panel and right-hand sidebar of the page display a summary of all the transaction events grouped together in this issue: -![Performance issue](./img/performance-issue-details.png) +![Performance issue](/product/issues/issue-details/performance-issues/performance-issue-details.png) diff --git a/docs/product/issues/issue-details/performance-issues/json-decoding-main-thread/index.mdx b/docs/product/issues/issue-details/performance-issues/json-decoding-main-thread/index.mdx index 09a05fa90756d..73b897f68b6c1 100644 --- a/docs/product/issues/issue-details/performance-issues/json-decoding-main-thread/index.mdx +++ b/docs/product/issues/issue-details/performance-issues/json-decoding-main-thread/index.mdx @@ -22,19 +22,19 @@ To find additional information about your JSON Decoding on Main Thread problem, - **Suspect function:** The function that triggered the issue detection (in this case, a JSON decoding function). - **Duration:** How long the function took to execute and the number of consecutive samples collected by the profiler that contained the function. -![JSON Decoding on Main Thread Function Evidence](./img/json-decoding-function-evidence.png) +![JSON Decoding on Main Thread Function Evidence](/product/issues/issue-details/performance-issues/json-decoding-main-thread/json-decoding-function-evidence.png) To view the entire profile associated with the issue, click the “View Profile” button. The profile will indicate where the suspect function was called from, along with other functions being called _by_ the suspect function: -![JSON Decoding on Main Thread Profile](./img/json-decoding-profile.png) +![JSON Decoding on Main Thread Profile](/product/issues/issue-details/performance-issues/json-decoding-main-thread/json-decoding-profile.png) ## Stack Trace The “Stack Trace” section shows a full stack trace for where the detected JSON decoding function was called from: -![Image Decoding on Main Thread Stack Trace](./img/json-decoding-stack-trace.png) +![Image Decoding on Main Thread Stack Trace](/product/issues/issue-details/performance-issues/json-decoding-main-thread/json-decoding-stack-trace.png) ## Example diff --git a/docs/product/issues/issue-details/performance-issues/large-http-payload/index.mdx b/docs/product/issues/issue-details/performance-issues/large-http-payload/index.mdx index c173caa1a0f10..4d7c262bc67fd 100644 --- a/docs/product/issues/issue-details/performance-issues/large-http-payload/index.mdx +++ b/docs/product/issues/issue-details/performance-issues/large-http-payload/index.mdx @@ -19,7 +19,7 @@ If Sentry isn't detecting a large HTTP payload issue where you expect one, it's You can configure detector thresholds for large HTTP payload issues in **Project Settings > Performance**: -![Large HTTP Payload detector threshold settings](./img/large-http-payload-detector-settings.png) +![Large HTTP Payload detector threshold settings](/product/issues/issue-details/performance-issues/large-http-payload/large-http-payload-detector-settings.png) ## Span Evidence @@ -29,7 +29,7 @@ You can find additional information about your Large HTTP Payload problem by fou - **Large HTTP Payload Span:** The large HTTP span, usually containing the asset url. - **Payload Size:** The size of the payload in bytes. -![Large HTTP payload span evidence](./img/span-evidence.png) +![Large HTTP payload span evidence](/product/issues/issue-details/performance-issues/large-http-payload/span-evidence.png) View it by going to the **Issues** page in Sentry, selecting your project, clicking on the Large HTTP Payload issue you want to examine, then scrolling down to the "Span Evidence" section in the "Details" tab. diff --git a/docs/product/issues/issue-details/performance-issues/large-render-blocking-asset/index.mdx b/docs/product/issues/issue-details/performance-issues/large-render-blocking-asset/index.mdx index ba22b7c12b4de..98eebfc971f35 100644 --- a/docs/product/issues/issue-details/performance-issues/large-render-blocking-asset/index.mdx +++ b/docs/product/issues/issue-details/performance-issues/large-render-blocking-asset/index.mdx @@ -18,7 +18,7 @@ The detector for this performance issue looks for specific asset (resource) span You can configure detector thresholds for large render blocking asset issues in **Project Settings > Performance**: -![Large Render Blocking Asset detector threshold settings](./img/render-blocking-asset-detector-settings.png) +![Large Render Blocking Asset detector threshold settings](/product/issues/issue-details/performance-issues/large-render-blocking-asset/render-blocking-asset-detector-settings.png) ## Span Evidence @@ -31,7 +31,7 @@ You can get additional information about your large render blocking asset proble View it by going to the **Issues** page in Sentry, selecting your project, clicking on the Large Render Blocking Asset error you want to examine, then scrolling down to the "Span Evidence" section in the "Details" tab. -![Large Render Blocking Asset issue span evidence](./img/span-evidence.png) +![Large Render Blocking Asset issue span evidence](/product/issues/issue-details/performance-issues/large-render-blocking-asset/span-evidence.png) ## Fingerprinting diff --git a/docs/product/issues/issue-details/performance-issues/n-one-api-calls.mdx b/docs/product/issues/issue-details/performance-issues/n-one-api-calls.mdx index c5fd533743eec..399ca338ab0d7 100644 --- a/docs/product/issues/issue-details/performance-issues/n-one-api-calls.mdx +++ b/docs/product/issues/issue-details/performance-issues/n-one-api-calls.mdx @@ -25,7 +25,7 @@ The N+1 API Call detector looks for groups of simultaneous network calls to the You can configure detector thresholds for N+1 API calls issues in **Project Settings > Performance**: -![N+1 API Calls detector threshold settings](./img/n-plus-one-api-calls-detector-settings.png) +![N+1 API Calls detector threshold settings](/product/issues/issue-details/performance-issues/n-plus-one-api-calls-detector-settings.png) ## Span Evidence @@ -35,7 +35,7 @@ You can identify the root cause of your N+1 API Call problems by looking at thre - Repeating spans - This is the URL that's receiving the repeated network calls - Parameters - These are the query parameters that vary between the network calls -![N+1 API Calls span evidence](./img/n-plus-one-api-calls-evidence.png) +![N+1 API Calls span evidence](/product/issues/issue-details/performance-issues/n-plus-one-api-calls-evidence.png) View it by going to the **Issues** page in Sentry, clicking on the N+1 API Call error you want to examine, then scrolling down to the "Span Evidence" section in the "Details" tab. @@ -65,7 +65,7 @@ const Book({ id }) => { If the list has 100 books in it, the page will make 100 network calls simultaneously. The number 100 is the "N" in "N+1 API Call". This effect is visible in the span waterfall, which shows all the simultaneous network requests: -![N+1 API Calls in an example application](./img/n-plus-one-api-calls-in-book-application.png) +![N+1 API Calls in an example application](/product/issues/issue-details/performance-issues/n-plus-one-api-calls-in-book-application.png) ## Fixing N+1 API Call Issues diff --git a/docs/product/issues/issue-details/performance-issues/n-one-queries.mdx b/docs/product/issues/issue-details/performance-issues/n-one-queries.mdx index 82f94d578139e..9771513fa6da1 100644 --- a/docs/product/issues/issue-details/performance-issues/n-one-queries.mdx +++ b/docs/product/issues/issue-details/performance-issues/n-one-queries.mdx @@ -19,7 +19,7 @@ If Sentry is not detecting an N+1 issue where you expect one, it's probably beca You can configure detector thresholds for N+1 queries issues in **Project Settings > Performance**: -![N+1 Query detector threshold settings](./img/n-plus-one-queries-detector-settings.png) +![N+1 Query detector threshold settings](/product/issues/issue-details/performance-issues/n-plus-one-queries-detector-settings.png) ## Span Evidence @@ -29,7 +29,7 @@ The evidence for an N+1 queries problem has four main aspects: - Parent span - This can be a view, a serializer, or another span that logically groups the queries. - Repeating span - This is the "N" of N+1 queries. This is the looped query that should have been part of a bulk query. -![N+1 Query span evidence](./img/n-plus-one-span-evidence.png) +![N+1 Query span evidence](/product/issues/issue-details/performance-issues/n-plus-one-span-evidence.png) ## Fingerprinting @@ -50,7 +50,7 @@ def books(request): This code has a subtle performance problem. Each call to `book.author.name` makes a query to fetch the book's author. In total, this code makes 11 queries: one query to fetch the list of books, and 10 more queries to fetch the author of each book. This results in a characteristic query span waterfall: -![N+1 queries in an example application](./img/n-plus-one-queries-before.png) +![N+1 queries in an example application](/product/issues/issue-details/performance-issues/n-plus-one-queries-before.png) In order to fix this performance issue, you could use the `select_related` method in Django, like so: @@ -65,7 +65,7 @@ def books(request): Django will `JOIN` the tables ahead of time, and preload the author information. That way, calling `book.author.name` does not need to make an extra query. Instead of a long waterfall, there is a single `SELECT` query: -![Solved N+1 queries in an example application](./img/n-plus-one-queries-after.png) +![Solved N+1 queries in an example application](/product/issues/issue-details/performance-issues/n-plus-one-queries-after.png) N+1s can also happen when modifying data. For example, instead of creating objects in a loop: diff --git a/docs/product/issues/issue-details/performance-issues/regex-main-thread/index.mdx b/docs/product/issues/issue-details/performance-issues/regex-main-thread/index.mdx index b9e675ed2909e..eeb4db0ede007 100644 --- a/docs/product/issues/issue-details/performance-issues/regex-main-thread/index.mdx +++ b/docs/product/issues/issue-details/performance-issues/regex-main-thread/index.mdx @@ -20,19 +20,19 @@ To find additional information about your Regex on Main Thread problem, go to it - **Suspect function:** The function that triggered the issue detection (in this case, a regular expression function). - **Duration:** How long the function took to execute and the number of consecutive samples collected by the profiler that contained the function -![Regex on Main Thread Function Evidence](./img/regex-function-evidence.png) +![Regex on Main Thread Function Evidence](/product/issues/issue-details/performance-issues/regex-main-thread/regex-function-evidence.png) To view the entire profile associated with the issue, click the “View Profile” button. The profile will indicate where the suspect function was called from, along with other functions being called _by_ the suspect function: -![Regex on Main Thread Profile](./img/regex-profile.png) +![Regex on Main Thread Profile](/product/issues/issue-details/performance-issues/regex-main-thread/regex-profile.png) ## Stack Trace The “Stack Trace” section shows a full stack trace for where the detected regex function was called from: -![Regex on Main Thread Stack Trace](./img/regex-stack-trace.png) +![Regex on Main Thread Stack Trace](/product/issues/issue-details/performance-issues/regex-main-thread/regex-stack-trace.png) ## Example diff --git a/docs/product/issues/issue-details/performance-issues/slow-db-queries/index.mdx b/docs/product/issues/issue-details/performance-issues/slow-db-queries/index.mdx index dd10d3ee40a5d..ea2bb2b3bf9fa 100644 --- a/docs/product/issues/issue-details/performance-issues/slow-db-queries/index.mdx +++ b/docs/product/issues/issue-details/performance-issues/slow-db-queries/index.mdx @@ -19,7 +19,7 @@ in 100 events within a 24-hour period. You can configure detector thresholds for slow DB queries issues in **Project Settings > Performance**: -![Slow DB Query detector threshold settings](./img/slow-db-queries-detector-settings.png) +![Slow DB Query detector threshold settings](/product/issues/issue-details/performance-issues/slow-db-queries/slow-db-queries-detector-settings.png) @@ -35,7 +35,7 @@ You can get additional information about your slow DB query by looking at the fo - Slow DB Query - Duration Impact - The duration of the query as compared to the entire transaction, to put into perspective how much of the transaction is being taken up by the query -![Slow DB Query span evidence](./img/span-evidence.png) +![Slow DB Query span evidence](/product/issues/issue-details/performance-issues/slow-db-queries/span-evidence.png) View it by going to the **Issues** page in Sentry, selecting your project, clicking on the Slow DB Query issue you want to examine, then scrolling down to the "Span Evidence" section in the "Details" tab. diff --git a/docs/product/issues/issue-details/performance-issues/uncompressed-asset/index.mdx b/docs/product/issues/issue-details/performance-issues/uncompressed-asset/index.mdx index 32a8cbea11ab1..163afbb88e2bc 100644 --- a/docs/product/issues/issue-details/performance-issues/uncompressed-asset/index.mdx +++ b/docs/product/issues/issue-details/performance-issues/uncompressed-asset/index.mdx @@ -19,7 +19,7 @@ If Sentry isn't detecting an uncompressed asset issue where you expect one, it's You can configure detector thresholds for uncompressed asset issues in **Project Settings > Performance**: -![Uncompressed Asset detector threshold settings](./img/uncompressed-asset-detector-settings.png) +![Uncompressed Asset detector threshold settings](/product/issues/issue-details/performance-issues/uncompressed-asset/uncompressed-asset-detector-settings.png) ## Span Evidence @@ -30,7 +30,7 @@ You can identify an uncompressed asset problem by four main aspects in the "Span - Asset size - Duration impact - The fraction of time potentially added to the total transaction time if this span is in the critical path. -![Uncompressed asset span evidence](./img/span-evidence.png) +![Uncompressed asset span evidence](/product/issues/issue-details/performance-issues/uncompressed-asset/span-evidence.png) View it by going to the **Issues** page in Sentry, selecting your project, clicking on the Uncompressed Asset error you want to examine, then scrolling down to the "Span Evidence" section in the "Details" tab. diff --git a/docs/product/issues/issue-details/replay-issues/img/Rage-click-issue-in-issue-stream.png b/docs/product/issues/issue-details/replay-issues/Rage-click-issue-in-issue-stream.png similarity index 100% rename from docs/product/issues/issue-details/replay-issues/img/Rage-click-issue-in-issue-stream.png rename to docs/product/issues/issue-details/replay-issues/Rage-click-issue-in-issue-stream.png diff --git a/docs/product/issues/issue-details/replay-issues/img/Turning-off-rage-clicks-toggle.png b/docs/product/issues/issue-details/replay-issues/Turning-off-rage-clicks-toggle.png similarity index 100% rename from docs/product/issues/issue-details/replay-issues/img/Turning-off-rage-clicks-toggle.png rename to docs/product/issues/issue-details/replay-issues/Turning-off-rage-clicks-toggle.png diff --git a/docs/product/issues/issue-details/replay-issues/index.mdx b/docs/product/issues/issue-details/replay-issues/index.mdx index 98b13e6e5b581..5a7fb7ab439ca 100644 --- a/docs/product/issues/issue-details/replay-issues/index.mdx +++ b/docs/product/issues/issue-details/replay-issues/index.mdx @@ -6,7 +6,7 @@ description: "Learn about Session Replay rage click issues." If you've enabled [Session Replay](/product/session-replay/), you'll be able to see rage click issues on the [**Issues**](https://sentry.io/orgredirect/organizations/:orgslug/issues/) page in Sentry. Rage clicks are a series of consecutive clicks on the same unresponsive element. They are a sure sign of user frustration and most likely deserve your attention. -![Rage click issue](./img/Rage-click-issue-in-issue-stream.png) +![Rage click issue](/product/issues/issue-details/replay-issues/Rage-click-issue-in-issue-stream.png) ## Prerequisites for Seeing Rage Clicks @@ -34,4 +34,4 @@ To set up alerts and get notified when a rage click occurs, follow these steps: If you don't want to see rage click issues, you can disable them by going to the **Settings** page in Sentry, clicking "Projects", and selecting the project for which you want to disable rage clicks. From here, select "Replays" under the "PROCESSING" heading and toggle off "Create Rage Click Issues". -![Turning off rage click issues](./img/Turning-off-rage-clicks-toggle.png) +![Turning off rage click issues](/product/issues/issue-details/replay-issues/Turning-off-rage-clicks-toggle.png) diff --git a/docs/product/issues/ownership-rules/index.mdx b/docs/product/issues/ownership-rules/index.mdx index 98c5e85b29dae..2995c0d6afe3b 100644 --- a/docs/product/issues/ownership-rules/index.mdx +++ b/docs/product/issues/ownership-rules/index.mdx @@ -44,13 +44,13 @@ To grant a user access to a project, the user must be a member of a team with ac You can add an ownership rule from **[Project] > Settings > Ownership Rules** and click "Edit Rules": -![Configuration options for defining ownership rules in project settings.](./img/project_settings_edit_ownership_rules.png) +![Configuration options for defining ownership rules in project settings.](/product/issues/ownership-rules/project_settings_edit_ownership_rules.png) You can also add an ownership rule from the **Issue Details** page by clicking the cog icon in the "Assigned To" section of the sidebar: -![Assigned to with cog](./img/assigned_to_cog.png) +![Assigned to with cog](/product/issues/ownership-rules/assigned_to_cog.png) -![Configuration options for defining ownership rules from an issue page.](./img/issue_details_edit_ownership_rules.png) +![Configuration options for defining ownership rules from an issue page.](/product/issues/ownership-rules/issue_details_edit_ownership_rules.png) When you create a rule from the **Issue Details** page, you'll see some suggested paths and URLs based on the events in the issue. Note that [sentry.io](https://sentry.io) doesn't suggest tags. @@ -58,14 +58,14 @@ When you create a rule from the **Issue Details** page, you'll see some suggeste -![Code Owners in UI](./img/codeowners.png) +![Code Owners in UI](/product/issues/ownership-rules/codeowners.png) Import your CODEOWNERS file and use it alongside your ownership rules to assign Sentry issues. A prerequisite for this feature is the **Code Mappings** from [stack trace linking](/product/integrations/source-code-mgmt/github/#stack-trace-linking). To quickly setup a code mapping for a project: 1. Go to an issue in your project. You should see the following option to link to your source code in the stack trace: - ![Link Stack Trace](./img/link_stack_trace.png) + ![Link Stack Trace](/product/issues/ownership-rules/link_stack_trace.png) 2. When you click the link, a modal will open. Enter the source code URL from GitHub/GitLab corresponding to stack trace filename and we'll automatically create the code mapping and set up stack trace linking for the project. Now that we have code mappings, we are able to transform the paths in your CODEOWNERS file to your expected build output. For example, you may build your program in a `dist/` folder, but that will not be in your CODEOWNERS. However the `dist/` prefix is captured in the stack trace's file paths. Code mappings allow Sentry to figure out how to normalize the file paths between your build output and the CODEOWNERS paths. @@ -92,9 +92,9 @@ We support CODEOWNERS files with a maximum size of 3MB. If your file exceeds thi #### External Team/User Mappings -![External team mappings for GitHub/Gitlab](./img/external_team_mappings.png) +![External team mappings for GitHub/Gitlab](/product/issues/ownership-rules/external_team_mappings.png) -![External user mappings for GitHub/Gitlab](./img/external_user_mappings.png) +![External user mappings for GitHub/Gitlab](/product/issues/ownership-rules/external_user_mappings.png) Create external team/user mappings for your GitHub/GitLab teams and users by navigating to **Settings > Integrations > GitHub/GitLab > [Configuration] > Team Mappings/User Mappings**. Suggestions will come from any CODEOWNERS files on projects for the organization. @@ -157,13 +157,13 @@ Once ownership rules are configured, they're applied in the following ways: On the **Issue Details** page, you'll see suggested assignees based on ownership rules matching the event, and [suspect commits](/product/releases/suspect-commits/). You can manually assign the issue to a suggested assignee by selecting one from the dropdown. An event can have multiple suggested assignees if it matches multiple ownership rules. -![Avatar icons of suggested assignees and ability to click on them for assignment.](./img/suggested_assignees.png) +![Avatar icons of suggested assignees and ability to click on them for assignment.](/product/issues/ownership-rules/suggested_assignees.png) ### Auto-Assignment You can automatically assign issues to their owners by enabling the "Auto-assign to issue owner" setting in **[Project] > Settings > Ownership Rules**. -![Select from dropdown to automatically assign issues to their owners.](./img/auto-assign-issue-owner.png) +![Select from dropdown to automatically assign issues to their owners.](/product/issues/ownership-rules/auto-assign-issue-owner.png) If an issue has already been assigned manually, new events will not change the current assignee. If an issue has not been assigned and a new event has multiple owners, Sentry assigns it to the owner(s) from the last matching rule (regardless of the rule `type`). diff --git a/docs/product/issues/reprocessing/index.mdx b/docs/product/issues/reprocessing/index.mdx index fee4df1921dd5..a6cf112abef9b 100644 --- a/docs/product/issues/reprocessing/index.mdx +++ b/docs/product/issues/reprocessing/index.mdx @@ -19,7 +19,7 @@ You can find information about the previous version of reprocessing in [Legacy R After becoming an Early Adopter, you will find a new button when viewing an issue: -!["Reprocess this issue" button next to Resolve, Archive, Share, Delete actions in issue details page](./img/reprocessing-btn.png) +!["Reprocess this issue" button next to Resolve, Archive, Share, Delete actions in issue details page](/product/issues/reprocessing/reprocessing-btn.png) The dialog requires two answers: diff --git a/docs/product/issues/states-triage/escalating-issues/index.mdx b/docs/product/issues/states-triage/escalating-issues/index.mdx index c14d2c1a67209..51e89d0c15831 100644 --- a/docs/product/issues/states-triage/escalating-issues/index.mdx +++ b/docs/product/issues/states-triage/escalating-issues/index.mdx @@ -28,7 +28,7 @@ limitspike = avgweighted + (min(max((avg + (5 \* std))/avg **Example** -![Spike limit example](./img/spike_limit.png) +![Spike limit example](/product/issues/states-triage/escalating-issues/spike_limit.png) The chart above shows the event volumes for an actual Sentry issue that was escalating. The orange line shows the volume from the past week, which is then used to generate the spike threshold for the next week, represented by the green line. The blue line shows the next week’s volume, which crosses the threshold around hour 148 (day 7). At this point, the issue is flagged as escalating. @@ -39,7 +39,7 @@ Some issues, such as cron jobs, purposefully have a high volume of events in a s limitbursty = maxtimeseries \* min(max(2, 5e-0.65cv), 5) **Example** -![Bursty limit example](./img/bursty_limit.png) +![Bursty limit example](/product/issues/states-triage/escalating-issues/bursty_limit.png) This chart shows an example of a bursty Sentry issue. The spike limit, represented by the orange line, would have incorrectly flagged the issue as escalating. The algorithm accounts for this behavior with the new bursty limit, represented by the green line. diff --git a/docs/product/issues/states-triage/index.mdx b/docs/product/issues/states-triage/index.mdx index 2889aec447c13..e7b7d1bc4b5a3 100644 --- a/docs/product/issues/states-triage/index.mdx +++ b/docs/product/issues/states-triage/index.mdx @@ -19,7 +19,7 @@ Here's a list of all statuses, how they're assigned to an issue, and their custo The diagram below shows how the statuses are updated automatically and manually: -![Issue Status Diagram](./img/issue_statuses.png) +![Issue Status Diagram](/product/issues/states-triage/issue_statuses.png) One way to limit the issues that you see is by selecting a tab at the top of the **Issues** page. On the “Unresolved" tab, you'll find `New`, `Ongoing`, `Escalating`, and `Regressed` issues. You can also narrow down further by choosing the "For Review", "Regressed", "Escalating", or "Archived" tabs. diff --git a/docs/product/issues/suspect-commits/img/code-mappings-stacktrace-native.png b/docs/product/issues/suspect-commits/img/code-mappings-stacktrace-native.png deleted file mode 100644 index 0628a8cb9fe70..0000000000000 Binary files a/docs/product/issues/suspect-commits/img/code-mappings-stacktrace-native.png and /dev/null differ diff --git a/docs/product/issues/suspect-commits/img/suggested_assignees.png b/docs/product/issues/suspect-commits/img/suggested_assignees.png deleted file mode 100644 index 3754b1a3afc03..0000000000000 Binary files a/docs/product/issues/suspect-commits/img/suggested_assignees.png and /dev/null differ diff --git a/docs/product/issues/suspect-commits/index.mdx b/docs/product/issues/suspect-commits/index.mdx index 832f6e167c202..7f4eedcfeaa17 100644 --- a/docs/product/issues/suspect-commits/index.mdx +++ b/docs/product/issues/suspect-commits/index.mdx @@ -78,25 +78,25 @@ The following information is only valid for platforms which use traditional file First, navigate to a stack trace that you wish to map. Find an **In App** frame, which is denoted by a bubble on the right side of the frame. The filename will be shown as the first piece of text at the left hand side of the frame header. In this example, it is `src/main.py`. -![Highlighting where in the UI to find the file name in the stack trace](/img/code-mappings-stacktrace.png) +![Highlighting where in the UI to find the file name in the stack trace](/product/issues/suspect-commits/code-mappings-stacktrace.png) For certain native platforms, the stack trace will look different. In cases like these, you can find the absolute path by hovering over the filename. -![Highlighting where in the UI to find the file path for native stack traces](./img/code-mappings-stacktrace-native.png) +![Highlighting where in the UI to find the file path for native stack traces](/product/issues/suspect-commits/code-mappings-stacktrace-native.png) If you aren’t sure, you can look at the event JSON by clicking on the `{}` button in the event header. Find the text in the frame's `filename` or `abs_path`. -![Highlighting where in the UI to find the event JSON](/img/code-mappings-event-json.png) +![Highlighting where in the UI to find the event JSON](/product/issues/suspect-commits/code-mappings-event-json.png) Next, locate the file seen in the stack trace with your source code provider (e.g. GitHub). In this example, the path is `flask/src/main.py` (`empower` is ignored since it is the name of the repo). -![An example of a file in source control](/img/code-mappings-source-file.png) +![An example of a file in source control](/product/issues/suspect-commits/code-mappings-source-file.png) Compare the file path from the stack trace with the path found in your source repository. In this example, the `src/` folder in the stack trace matches the `flask/src/` folder in the source code. Using that information, set the **Stack Trace Root** to `src/` and the **Source Code Root** to `flask/src/`. This tells Sentry to replace all file paths beginning in `src/` with `flask/src/` when searching for the source code. For best results, we recommend always providing a non-empty value for the **Stack Trace Root** when possible. -![An example of a completed code mapping](/img/code-mappings-configure-modal.png) +![An example of a completed code mapping](/product/issues/suspect-commits/code-mappings-configure-modal.png) The first frame in the stack trace is considered suspect when looking at them top-down. If the first frame is not in-app, the next frame is considered suspect. @@ -150,13 +150,13 @@ Once suspect commit authors are identified, they're applied in the following way On the **Issue Details** page, you'll see suggested assignees based on [ownership rules](/product/issues/ownership-rules/) matching the event, and suspect commits. You can manually assign the issue to a suggested assignee by selecting one from the dropdown. -![Avatar icons of suggested assignees and ability to click on them for assignment.](./img/suggested_assignees.png) +![Avatar icons of suggested assignees and ability to click on them for assignment.](/product/issues/ownership-rules/suggested_assignees.png) ### Auto-Assignment You can automatically assign issues to their suspect commit authors by enabling the "Auto-assign to suspect commits" setting in **[Project] > Settings > Ownership Rules**. -![Select from dropdown to automatically assign issues to their suspect commit authors.](./img/auto-assign-suspect-commits.png) +![Select from dropdown to automatically assign issues to their suspect commit authors.](/product/issues/ownership-rules/auto-assign-suspect-commits.png) If an issue has already been assigned manually, new events will not change the current assignee. If an issue has not been assigned and a suspect commit is found, Sentry assigns it to the commit author. diff --git a/docs/product/metrics/img/multiple-queries-2.png b/docs/product/metrics/img/multiple-queries-2.png deleted file mode 100644 index 2c9ec6619810e..0000000000000 Binary files a/docs/product/metrics/img/multiple-queries-2.png and /dev/null differ diff --git a/docs/product/metrics/index.mdx b/docs/product/metrics/index.mdx index 0279d141d0715..99b7f0b40c7fe 100644 --- a/docs/product/metrics/index.mdx +++ b/docs/product/metrics/index.mdx @@ -8,7 +8,7 @@ description: "Sentry's Developer Metrics help you track and visualize the data p Sentry metrics are numerical values that allow you to pinpoint and solve issues impacting user experience and app performance by measuring the data points that are important to you and your application. You can track things like latency, processing time, event size, user signups, and conversion rates, and see how they correlate back to tracing data. This gives you a comprehensive understanding of the health of your systems and helps solve issues faster. -![Metrics UI](./img/Index.png) +![Metrics UI](/product/metrics/Index.png) ## Metric Types diff --git a/docs/product/metrics/metrics-explorer-page.mdx b/docs/product/metrics/metrics-explorer-page.mdx index 7104c4f07cfee..9eb7ecfb12733 100644 --- a/docs/product/metrics/metrics-explorer-page.mdx +++ b/docs/product/metrics/metrics-explorer-page.mdx @@ -10,7 +10,7 @@ Once you've started sending metrics to Sentry, you can explore them in the produ ## Querying & Visualization -![Metrics Query](./img/metrics-explorer-query.png) +![Metrics Query](/product/metrics/metrics-explorer-query.png) You can use the dropdowns at the top of the page as a query editor for your metrics. Select the metric you want to plot from a list of available metrics in your project, the aggregate operation you'd like to perform (for example avg, min, max, percentiles, and so on), and, optionally, any tags you'd like to group by. In the image above, the p95 values of the metric, `gibpotato.potatoes.event_processing_time`, is queried and shown, grouped by `event_type`. @@ -22,15 +22,15 @@ Underneath the chart, you have a summary table where you can see avg, min, max a If you'd like to zoom in and dig deeper into a particular area of your chart, draw a rectangle over your area of interest. This will narrow down the visualization to the particular time and value range that you've selected. -![Enhance](./img/enhance.png) +![Enhance](/product/metrics/enhance.png) While observing one metric is sometimes enough to reach an insight, it's oftentimes necessary to look at multiple metrics simultaneously to find potential correlations. In this case, you can create additional queries in order to compare and contrast different metrics. Click "Add Query" button to create a new query. Alternatively, you can also click "... > Duplicate" next to an existing query to create a duplicate of that query. This will display query results in the same chart, but you can also choose to display them in separate charts. In order to do that click "One chart per query" toggle. Every query gets its own one-letter identifier that is also shown in the summary table of the chart and allows you to easily distinguish between results of different queries. -![Multiple Queries](./img/multiple-queries.png) +![Multiple Queries](/product/metrics/multiple-queries.png) Multiple queries can be combined into an equations that allow you to perform arithmetic operations on the results of your queries. This can be useful when you want to compare two metrics or calculate a ratio between them. Click "Add Equation" to create a new equation. You can reference queries using one-letter indicators in the input field that appears. For example, if you have two queries a and b, you can create an equation that calculates the ratio between them by typing `a / b`. You can also use the `+`, `-`, and `*` operators. -![Equations](./img/equations.png) +![Equations](/product/metrics/equations.png) ## Sample Transactions @@ -42,7 +42,7 @@ Currently, this feature is only available in JS, Python and PHP. While metrics are a great tool for analyzing your data in aggregate and identifying possible issues, you often need to go deeper and look at the correlation with other signals, such as traces, to find the root cause for a particular anomaly. Below your metric charts, the "Samples" tab shows a list of sample transactions to help you with your investigation. Click on a transaction to see more details. -![Samples Table](./img/samples-table.png) +![Samples Table](/product/metrics/samples-table.png) ## Code Locations @@ -54,7 +54,7 @@ Currently, this feature is only available in Python and PHP. When it comes to custom metrics, you can use the code locations tab to see the line of code in your application where your metric is being emitted. This can come in handy when troubleshooting an issue, especially if you were not the one creating the metric in the first place. -![Code Locations](./img/code-locations.png) +![Code Locations](/product/metrics/code-locations.png) ## Create Alerts & Dashboards @@ -62,4 +62,4 @@ In order to stay ahead of issues, you can also create metric-based alerts to get If you want to continuously monitor a particular metric, click "... > Add to Dashboard" to create a new Dashboard widget. You can configure your dashboard to display custom metrics that matter most to you. To learn more, see [Dashboards](/product/dashboards/). -![Alerts & Dashboards](./img/alerts-dashboards.png) +![Alerts & Dashboards](/product/metrics/alerts-dashboards.png) diff --git a/docs/product/performance/filters-display/index.mdx b/docs/product/performance/filters-display/index.mdx index 93c7ef3983b80..6caf91227708a 100644 --- a/docs/product/performance/filters-display/index.mdx +++ b/docs/product/performance/filters-display/index.mdx @@ -14,7 +14,7 @@ The page displays a view of transactions, but you can click the “View Trends Each tab in **Performance** displays an automatically selected set of [widgets](#widgets) and table columns based on the platform of your project. For example, a JavaScript project displays the "Web Vitals" tab by default. Each tab and its [metrics](/product/performance/metrics/) are explained below. -![Performance homepage with Web Vitals tab selected.](./img/01_full_widget_frontend.png) +![Performance homepage with Web Vitals tab selected.](/product/performance/filters-display/01_full_widget_frontend.png) ### All Transactions @@ -42,7 +42,7 @@ When you select "All Transactions", the table includes all transactions across a Rather than searching for transactions by matching event properties, the search bar on the **Performance** page filters by transaction name only. You can search for specific transaction names or use wildcards, which can take the place of one or more characters in a search term (e.g., `/api/*/organization`). -![Updated transaction search](./img/transaction-name-search.png) +![Updated transaction search](/product/performance/filters-display/transaction-name-search.png) When you begin typing, a list of transaction names that match your search appear. There are two ways to interact with the search results: @@ -57,7 +57,7 @@ In the transaction summary, the search bar operates similarly to the one in the [Widgets](/product/performance/filters-display/widgets/) offer visualizations that you can change to best match your workflow. -![Performance homepage with Web Vitals widgets.](./img/01_half_widget_frontend.png) +![Performance homepage with Web Vitals widgets.](/product/performance/filters-display/01_half_widget_frontend.png) In the first row, there are time series and distribution graphs of common metrics for the selected project type (frontend or backend), such as User Misery or Failure Rate. You can compare these side-by-side to find any correlations. diff --git a/docs/product/performance/index.mdx b/docs/product/performance/index.mdx index ac442a99cf84a..e07d59d6972d0 100644 --- a/docs/product/performance/index.mdx +++ b/docs/product/performance/index.mdx @@ -14,7 +14,7 @@ Learn more about traces in the [full Tracing documentation](/product/sentry-basi The **Performance** page is the main view in [sentry.io](https://sentry.io) where you can search or browse for transaction data. A transaction represents a single instance of an activity you want to measure or track, such as a page load, page navigation, or an asynchronous task. The page displays graphs that visualize transactions or [trends](/product/performance/trends/), as well as a table where you can view relevant transactions and drill down to get more information about them. -![Performance homepage with All Transactions tab selected.](./img/01_full_widget_all.png) +![Performance homepage with All Transactions tab selected.](/product/performance/01_full_widget_all.png) Using the information on this page, you can trace issues back through services (for instance, frontend to backend) to identify poorly performing code. You'll be able to determine whether your application performance is getting better or worse, see if your last release is running more slowly than previous ones, and identify specific services that are slow. Once you've found the cause of the problem, you'll be able to address the specific code that’s degrading performance. diff --git a/docs/product/performance/metrics.mdx b/docs/product/performance/metrics.mdx index d8b82fedf56df..c654dfff9763e 100644 --- a/docs/product/performance/metrics.mdx +++ b/docs/product/performance/metrics.mdx @@ -113,7 +113,7 @@ Custom metrics are accessible to you in [sentry.io](https://sentry.io) when you: - Query and add columns for them in **Discover** - View a transaction event detail (see image below) -![Custom metrics in an event detail](./img/custom-metrics-performance.png) +![Custom metrics in an event detail](/product/performance/custom-metrics-performance.png) > _Custom metrics data displayed in the sidebar of a transaction event detail under the "Custom Performance Metrics" heading._ diff --git a/docs/product/performance/mobile-vitals/app-starts.mdx b/docs/product/performance/mobile-vitals/app-starts.mdx index d2dc196bcb90b..fedd138956e59 100644 --- a/docs/product/performance/mobile-vitals/app-starts.mdx +++ b/docs/product/performance/mobile-vitals/app-starts.mdx @@ -4,7 +4,7 @@ sidebar_order: 50 description: "Learn how to monitor your mobile application's performance by using App Starts to identify slow or regressed screens." --- -![Example of App Starts](./img/app-starts.png) +![Example of App Starts](/product/performance/app-starts.png) The **App Starts** page shows an overview of the amount of time it takes for your application to complete cold and warm starts. It helps you identify slow or regressed screens and gives additional information so you can better understand the factors contributing to the slowness of your application start times. @@ -56,7 +56,7 @@ The charts display the following metrics (using cold starts as an example): ## Screen Summary Page -![Example of Screen Summary](./img/app-starts-screen-summary.png) +![Example of Screen Summary](/product/performance/app-starts-screen-summary.png) To get additional information about any of your application’s screens, click on them to get to the **Screen Summary** page. Here, you’ll see your average start duration broken down by release and [device class](/product/reference/search/searchable-properties/#device-classification) (high, medium, low, or unknown). This will help you understand how users with different device performance levels are being affected. @@ -64,11 +64,11 @@ The table below the chart shows spans that have changed from one release to the Clicking the "By Event" toggle in the top right corner of this table will show you events split by release and you'll be able to see overall changes in start times between the two releases you've selected. -![Example of Samples By Event](./img/app-starts-samples-by-event.png) +![Example of Samples By Event](/product/performance/app-starts-samples-by-event.png) ## Span Detail View -![Example of Span Detail View](./img/app-starts-span-detail-view.png) +![Example of Span Detail View](/product/performance/app-starts-span-detail-view.png) Clicking on a span description opens up a side panel that shows span details, including the average duration and count for that span in each of the releases you’re looking at. diff --git a/docs/product/performance/mobile-vitals/index.mdx b/docs/product/performance/mobile-vitals/index.mdx index c1c170a5cd8ce..fff8cd3bc558f 100644 --- a/docs/product/performance/mobile-vitals/index.mdx +++ b/docs/product/performance/mobile-vitals/index.mdx @@ -8,7 +8,7 @@ Mobile Vitals are a set of metrics that measure how fast your app starts and the Mobile Vitals are summarized in several graphs on the **Performance** page in [sentry.io](https://sentry.io) in the "Mobile" tab. -![Performance page in Sentry with Mobile Vitals.](./img/01_full_widget_mobile.png) +![Performance page in Sentry with Mobile Vitals.](/product/performance/01_full_widget_mobile.png) ## App Start @@ -23,7 +23,7 @@ The definitions of cold start and warm start change slightly depending on the op In the example below, the detail view of a transaction displays the warm start measurement in the right sidebar. -![The event detail of a transaction with a warm start measurement.](./img/app-start-transaction.png) +![The event detail of a transaction with a warm start measurement.](/product/performance/app-start-transaction.png) While the SDKs differentiate between a cold and a warm start, they don't track hot starts or resumes. To get more insight into your cold and warm start metrics, you can use the [App Starts](/product/performance/mobile-vitals/app-starts/) feature. @@ -38,7 +38,7 @@ For Apple, the frame rate can be higher, especially as 120 fps displays are beco In the example below, the detail view of the transaction displays the slow, frozen, and total frames in an iOS application: -![The event detail of a transaction with slow and frozen frames measurements.](./img/slow-frozen-frames.png) +![The event detail of a transaction with slow and frozen frames measurements.](/product/performance/slow-frozen-frames.png) You can track slow and frozen frames for: @@ -56,7 +56,7 @@ To track how long it takes your application to produce its first frame and then In the example below, the detail view of the transaction displays the time-to-initial-display span in an Android application: -![The event detail of a transaction with time to initial display and time to full display spans.](./img/time-to-initial-full-display.png) +![The event detail of a transaction with time to initial display and time to full display spans.](/product/performance/time-to-initial-full-display.png) You can track time to initial display for: diff --git a/docs/product/performance/mobile-vitals/screen-loads.mdx b/docs/product/performance/mobile-vitals/screen-loads.mdx index eff3c4b026d78..f0f3d008d8c04 100644 --- a/docs/product/performance/mobile-vitals/screen-loads.mdx +++ b/docs/product/performance/mobile-vitals/screen-loads.mdx @@ -4,7 +4,7 @@ sidebar_order: 10 description: "Learn how to monitor your mobile application's performance by using Screen Loads to get better visibility on your application's TTID and TTFD performance." --- -![Example of Screen Loads](./img/screen-loads.png) +![Example of Screen Loads](/product/performance/screen-loads.png) The **Screen Loads** page shows an overview of the amount of time it takes for your application to load its screens. It helps you identify slow or regressed screens and gives additional information so you can better understand the factors contributing to the slowness of both time to initial display (TTID) and time to full display (TTFD). @@ -40,7 +40,7 @@ The sortable table below shows a list of your application's screens with the ave ## Screen Summary Page -![Example of Screen Summary](./img/screen-loads-screen-summary.png) +![Example of Screen Summary](/product/performance/screen-loads-screen-summary.png) To get additional information about any of your application's screens, click on them to get to the **Screen Summary** page. Here, you’ll see a breakdown of TTID and TTFD values broken out by [device class](/product/reference/search/searchable-properties/#device-classification) (high, medium, low, or unknown), across your selected releases. This will help you understand how users with different device performance levels are being affected. @@ -70,11 +70,11 @@ At the bottom of the page, you’ll see a table of spans that occurred during sc If spans end before TTID or TTFD, there's a chance they could be affecting their respective metrics. They're tagged in Sentry and can be viewed on the **Screen Summary** page. But just because a span has been identified as TTID or TTFD-affecting, it doesn't necessarily mean it's the culprit. This information is an approximation and should be used to find potentially problematic spans on an aggregate level so you can narrow down the scope of spans you need to investigate. -![TTID and TTFD Affecting Spans](./img/ttid-ttfd-affecting-spans.png) +![TTID and TTFD Affecting Spans](/product/performance/ttid-ttfd-affecting-spans.png) ## Span Detail View -![Example of Span Detail View](./img/screen-loads-span-detail.png) +![Example of Span Detail View](/product/performance/screen-loads-span-detail.png) Clicking on a span description opens up a side panel that lets you see span details, including the average duration and count for that span, in each of the releases you’ve selected. diff --git a/docs/product/performance/queries.mdx b/docs/product/performance/queries.mdx index fb998a6e400f5..c9737460926f4 100644 --- a/docs/product/performance/queries.mdx +++ b/docs/product/performance/queries.mdx @@ -103,7 +103,7 @@ A query's source is the location in your application's code that triggered the q You can see the query's source underneath the query description on the **Query Summary** page, as shown in the image below. You can also find the query's source on the [**Event Details** page](/product/sentry-basics/concepts/tracing/event-detail/) next to other span properties in the span waterfall. If you have a [source code management integration](/product/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) +![Example of Query Source](/product/performance/query-source-laravel.png) ## Sample List diff --git a/docs/product/performance/resources.mdx b/docs/product/performance/resources.mdx index 5baa5e0fdfbc4..96af0dc22c4b3 100644 --- a/docs/product/performance/resources.mdx +++ b/docs/product/performance/resources.mdx @@ -150,7 +150,7 @@ At the moment, relative resource span descriptions (ones that begin with '/') ar -![Example of Sample Images](./img/resource-sample-images.png) +![Example of Sample Images](/product/performance/resource-sample-images.png) ## Sample List diff --git a/docs/product/performance/retention-priorities/index.mdx b/docs/product/performance/retention-priorities/index.mdx index 0f5c8999aa00f..3e7665e92bcb7 100644 --- a/docs/product/performance/retention-priorities/index.mdx +++ b/docs/product/performance/retention-priorities/index.mdx @@ -80,7 +80,7 @@ Investigation rules are sampling rules that can be created through the Sentry UI When you perform a query on transactions either in [Discover](/product/discover-queries/) or in [Transaction Summary](/product/performance/transaction-summary/) and receive fewer than 5 samples, you can click "Get Samples" to create a new investigation rule to retain more samples of transactions for the respective query. -![Investigation Mode in Discover](./img/investigation-bias-discover.png) +![Investigation Mode in Discover](/product/performance/retention-priorities/investigation-bias-discover.png) @@ -90,13 +90,13 @@ Please note that this feature only applies to transactions. Therefore, in Discov Clicking this button triggers the creation of an investigation rule for the respective query. After the successful creation of the rule, a notification will appear and the button for creating the investigation rule will be replaced by a message specifying that the investigation is in progress and the amount of time since it has been active. -![Rule successfully created](./img/investigation-bias-rule-created.png) +![Rule successfully created](/product/performance/retention-priorities/investigation-bias-rule-created.png) If a user performs the same search later and the investigation is still active, the notification will indicate that there is an active rule collecting data for the query. Creating a rule is also possible from the Transaction Summary page in Performance. -![Investigation Mode in Transaction Summary](./img/investigation-bias-tx-summary.png) +![Investigation Mode in Transaction Summary](/product/performance/retention-priorities/investigation-bias-tx-summary.png) #### Notes and current limitations diff --git a/docs/product/performance/transaction-summary.mdx b/docs/product/performance/transaction-summary.mdx index 7a687ff9ecec4..b1d382cc847b0 100644 --- a/docs/product/performance/transaction-summary.mdx +++ b/docs/product/performance/transaction-summary.mdx @@ -6,7 +6,7 @@ description: "Learn more about the transaction summary, which helps you evaluate Every transaction has a summary view that gives you a better understanding of its overall health. With this view, you'll find graphs, instances of these events, stats, facet maps, related errors, and more. -![Example of Transaction Summary](./img/perf-transaction-summary.png) +![Example of Transaction Summary](/product/performance/perf-transaction-summary.png) ## What Is a Transaction? @@ -91,7 +91,7 @@ Frontend transactions will have a "Web Vitals" tab. Clicking on the tab will tak ### Distribution Histogram -![Example of Web Vitals](./img/perf-web-vitals.png) +![Example of Web Vitals](/product/performance/perf-web-vitals.png) The Web Vitals histogram displays data distribution, and it can help you identify and diagnose frontend performance problems by revealing anomalies. @@ -107,7 +107,7 @@ If you wish to see all of the data available, open the dropdown and click "View The **Tags** tab displays a list of suspect tag keys that often correspond to slower transactions. Toggle through them to have the corresponding tag values reflected in the heat map. Similar to a histogram, events are distributed by duration. Click on any purple box to view a list of events or continue to filter down the events by adding values to the filter in the table below the heat map. Use the "X-Axis" dropdown to aggregate the events by transaction duration or by Largest Contentful Paint (LCP). -![Example of Tags Tab](./img/tags-tab.png) +![Example of Tags Tab](/product/performance/tags-tab.png) ## All Events @@ -139,7 +139,7 @@ Suspect spans are determined using a span's self time rather than its duration. In the example below, the self time of each span is highlighted by the darker areas. For example, the `http.server` has a self time of 10ms + 15ms = 25ms. -![Span Self Time](./img/exclusive-time.png) +![Span Self Time](/product/performance/exclusive-time.png) ### Metrics diff --git a/docs/product/performance/trends.mdx b/docs/product/performance/trends.mdx index 1f6314f0adc55..3c72527eced79 100644 --- a/docs/product/performance/trends.mdx +++ b/docs/product/performance/trends.mdx @@ -6,7 +6,7 @@ description: "Learn more about the Trends view, which allows you to see signific From the Performance homepage, you can find the Trends View by toggling the tab in the Performance homepage's upper right corner. This page surfaces transactions that have had significant changes in their performance over time. -![trends Homepage](./img/trends.png) +![trends Homepage](/product/performance/trends.png) Trending transactions are calculated first by filtering out transactions with large [throughput](/product/performance/metrics/#throughput-total-tpm-tps) fluctuations, determining the baselines of the two halves of the duration, and calculating their percentage change. Regressions are any percentage changes greater than zero, while improvements are percentage changes less than zero. Sentry uses a [t-test](https://academic.oup.com/beheco/article/17/4/688/215960) to compare the before and after periods of the transaction and assign a confidence score. diff --git a/docs/product/performance/web-vitals.mdx b/docs/product/performance/web-vitals.mdx deleted file mode 100644 index 3205df23d6a7d..0000000000000 --- a/docs/product/performance/web-vitals.mdx +++ /dev/null @@ -1,183 +0,0 @@ ---- -title: "Web Vitals" -sidebar_order: 60 -description: "Understand the health of your application with Web Vitals by monitoring metrics such as render time, response time, and layout shift." ---- - -[Web Vitals](https://web.dev/vitals/) are a set of metrics defined by Google to measure render time, response time, and layout shift. Each data point provides insights about the overall [performance](/product/performance/) of your application. - -The in-browser Sentry SDKs collect web vitals information (where supported) and adds that information to frontend [transactions](/product/performance/transaction-summary/). These web vitals are then summarized in several graphs for a quick overview of how each frontend transaction is performing for your users. - -![Visualization of Web Vitals](./img/diagram-transaction-vitals.png) - -## Core Web Vitals - -Google considers Core Web Vitals to be the most important metrics for measuring the user experience on web pages. According to a May 2021 [Google blog post](https://developers.google.com/search/blog/2020/11/timing-for-page-experience), these metrics also impact your search ranking. - -### Largest Contentful Paint (LCP) - -[Largest Contentful Paint (LCP)](https://web.dev/lcp/) measures how long it takes for the content that covers the largest pixel area in the viewport to render - in other words, how long before a user sees the main content on a page. This content may take any form from the document object model (DOM), such as an image, SVG, or text block. - -### First Input Delay (FID) - -[First Input Delay (FID)](https://web.dev/fid/) measures response time when a user tries to interact with the viewport by clicking a button, link, or any other custom JavaScript controller. FID data is critical for understanding whether interactions on an application page are successful or not. - -### Cumulative Layout Shift (CLS) - -[Cumulative Layout Shift (CLS)](https://web.dev/cls/) is the sum of individual layout shift scores for every unexpected element shift that happens during the rendering process. An example of this would be trying to click a link on a page that hasn't finished loading and having that link shift down before you've had a chance to click on it due to image rendering issues. The CLS web vital score isn't based on duration. It represents the extent of the disruptive and visually unstable shifts. - -![Example of Cumulative Layout Shift](./img/diagram-transaction-cls.png) - -Each layout shift score is calculated using an impact and distance fraction. The impact fraction is the total visible area that the element affects between the two rendered frames. The distance fraction measures the distance it has moved relative to the viewport. - -``` -Layout Shift Score = Impact Fraction * Distance Fraction -``` - -Let’s take a look at the example above which has one unstable element - the body text. The impact fraction is roughly 50% of the page and moves the body text down by 20%. The layout shift score is 0.1, the product of 0.5\*0.2. Thus, CLS is 0.1. - -## Other Web Vitals - -These Web Vitals are generally less user-visible, but are useful for troubleshooting issues with the Core Web Vitals. - -### First Paint (FP) - -First Paint (FP) measures the amount of time the first pixel takes to appear in the viewport, rendering any visual change from what was previously displayed. This may be in any form from the document object model (DOM), such as background color, canvas, or image. FP helps developers understand if anything unexpected is happening to render the page. - -### First Contentful Paint (FCP) - -[First Contentful Paint (FCP)](https://web.dev/fcp/) measures the time for the first content to render in the viewport. This may be in any form from the document object model (DOM), such as images, SVGs, or text blocks. FCP frequently overlaps with First Paint (FP). FCP helps developers understand how long it takes before the user sees any content change on the page. - -### Time To First Byte (TTFB) - -[Time To First Byte (TTFB)](https://web.dev/time-to-first-byte/) measures the time that it takes for a user's browser to receive the first byte of page content. TTFB helps developers understand whether their slowness is caused by the initial response or instead due to render-blocking content. - -## Thresholds - -Google's "Good", "Needs Improvement", and "Poor" thresholds are used to classify data points into green, yellow, and red for the corresponding Web Vitals. "Needs improvement" is referred to as "Meh" in Sentry. - -| Web Vital | Good | Meh | Poor | -| --------------------------------------------------------------- | -------- | -------- | ------- | -| [Largest Contentful Paint](#largest-contentful-paint-lcp) (LCP) | <= 2.5s | <= 4s | > 4s | -| [First Input Delay](#first-input-delay-fid) (FID) | <= 100ms | <= 300ms | > 300ms | -| [Cumulative Layout Shift](#cumulative-layout-shift-cls) (CLS) | <= 0.1 | <= 0.25 | > 0.25 | -| [First Paint](#first-paint-fp) (FP) | <= 1s | <= 3s | > 3s | -| [First Contentful Paint](#first-contentful-paint-fcp) (FCP) | <= 1s | <= 3s | > 3s | -| [Time To First Byte](#time-to-first-byte-ttfb) (TTFB) | <= 100ms | <= 200ms | > 600ms | - - - -Some Web Vitals such as FP, FCP, LCP, and TTFB are measured relative to the start of the transaction. Values may differ when compared to values generated with other tools such as [Lighthouse](https://github.com/GoogleChrome/lighthouse). - - - -## Web Vitals Page - -The **Web Vitals** page, nested under the **Performance** page, gives you an overview of your page load performance for the selected project(s). You can use this page as a starting point to investigate poor Web Vitals affecting your web application and drill down to better understand which pages are affecting your web performance the most. - -In the top left, the [Performance Score](#performance-score) ring shows the overall performance rating of your application. Each component of the ring represents a single Web Vital and its relative weight and impact on the Performance Score. The area chart on the right shows you a breakdown - by Web Vitals - of your performance score over time. - -Below this, you can see your application's average vital values and the individual scores for each Web Vital. These metrics can help you prioritize which Web Vitals need attention most. Click on a Web Vital to open a more detailed summary of that metric and see which pages have the most [opportunity](#opportunity) for improvement. - -At the bottom of the **Web Vitals** page, a sortable table shows a list of your application's pages, along with their associated average values for each Web Vital. Each page also has its own individual Performance Score. The Opportunity column displays a page score's potential improvement to your application's overall Performance Score if maximized to 100. The search bar above this table allows you to filter for specific pages by route name. - - - -The **Web Vitals** page only displays data from your application's initial page load transactions. Navigations are not included. - - - -
- -
- -## Page Overview - -From the table in **Web Vitals** or a Web Vital Summary panel, click on a page to open its **Page Overview**. Here, you can see summary of that single page's Web Vitals. In **Page Overview**, you can further drill down to a specific page load sample [Event](/product/sentry-basics/concepts/tracing/event-detail/), [Replay](/product/session-replay/), or [Profile](/product/profiling/). - -The **Page Overview** page displays a "Page Loads" chart in the right sidebar of the page. A mini **Aggregate Span Waterfall** is also displayed in the right sidebar, which shows you common span paths that your application's page may take. Click the "View Full Waterfall" button or the "Aggregate Spans" tab at the top of the page to see the full **Aggregate Span Waterfall**. - -
- -
- -### Samples List - -At the center of the **Page Overview**, Web Vital average values and scores are displayed. Clicking a Web Vital score will open a slideout panel containing a variety of **Page Load** samples with good to poor scores. Each sample contains an **Event ID** that can be clicked to open the [Event Detail](/product/sentry-basics/concepts/tracing/event-detail/) page for further investigation. If there is a [Replay](/product/session-replay/) or [Profile](/product/profiling/) associated with the sample page load, links will be included in the associated table columns. - -
- -
- -## Performance Score - -**Performance Score** is a rating from 0 to 100 that summarizes the perceived performance of your web application. Each page load on your web application that gets sent to Sentry is scored based on its **Web Vitals**. These scores are aggregated to provide a score for each of your pages and an overall score for your application. - -The **Performance Score** is comprised of 5 individual **Web Vital** components. Each **Web Vital** is given a rating from 0 to 100 through a [Log-Normal Distribution](https://www.desmos.com/calculator/o98tbeyt1t). Each **Web Vital** rating is given a weight, which is summed up to create the overall **Performance Score** with a maximum value of 100. Some browsers may not support all the **Web Vitals** used in Sentry's **Performance Score** calculation, so weights are dynamically adjusted depending on which **Web Vitals** are available on a page load. The default weight as well as the p90 and p50 distribution values for each **Web Vital** can be found in the table below. - -| Web Vital | P90 | P50 | Weight | -| --------------------------------------------------------------- | ------------------------------------------------------ | ------------------------------------------------------ | ------ | -| [Largest Contentful Paint](#largest-contentful-paint-lcp) (LCP) | [1200ms](https://www.desmos.com/calculator/ejhjazajbd) | [2400ms](https://www.desmos.com/calculator/ejhjazajbd) | 30% | -| [First Input Delay](#first-input-delay-fid) (FID) | [100ms](https://www.desmos.com/calculator/vy5qiu1idj) | [300ms](https://www.desmos.com/calculator/vy5qiu1idj) | 30% | -| [Cumulative Layout Shift](#cumulative-layout-shift-cls) (CLS) | [0.1](https://www.desmos.com/calculator/irdoqfftdf) | [0.25](https://www.desmos.com/calculator/irdoqfftdf) | 15% | -| [First Contentful Paint](#first-contentful-paint-fcp) (FCP) | [900ms](https://www.desmos.com/calculator/gcxbiypuuh) | [1600ms](https://www.desmos.com/calculator/gcxbiypuuh) | 15% | -| [Time To First Byte](#time-to-first-byte-ttfb) (TTFB) | [200ms](https://www.desmos.com/calculator/ykzahw9goi) | [400ms](https://www.desmos.com/calculator/ykzahw9goi) | 10% | - -Performance Scores are currently only supported on desktop web browsers. Find out which Web Vitals are required to calculate Performance Scores in the [Browser Support](#browser-support) table. - -## Opportunity - -**Opportunity** scores are number values associated with each page and are meant to give you a sense of which pages are most valuable to improve. The Opportunity score is the maximum possible increase to your application's overall Performance Score if you were to raise a page's score to 100. If a page in your application already has a score of 100, the Opportunity score would be 0, since there's no way to further optimize this page. - -Opportunity score calculation is also weighted based on the traffic that a page sees. Pages with high traffic tend to have higher Opportunity scores. For example, a page with a score of 70 that experiences 1000 page loads a day will have a higher Opportunity score than a page with a score of 50 that experiences only 10 page loads a day. - -## Distribution Histogram - -![Example of Web Vitals](./img/perf-web-vitals.png) - -The Web Vitals histogram displays data distribution, and it can help you identify and diagnose frontend performance problems by revealing anomalies. - -By default, outliers will be excluded from the histograms to provide a more informative view of these vitals. Outliers are determined using the [upper outer fence](https://en.wikipedia.org/wiki/Outlier#Tukey's_fences) as the upper bound, and any data points above the upper bound are deemed an outlier. - -The vertical marker for each Web Vital is the 75th percentile of the observed data points. In other words, 25% of the recorded values exceed that amount. - -If you notice a region of interest on any of the histograms, click and drag over the area to zoom in for a more detailed view. You may also want to see more information related to the transactions in the histograms. Click "Open in Discover" beneath the Web Vital of choice to build a custom query for further investigation. For more details, see the full documentation for the Discover [Query Builder](/product/discover-queries/query-builder/). - -If you wish to see all of the data available, open the dropdown and click "View All". You will likely see extreme outliers when you click "View All". You can click and drag over an area to zoom in for a more detailed view. - -## Browser Support - -| Web Vital | Chrome | Edge | Opera | Firefox | Safari | IE | -| --------------------------------------------------------------- | ------ | ---- | ----- | ------- | ------ | --- | -| [Largest Contentful Paint](#largest-contentful-paint-lcp) (LCP) | ✓\* | ✓\* | ✓\* | ✓ | | | -| [First Input Delay](#first-input-delay-fid) (FID) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | -| [Cumulative Layout Shift](#cumulative-layout-shift-cls) (CLS) | ✓\* | ✓\* | ✓\* | | | | -| [First Paint](#first-paint-fp) (FP) | ✓ | ✓ | ✓ | | | | -| [First Contentful Paint](#first-contentful-paint-fcp) (FCP) | ✓\* | ✓\* | ✓\* | ✓\* | ✓\* | | -| [Time To First Byte](#time-to-first-byte-ttfb) (TTFB) | ✓\* | ✓\* | ✓\* | ✓\* | ✓\* | ✓ | - -\* These Web Vitals are required to calculate [Performance Scores](#performance-score), based on the clients browser. Some browsers may not always send all Web Vitals depending on the web page and/or browser version. Page loads that are missing required Web Vitals are not scored due to low data quality. diff --git a/docs/product/performance/web-vitals/index.mdx b/docs/product/performance/web-vitals/index.mdx index 7e70192d9612f..b2ad400d594e3 100644 --- a/docs/product/performance/web-vitals/index.mdx +++ b/docs/product/performance/web-vitals/index.mdx @@ -117,7 +117,7 @@ Opportunity score calculation is also weighted based on the traffic that a page ## Distribution Histogram -![Example of Web Vitals](../img/perf-web-vitals.png) +![Example of Web Vitals](/product/performance/perf-web-vitals.png) The Web Vitals histogram displays data distribution, and it can help you identify and diagnose frontend performance problems by revealing anomalies. diff --git a/docs/product/performance/web-vitals/web-vitals-concepts.mdx b/docs/product/performance/web-vitals/web-vitals-concepts.mdx index 1c5193b24292b..3147d9b1239ef 100644 --- a/docs/product/performance/web-vitals/web-vitals-concepts.mdx +++ b/docs/product/performance/web-vitals/web-vitals-concepts.mdx @@ -12,7 +12,7 @@ On March 12, 2024, Google replaced [First Input Display (FID)](#first-input-dela The in-browser Sentry SDKs collect web vitals information (where supported) and adds that information to frontend [transactions](/product/performance/transaction-summary/). These web vitals are then summarized in the [**Performance > Web Vitals** page](/product/performance/web-vitals/) to give you a quick overview of how each page is performing for your users. -![Visualization of Web Vitals](../img/diagram-transaction-vitals.png) +![Visualization of Web Vitals](/product/performance/diagram-transaction-vitals.png) ## Core Web Vitals @@ -34,7 +34,7 @@ On March 12, 2024, Interaction to Next Paint (INP) replaced First Input Display [Cumulative Layout Shift (CLS)](https://web.dev/cls/) is the sum of individual layout shift scores for every unexpected element shift that happens during the rendering process. An example of this would be trying to click a link on a page that hasn't finished loading and having that link shift down before you've had a chance to click on it due to image rendering issues. The CLS web vital score isn't based on duration. It represents the extent of the disruptive and visually unstable shifts. -![Example of Cumulative Layout Shift](../img/diagram-transaction-vitals.png) +![Example of Cumulative Layout Shift](/product/performance/diagram-transaction-cls.png) Each layout shift score is calculated using an impact and distance fraction. The impact fraction is the total visible area that the element affects between the two rendered frames. The distance fraction measures the distance it has moved relative to the viewport. diff --git a/docs/product/profiling/differential-flamegraphs.mdx b/docs/product/profiling/differential-flamegraphs.mdx index d1ec179c62dd6..bc08831dd2a79 100644 --- a/docs/product/profiling/differential-flamegraphs.mdx +++ b/docs/product/profiling/differential-flamegraphs.mdx @@ -20,13 +20,13 @@ In a differential flamegraph, the color red means that a function's execution ti Be on the lookout for red frames when interpreting differential flamegraphs. They're the reason why your application code has been performing worse. -![Differential flamegraph lock contention](./img/differential-flamegraph.png) +![Differential flamegraph lock contention](/product/profiling/differential-flamegraph.png) The differential flamegraph above is showing that the function call to `ModuleLock.acquire` has increased in duration, hinting at a lock contention problem which is slowing down the code. Let's look at another example: -![Differential flamegraph new functions](./img/differential-flamegraph-new.png) +![Differential flamegraph new functions](/product/profiling/differential-flamegraph-new.png) The above differential flamegraph shows that new function calls to `OrganizationTeamsEndpoint.dispatch` were introduced, which made the code run slower, while calls to `ChunkUploadEndpoint.get` decreased. @@ -35,11 +35,11 @@ If you look closely, you'll notice that the top right corner has a `Before -> Af `` Here's an example of what our module lock problem looks like when using the profiling data from after the regression has occurred as the source of truth: -![Differential flamegraph new functions](./img/differential-flamegraph-regular.png) +![Differential flamegraph new functions](/product/profiling/differential-flamegraph-regular.png) And here's what it looks like if we're using the data from before the regression occurred as our source of truth: -![Differential flamegraph new functions](./img/differential-flamegraph-inverted.png) +![Differential flamegraph new functions](/product/profiling/differential-flamegraph-inverted.png) By using the `Before -> After` toggle we can see that `ModuleLock.acquire` was faster before the regression, but we can also see some of the function calls inside our `ChunkUploadEndpoint`, which are no longer being called. @@ -47,6 +47,6 @@ While differential flamegraphs in Sentry use a different color scheme and pull f The table under the differential flamegraph shows both the largest increases and the largest decreases in function duration. -![Differential flamegraph table](./img/differential-flamegraph-table.png) +![Differential flamegraph table](/product/profiling/differential-flamegraph-table.png) Differential flamegraphs are a good way to quickly visualize potential sources of performance regressions or improvements. Currently, they're only available as part of the automated function regression workflow, but we're working on adding them to other parts of the profiling workflow. diff --git a/docs/product/profiling/flame-charts-graphs.mdx b/docs/product/profiling/flame-charts-graphs.mdx index d7b9b60c0524c..4f92d1127debf 100644 --- a/docs/product/profiling/flame-charts-graphs.mdx +++ b/docs/product/profiling/flame-charts-graphs.mdx @@ -10,7 +10,7 @@ Profiling data can be used to gain insight into what methods and lines of your c Flame graphs show stack samples in chronological order over the duration of a single profile. Each rectangle in the visualization represents a stack frame. The X-axis on a flame graph represents time, while the Y-axis shows the execution stack at that time. This makes it possible to see what your program was executing at any given point while the profile was being collected. -![Profiling details page with a flame graph](./img/profile-flame-chart.png) +![Profiling details page with a flame graph](/product/profiling/profile-flame-chart.png) The most important things to look at when interpreting flame graphs are the **color** and **width** of the rectangle representing each frame on the stack. @@ -30,7 +30,7 @@ Function total time refers to how long it takes for a function _and all of its c Let's look at an example to understand the difference. -![A flame graph from Sentry](./img/flame-chart.png) +![A flame graph from Sentry](/product/profiling/flame-chart.png) This image shows a section of a flame graph, starting with the function `OffsetPaginator.get_result`, which takes 2.14s to execute. 2.14s is the function's **total time**. Looking further down the stack, you can see that nearly the full 2.14s is taken up by the child function, `CursorWrapper.execute`, which executes a slow database query. @@ -44,9 +44,9 @@ As with flame graphs, each rectangle represents a stack frame, but in aggregated Aggregating stacks this way helps you find performance optimizations by visualizing the code that most frequently occupies your program's call stack. -![A flame graph showing a program that generates the fibonacci sequence](./img/fib-flame-chart.png) +![A flame graph showing a program that generates the fibonacci sequence](/product/profiling/fib-flame-chart.png) -![An aggregated flame graph showing a program that generates the fibonacci sequence](./img/fib-flame-graph.png) +![An aggregated flame graph showing a program that generates the fibonacci sequence](/product/profiling/fib-flame-graph.png) _The same profile data, visualized in a aggregated flame graph on top and a flame graph on the bottom._ @@ -58,4 +58,4 @@ The first aggregated flame graph above is shown "flames down", and the second ag In sentry.io, aggregated flame graphs are displayed on your profile summary page. The aggregated flame graphs on this page are created using data from many different profiles so that you can see the most common performance bottlenecks in your program. -![The aggregated flame graph view](./img/aggregated-flame-graph-view.png) +![The aggregated flame graph view](/product/profiling/aggregated-flame-graph-view.png) diff --git a/docs/product/profiling/index.mdx b/docs/product/profiling/index.mdx index 1d74cdf727a96..d1d6fa514f18d 100644 --- a/docs/product/profiling/index.mdx +++ b/docs/product/profiling/index.mdx @@ -33,19 +33,19 @@ Sentry profiling supports common platforms for both Mobile and Backend applicati Sentry profiling data is structured as an extension of performance transactions. This means you can "zoom in" on transactions to see their profiles directly by clicking on any transaction on the **Performance** page. -![Performance page](./img/performance-page.png) +![Performance page](/product/profiling/performance-page.png) This will take you to the **Transaction Summary** page where you'll see a list of transaction events. -![Transaction Summary page](./img/transaction-summary-page.png) +![Transaction Summary page](/product/profiling/transaction-summary-page.png) Transaction events that have a profile contain a link in the "Profile" column which will take you to a flame graph with details about that event. Learn how to read [Flame Graphs and Aggregated Flame Graphs](/product/profiling/flame-charts-graphs). -![Profile details page showing a flame graph](./img/profile-details-flame-chart.png) +![Profile details page showing a flame graph](/product/profiling/profile-details-flame-chart.png) Alternatively, if you click on the "Event ID" for a transaction, you'll see a span waterfall where you can identify suspect spans - operations that may be impacting performance, including slow DB queries and HTTP requests. You can click on a span to see profile information, including the most frequently occurring code path (call stack with with exact line numbers), along with the approximate percentage of time required for that code path. -![Transaction showing call stack data from a profile](./img/call-stack-transaction.png) +![Transaction showing call stack data from a profile](/product/profiling/call-stack-transaction.png) From this view, you can also click "View Profile" to zoom in on the flame graph. @@ -53,7 +53,7 @@ From this view, you can also click "View Profile" to zoom in on the flame graph. The **Profiling** page shows a list of transactions in descending order of execution time for your selected project(s). -![Profiling page](./img/profiling-page-view.png) +![Profiling page](/product/profiling/profiling-page-view.png) The "Profiles by Percentiles" timeline chart can be used to filter the transaction data by highlighting the desired time period. Below that, there are three widgets to choose from. @@ -65,7 +65,7 @@ Using the Profiling page is typically an advanced workflow, enabling you to dire Selecting one of the transactions will take you to the **Profile Summary** page below. On this page, you can examine the aggregated information of this profile. -![Transaction Profile summary page](./img/new-transaction-profile-view.png) +![Transaction Profile summary page](/product/profiling/new-transaction-profile-view.png) While the **Profiling** page can be used to view information about the profiles in our application, the **Profile Summary** page shows aggregated information from profiles collected under a single type of transaction. diff --git a/docs/product/profiling/mobile-app-profiling/metrics.mdx b/docs/product/profiling/mobile-app-profiling/metrics.mdx index 3853d1b0583e7..9af3b3cd547f3 100644 --- a/docs/product/profiling/mobile-app-profiling/metrics.mdx +++ b/docs/product/profiling/mobile-app-profiling/metrics.mdx @@ -18,7 +18,7 @@ The amount of heap memory used by the application is recorded every 100 ms using In addition to counting the number of [slow and frozen UI frame renders](/product/performance/mobile-vitals/#slow-and-frozen-frames) for Mobile Vitals, Sentry now records the timestamp for every frame and overlays it on top of profiling flame charts: -![Sentry displays slow and frozen frames above the flamechart of a particular profile.](./img/flamechart-with-gpu-overlay.png) +![Sentry displays slow and frozen frames above the flamechart of a particular profile.](/product/profiling/mobile-app-profiling/flamechart-with-gpu-overlay.png) The profiler records the current frame rate upon start, and then any time it changes, (for example if a user puts their device into low-power mode). diff --git a/docs/product/profiling/profile-details.mdx b/docs/product/profiling/profile-details.mdx index 002bf861a8c79..5f6d7baf4ee64 100644 --- a/docs/product/profiling/profile-details.mdx +++ b/docs/product/profiling/profile-details.mdx @@ -6,7 +6,7 @@ description: "Learn more about the profile details page." Profiling data can be used to gain insight into what methods and lines of your code are slow. Each profile has a detailed view that gives information about what happened in your code while the profile was collected and offers different ways to explore your profile data. This information can be found by going to the [Profiling page](https://sentry.sentry.io/profiling/) in sentry.io, clicking on a “Transaction” and then selecting a “Profile ID.” -![Profiling details page](./img/profiling-details.png) +![Profiling details page](/product/profiling/profiling-details.png) The main visualization on this page is a flame graph. Learn more about flame graphs in [Flame Graphs and Aggregated Flame Graphs](/product/profiling/flame-charts-graphs). @@ -14,7 +14,7 @@ The main visualization on this page is a flame graph. Learn more about flame gra A flame graph can only show data from one thread at a time. You can use the thread selector dropdown to choose which thread to look at. -![Profiling flame graph thread selector](./img/thread-selector.png) +![Profiling flame graph thread selector](/product/profiling/thread-selector.png) ## Flame Graph Sorting Options @@ -26,9 +26,9 @@ Samples are displayed in chronological (call) order by default. You can change t When you use alphabetical or left heavy sorting, adjacent frames with the same name are merged and their durations are summed. This helps when your profile has a lot of tiny stacks (called “hair”) which are easier to see when summed together. -!["Hairy" flame graph](./img/flame-chart-hair.png) +!["Hairy" flame graph](/product/profiling/flame-chart-hair.png) -![Flame graph after merge](./img/flame-chart-less-hair.png) +![Flame graph after merge](/product/profiling/flame-chart-less-hair.png) _Example of a NodeJS flame graph with a lot of “hair” vs the merged visualization. Notice how the right side of the second graph is able to display the sum durations for loading our modules._ @@ -40,7 +40,7 @@ Flame graphs represent profile data with leaves either at the top or the bottom. The search bar allows you to search for function names inside the profile. It supports fuzzy search and regular expressions. -![Profile search bar](./img/search-bar.png) +![Profile search bar](/product/profiling/search-bar.png) ## Flame Graph Colors @@ -58,15 +58,15 @@ The **Color Coding** toggle offers different ways to color the flame graph: The “Minimap” shows a zoomed-out view of the profile, with the currently displayed section in a box. You can click and drag the Minimap to quickly navigate to a different part of the profile. Holding the shift key while scrolling will trigger zooming. Releasing the shift key will scroll in both vertical and horizontal directions. -![Minimap](./img/minimap.png) +![Minimap](/product/profiling/minimap.png) ## Transaction The “Transaction” section below the “Minimap” renders a tree of spans. It's the same view shown on the performance waterfall chart, but condensed to minimize white space. This view is helpful for cross-referencing profiler stack frames with span data. -![Waterfall tree view](./img/waterfall-tree.png) +![Waterfall tree view](/product/profiling/waterfall-tree.png) -![Span tree view](./img/span-tree.png) +![Span tree view](/product/profiling/span-tree.png) _Example of the waterfall vs tree span view._ @@ -78,10 +78,10 @@ By default, the table displays “Bottom Up”, which shows the leafmost functio In “Bottom Up” view, expanding a row of the table shows the function's parent functions. In “Top Down” view, expanding a row shows all the children functions that function has called (also known as callees). -![Table view](./img/table-view.gif) +![Table view](/product/profiling/table-view.gif) ## Transaction and Environment View This section of the **Profiling** page shows metadata about the transaction and device associated with this profile. -![Transaction and Environment view](./img/transaction-environment-view.png) +![Transaction and Environment view](/product/profiling/transaction-environment-view.png) diff --git a/docs/product/reference/search/index.mdx b/docs/product/reference/search/index.mdx index 4dc1903889d7b..c070eb35327ca 100644 --- a/docs/product/reference/search/index.mdx +++ b/docs/product/reference/search/index.mdx @@ -130,7 +130,7 @@ In the above example, the search query returns results which do not have message 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. -![Project selector](./img/project-selector.png) +![Project selector](/product/reference/search/project-selector.png) If you want to see data for all your projects, click "Clear" in the project selector to clear any project filters. diff --git a/docs/product/reference/search/saved-searches.mdx b/docs/product/reference/search/saved-searches.mdx index 20a61a1edda94..b20e6e25b6d20 100644 --- a/docs/product/reference/search/saved-searches.mdx +++ b/docs/product/reference/search/saved-searches.mdx @@ -7,13 +7,13 @@ description: "Learn more about default, recommended, and saved searches." Sentry allows you to save searches you've made on the **Issues** page. At the top of the page, next to the search bar, click "Custom Search" to access the "Saved Searches" sidebar. -![UI walkthrough of the Saved Searches feature.](./img/saved-searches.gif) +![UI walkthrough of the Saved Searches feature.](/product/reference/search/saved-searches.gif) ## Recommended Searches Recommended searches are common search terms that we think you're likely to use. These premade searches are listed under "Recommended Searches" in the "Saved Searches" sidebar. -![Recommended searches section in the saved searches sidebar.](./img/search-recommended.png) +![Recommended searches section in the saved searches sidebar.](/product/reference/search/search-recommended.png) ## Custom Saved Searches @@ -25,13 +25,13 @@ Organization users in all roles can create their own saved searches. These searc 3. The new search will be added to the "Saved Searches" sidebar. Click the name of the search to apply it. -![UI walkthrough of the Custom Saved Searches feature.](./img/custom-saved-searches.gif) +![UI walkthrough of the Custom Saved Searches feature.](/product/reference/search/custom-saved-searches.gif) ## Edit or Delete a Saved Search You can edit or delete any of your personal saved searches, as well as organization-wide searches if you're an organization owner or manager. To do so, hover over the search in the sidebar and click the more options icon ("...") to access the "Edit" and "Delete" buttons. -![A saved search with an open overflow menu with edit and delete options](./img/search-saved-search-edit-delete.png) +![A saved search with an open overflow menu with edit and delete options](/product/reference/search/search-saved-search-edit-delete.png) ## Set a Default Search @@ -41,8 +41,8 @@ You can set a search query as the default view you see on the **Issues** page. T 2. Click the "Set as Default" button located in the header. - ![Cursor mousing over the "Set as Default" button.](./img/set_default_search.png) + ![Cursor mousing over the "Set as Default" button.](/product/reference/search/set_default_search.png) Once defaulted, Sentry will name the search "My Default Search" and return to it whenever you navigate to the **Issues** page. -![Issues page with a default search set.](./img/my_default_search.png) +![Issues page with a default search set.](/product/reference/search/my_default_search.png) diff --git a/docs/product/relay/getting-started.mdx b/docs/product/relay/getting-started.mdx index 9b2becebaa64e..47d4864fabdf9 100644 --- a/docs/product/relay/getting-started.mdx +++ b/docs/product/relay/getting-started.mdx @@ -146,11 +146,11 @@ To register Relay with Sentry: 2. Click on _Settings_ in the main navigation for Sentry, then select _Relays_. -![](./img/add-relay-key.png) +![](/product/relay/add-relay-key.png) 3. Click _New Relay Key_ to add the key and save it: -![](./img/edit-relay-key.png) +![](/product/relay/edit-relay-key.png) This process registers Relay with Sentry so it is ready to send messages. See [Configuration Options](../options/) to learn more about Relay configuration options. diff --git a/docs/product/releases/health/index.mdx b/docs/product/releases/health/index.mdx index 16d9da8e0e6ce..c85cd16baf696 100644 --- a/docs/product/releases/health/index.mdx +++ b/docs/product/releases/health/index.mdx @@ -75,9 +75,9 @@ _Active users_ are users who started the application at least once in the last 2 Depending on your "Display" selection, the sort options for the **Releases** page change. To sort releases by active sessions, select "Sessions" in the "Display" dropdown, and to sort by active users, select "Users". -![Sort By: Active Sessions dropdown](./img/release_active_sessions.png) +![Sort By: Active Sessions dropdown](/product/releases/health/release_active_sessions.png) -![Sort By: Active Users dropdown](./img/release_active_users.png) +![Sort By: Active Users dropdown](/product/releases/health/release_active_users.png) ## Crashes @@ -99,9 +99,9 @@ You can set [crash rate alerts](/product/alerts/alert-types/#sessions-crash-rate Depending on your "Display" selection, the sort options for the **Releases** page change. To sort releases by crash free sessions, select "Sessions" in the "Display" dropdown, and to sort by crash free users, select "Users". -![Sort By: Crash Free Sessions dropdown](./img/release_crash_free_sessions.png) +![Sort By: Crash Free Sessions dropdown](/product/releases/health/release_crash_free_sessions.png) -![Sort By: Crash Free Users dropdown](./img/release_crash_free_users.png) +![Sort By: Crash Free Users dropdown](/product/releases/health/release_crash_free_users.png) @@ -122,7 +122,7 @@ Depending on the selected display option, we show either: The adoption progress bar is calculated as a percentage of sessions/users in this release compared to all releases in the project, in the last 24 hours: -![The adoption bar on the Releases page](./img/adoption_bar.png) +![The adoption bar on the Releases page](/product/releases/health/adoption_bar.png) ### Adoption Chart @@ -136,7 +136,7 @@ If you select a project that has release health configured, and there are releas Each release is represented by a line in the chart, and you can navigate to the [Release Details](/product/releases/health/release-details/) by clicking it. -![Release Adoption Chart](./img/release_adoption_chart.png) +![Release Adoption Chart](/product/releases/health/release_adoption_chart.png) The chart does not display if you don't select a project or if you select multiple projects. @@ -144,7 +144,7 @@ The chart does not display if you don't select a project or if you select multip _Adoption stage_ is a high-level overview of the usage your release is seeing relative to other releases. It is calculated every hour by processing your sessions over the last six hours: -![Adoption stage label on the Releases page.](./img/adoption-stage-label.png) +![Adoption stage label on the Releases page.](/product/releases/health/adoption-stage-label.png) diff --git a/docs/product/releases/index.mdx b/docs/product/releases/index.mdx index 3fac0e4bb4268..7823602c856da 100644 --- a/docs/product/releases/index.mdx +++ b/docs/product/releases/index.mdx @@ -19,7 +19,7 @@ Crash and app hang detection are not available for watchOS. -![View of the release index page showing each version of projects related to the release and the project details.](./img/release_index.png) +![View of the release index page showing each version of projects related to the release and the project details.](/product/releases/release_index.png) Notifying Sentry of a release enables auto discovery of which commits to associate with a release and identifies what we consider "the most recent release" when searching in [sentry.io](https://sentry.io). @@ -58,7 +58,7 @@ If you'd like to mark an issue as [resolved](/product/issues/states-triage/#reso There are several options for resolving a release issue. If you'd like to leave the issue unresolved and be notified of it the next time any event is seen in a release, click the main "Resolve" button. But if you'd like to ignore the release issue until it's seen again in your current or next release, you can select "Resolved In The next release" or "Resolved In The current release" from the dropdown. -![View of the resolve issue dropdown options on issue details.](./img/resolved_in_options.png) +![View of the resolve issue dropdown options on issue details.](/product/releases/resolved_in_options.png) ### Resolved in the Current Release diff --git a/docs/product/releases/release-details.mdx b/docs/product/releases/release-details.mdx index 81e847a16b550..833e13770d4f7 100644 --- a/docs/product/releases/release-details.mdx +++ b/docs/product/releases/release-details.mdx @@ -6,7 +6,7 @@ description: "Learn more about the details of individual releases." The **Release Details** page focuses on an individual release. Elements of the release are displayed, such as visualized trends for crashes and sessions, specifics regarding each issue, adoption graphs, and commit author breakdowns. -![View of the release details page showing a release comparison graph, issues, adoption, and other details.](./img/release_details.png) +![View of the release details page showing a release comparison graph, issues, adoption, and other details.](/product/releases/release_details.png) ## Graphs @@ -28,11 +28,11 @@ In the table below the graph, percentage-based metrics of this release are compa Click on any option in the graph legend to hide it. For example, in a "Session Count" graph, you might hide "Healthy" sessions to see "Crashed" ones in better scale. In the image below, the healthy sessions are displayed, but there are so many healthy sessions compared to all other session types that the crashed ones become invisible in the graph: -![Session count graph with healthy sessions displayed](./img/healthy_sessions_displayed.png) +![Session count graph with healthy sessions displayed](/product/releases/healthy_sessions_displayed.png) By hiding the healthy (and errored) sessions, you can actually see the very small number of crashed sessions: -![Session count graph with healthy and errored sessions hidden](./img/healthy_sessions_hidden.png) +![Session count graph with healthy and errored sessions hidden](/product/releases/healthy_sessions_hidden.png) Hover over specific dates and times in the overview graph for a quick perspective of events that crashed, behaved abnormally, errored, or are healthy, as defined for [release health](/product/releases/health/). The graph also displays markers showing adoption stage changes when you view a time period where that is applicable (and you've filtered by a single environment). diff --git a/docs/product/releases/setup/release-automation/circleci/index.mdx b/docs/product/releases/setup/release-automation/circleci/index.mdx index 40412bc12eecd..84fe2bedea42a 100644 --- a/docs/product/releases/setup/release-automation/circleci/index.mdx +++ b/docs/product/releases/setup/release-automation/circleci/index.mdx @@ -15,7 +15,7 @@ Give your new integration a name (for example, “CircleCI Deploy Integration” For more details about scopes and API endpoints, see the full documentation on [API Permissions](/api/permissions/). -![View of internal integration permissions.](./img/internal-integration-permissions.png) +![View of internal integration permissions.](/product/releases/setup/release-automation/circleci/internal-integration-permissions.png) Click "Save", then record your token, which you'll need in the next section. @@ -33,7 +33,7 @@ To access your internal integration token securely, store it as an [environment 2. Click on Environment Variables. 3. Add a new variable by clicking the "Add Variable" button and enter `SENTRY_AUTH_TOKEN` as the name and your internal integration token as the value. -![View of CircleCI environment variables.](./img/project-settings-env-var.png) +![View of CircleCI environment variables.](/product/releases/setup/release-automation/circleci/project-settings-env-var.png) The other variables do not contain sensitive information, so you'll use the environment key to define them as environment variables in your config.yml file. diff --git a/docs/product/releases/setup/release-automation/index.mdx b/docs/product/releases/setup/release-automation/index.mdx index dc49c8e287c4f..8f364157fc826 100644 --- a/docs/product/releases/setup/release-automation/index.mdx +++ b/docs/product/releases/setup/release-automation/index.mdx @@ -22,11 +22,11 @@ If you’re linking a GitHub repository, you must have Admin or Owner permission 2. Click the "Configure" button next to your instance. - ![](./img/releases-repo-integrations.png) + ![](/product/releases/setup/release-automation/releases-repo-integrations.png) 3. In the **Repositories** panel, click "Add Repository" to add any repositories from which you'd like to track commits. The integration will then send Sentry metadata (such as authors and files changed) about each commit pushed to those repositories. -![](./img/releases-repo-add.png) +![](/product/releases/setup/release-automation/releases-repo-add.png) diff --git a/docs/product/releases/setup/release-automation/jenkins/index.mdx b/docs/product/releases/setup/release-automation/jenkins/index.mdx index dc3dfe9a4ff36..d3850152f6d0e 100644 --- a/docs/product/releases/setup/release-automation/jenkins/index.mdx +++ b/docs/product/releases/setup/release-automation/jenkins/index.mdx @@ -15,7 +15,7 @@ Give your new integration a name (for example, “Jenkins Deploy Integration”) For more details about scopes and API endpoints, see the full documentation on [API Permissions](/api/permissions/). -![View of internal integration permissions.](./img/internal-integration-permissions.png) +![View of internal integration permissions.](/product/releases/setup/release-automation/jenkins/internal-integration-permissions.png) Click "Save", then record your token, which you'll need in the next section. @@ -30,7 +30,7 @@ To access your internal integration token securely in Jenkins, store it as a [cr 5. Give your credential an **ID** (for example, "sentry-auth-token") and in the **Secret** field paste your internal integration token. 6. Click **OK** to save the credentials. -![View of Jenkins add credentials.](./img/jenkins-add-credential.png) +![View of Jenkins add credentials.](/product/releases/setup/release-automation/jenkins/jenkins-add-credential.png) ## Notify Sentry of Deployment @@ -90,11 +90,11 @@ If you're using Freestyle projects, you need to add another build step after dep 1. Make sure you add a binding to map the environment variable `SENTRY_AUTH_TOKEN` to the internal integration token credential you added in the previous step. - ![View of environment variable bindings.](./img/jenkins-freestyle-bindings.png) + ![View of environment variable bindings.](/product/releases/setup/release-automation/jenkins/jenkins-freestyle-bindings.png) 2. Add the following build step after your deployment step: - ![View of jenkins freestyle shell.](./img/jenkins-freestyle-shell.png) + ![View of jenkins freestyle shell.](/product/releases/setup/release-automation/jenkins/jenkins-freestyle-shell.png) ```bash curl -sL https://sentry.io/get-cli/ | bash || true diff --git a/docs/product/releases/setup/release-automation/travis-ci/index.mdx b/docs/product/releases/setup/release-automation/travis-ci/index.mdx index 58ba0ed8bd140..b9cbce50afc0b 100644 --- a/docs/product/releases/setup/release-automation/travis-ci/index.mdx +++ b/docs/product/releases/setup/release-automation/travis-ci/index.mdx @@ -15,7 +15,7 @@ Give your new integration a name (for example, “Travis CI Deploy Integration For more details about scopes and API endpoints, see the full documentation on [API Permissions](/api/permissions/). -![View of internal integration permissions.](./img/internal-integration-permissions.png) +![View of internal integration permissions.](/product/releases/setup/release-automation/travis-ci/internal-integration-permissions.png) Click "Save", then record your token, which you'll need in the next section. @@ -33,7 +33,7 @@ To access your internal integration token securely, store it as an [environment 2. Find the "Environment Variables" section. 3. Add a new variable with `SENTRY_AUTH_TOKEN` as the name and your internal integration token as the value. -![View of Travis CI environment variables.](./img/travis-env-vars.png) +![View of Travis CI environment variables.](/product/releases/setup/release-automation/travis-ci/travis-env-vars.png) The other variables do not contain sensitive information, so you'll use the `env` key to define them as environment variables in your .travis.yml file. diff --git a/docs/product/releases/usage/archive-release.mdx b/docs/product/releases/usage/archive-release.mdx index b93f9906d80d5..7efcae2bafca5 100644 --- a/docs/product/releases/usage/archive-release.mdx +++ b/docs/product/releases/usage/archive-release.mdx @@ -10,11 +10,11 @@ Since an event received from a deleted release automatically recreates it, Sentr Archiving in [sentry.io](https://sentry.io) removes the release from the list of releases you can select to view: -![archive release ui](./img/release-archive.png) +![archive release ui](/product/releases/usage/release-archive.png) Archived releases won't show up in **Releases** unless you change the filter to display them: -![archived releases ui](./img/releases-filter-archived.png) +![archived releases ui](/product/releases/usage/releases-filter-archived.png) ## Using the CLI diff --git a/docs/product/releases/usage/restore-release.mdx b/docs/product/releases/usage/restore-release.mdx index 502f113870e0a..339842dfc2132 100644 --- a/docs/product/releases/usage/restore-release.mdx +++ b/docs/product/releases/usage/restore-release.mdx @@ -10,7 +10,7 @@ You can restore archived releases using either [sentry.io](https://sentry.io) or In [sentry.io](https://sentry.io), you can restore a release by clicking the context menu at the top of the page and selecting "Restore": -![restore release ui](./img/release-restore.png) +![restore release ui](/product/releases/usage/release-restore.png) ## Using the CLI diff --git a/docs/product/security/soc2.mdx b/docs/product/security/soc2.mdx index aa65717be29b8..d3dc3d7cb67ad 100644 --- a/docs/product/security/soc2.mdx +++ b/docs/product/security/soc2.mdx @@ -6,4 +6,4 @@ description: "Learn about where you can access Sentry's latest SOC2 report and I You can find a copy of Sentry's latest SOC2 report and ISO 27001 certificate by visiting _Your Organization's Settings_ > Legal & Compliance. You will need either the [Owner](/product/accounts/membership/#owner) or [Billing](/product/accounts/membership/#billing) role assigned to your account in order to view this report and certificate. -![SOC2](./img/soc2.png) +![SOC2](/product/security/soc2.png) diff --git a/docs/product/security/terms.mdx b/docs/product/security/terms.mdx index 5d7100812d89d..eb3e6a1c4c0a1 100644 --- a/docs/product/security/terms.mdx +++ b/docs/product/security/terms.mdx @@ -6,7 +6,7 @@ description: "Learn about Sentry's Terms of Service, Privacy Policy, Data Proces Sentry provides a way to self-serve most legal and compliance documentation for your organization. You'll find these by navigating to _Your Organization's Settings_ > Legal & Compliance. When you are logged in to your Sentry account, you will be able to review and accept these agreements as an authorized individual on behalf of your organization. -![Legal & Compliance Settings](./img/legal-and-compliance.png) +![Legal & Compliance Settings](/product/security/legal-and-compliance.png) Available legal documents include: diff --git a/docs/product/sentry-basics/concepts/dsn-explainer.mdx b/docs/product/sentry-basics/concepts/dsn-explainer.mdx index 1abb06ae3bc7c..2389d1667144d 100644 --- a/docs/product/sentry-basics/concepts/dsn-explainer.mdx +++ b/docs/product/sentry-basics/concepts/dsn-explainer.mdx @@ -26,7 +26,7 @@ If your application is shipped to client devices, if possible, we recommend havi If you're in the process of setting up a project, you can find your DSN in the installation or configuration code snippets provided in [sentry.io](https://sentry.io/) during setup: -![DSN in code snippet](./img/create-new-project-04.png) +![DSN in code snippet](/product/sentry-basics/concepts/create-new-project-04.png) You can also find the DSN in your project settings by navigating to **[Project] > Settings > Client Keys (DSN)** in [sentry.io](https://sentry.io/). diff --git a/docs/product/sentry-basics/concepts/enrich-data/index.mdx b/docs/product/sentry-basics/concepts/enrich-data/index.mdx index 020e0ee219718..702388718b005 100644 --- a/docs/product/sentry-basics/concepts/enrich-data/index.mdx +++ b/docs/product/sentry-basics/concepts/enrich-data/index.mdx @@ -36,11 +36,11 @@ Targeted alerts are key to focusing attention when your app breaks and notifying These can all come in handy in both issue and metric alerts. For instance: 1. **Issue Alerts**: The following rule will trigger a Slack message when a **certain issue** with level _error or fatal_, originating from my _EMEA_ releases in my _prod_ environment, impacts more than _50 enterprise_ end-users in _one hour_: - ![Issue alert configuration for the example rule.](./img/002.png) + ![Issue alert configuration for the example rule.](/product/sentry-basics/concepts/enrich-data/002.png) 2. **Metric Alerts**: The following rule will trigger a Slack message if more than _50 enterprise_ end-users in _one hour_ are impacted by _warning_ level errors (**from multiple issues**) originating from my _EMEA_ releases in my _prod_ environment: - ![Metric alert configuration for the example rule](./img/006.png) + ![Metric alert configuration for the example rule](/product/sentry-basics/concepts/enrich-data/006.png) Learn more in [Alerts](/product/alerts/). @@ -52,7 +52,7 @@ On the **Issues** page, custom data allows you to: - Sort issues by the number of (unique) impacted `users`. - Search through issues by your `custom tags`, `user context` attributes, and `release` ids in the issue search bar. -![Issues View](./img/003.png) +![Issues View](/product/sentry-basics/concepts/enrich-data/003.png) Learn more in [Search](/product/sentry-basics/search/). @@ -62,7 +62,7 @@ Discover is a powerful query engine that builds upon your data, allowing you to For instance, the Discover query below displays all the errors (total of 143 events) that occurred in the _production environment_, distributed by the _customer-type custom tag_, and ordered by the _uniquely impacted end users_. -![Discover Query](./img/004.png) +![Discover Query](/product/sentry-basics/concepts/enrich-data/004.png) Learn more in [Discover](/product/discover-queries/). @@ -70,7 +70,7 @@ Learn more in [Discover](/product/discover-queries/). Ownership Rules allow you to target email notifications and automatically assign issues to members in your project teams by defining rules in your project settings or using code owners functionality. Ownership rules can be defined based on an error's origin `URL`, the `path` of the files in the error's stack-trace, or an error's `tag` value. -![Issue Owner Tag Rule](./img/005.png) +![Issue Owner Tag Rule](/product/sentry-basics/concepts/enrich-data/005.png) Code owners functionality lets you import your GitHub or GitLab CODEOWNERS file, and then we assign issues according to those file paths. @@ -85,6 +85,6 @@ Configuring the release version ID on the SDK will associate every error that ha 3. **Regression Notifications** - If you marked an issue as resolved in a release and new events are still occurring in that same release or any future releases, Sentry will consider that a regression and will notify you. 4. **Release Health** - Sentry can monitor the [health](/product/releases/health/) of your releases by observing various metrics like user adoption, crash-free users and sessions, and others. (Not all release health features are available on all SDKs that support release health.) -![Release](./img/001.png) +![Release](/product/sentry-basics/concepts/enrich-data/001.png) Learn more in [Releases](/product/releases/). diff --git a/docs/product/sentry-basics/concepts/environments/index.mdx b/docs/product/sentry-basics/concepts/environments/index.mdx index bef414a29e19b..021f1454fb324 100644 --- a/docs/product/sentry-basics/concepts/environments/index.mdx +++ b/docs/product/sentry-basics/concepts/environments/index.mdx @@ -10,7 +10,7 @@ Environments help you better filter issues, releases, and user feedback in the * Use projects to separate different services or applications, and environments to separate different environments or release stages within each. If you've selected one or more projects in the filters of Sentry's web UI, the environment selector shows only environments associated with events from the selected projects. -![All Envs dropdown](./img/sentry-env.png) +![All Envs dropdown](/product/sentry-basics/concepts/environments/sentry-env.png) Environments are unique to each organization. Environment settings, however, are defined per project since you can hide environments per project. diff --git a/docs/product/sentry-basics/concepts/tracing/distributed-tracing.mdx b/docs/product/sentry-basics/concepts/tracing/distributed-tracing.mdx index 740a1f6313e78..f4ee4240345aa 100644 --- a/docs/product/sentry-basics/concepts/tracing/distributed-tracing.mdx +++ b/docs/product/sentry-basics/concepts/tracing/distributed-tracing.mdx @@ -40,11 +40,11 @@ A **trace** represents the record of the entire operation you want to measure or Each trace consists of one or more tree-like structures called [**transactions**](/product/performance/transaction-summary/), the nodes of which are called **spans**. In most cases, each transaction represents a single instance of a service being called, and each span within that transaction represents that service performing a single unit of work, whether calling a function within that service or making a call to a different service. Here's an example trace, broken down into transactions and spans: -![Diagram illustrating how a trace is composed of multiple transactions, and each transaction is composed of multiple spans.](./img/diagram-transaction-trace.png) +![Diagram illustrating how a trace is composed of multiple transactions, and each transaction is composed of multiple spans.](/product/sentry-basics/concepts/tracing/diagram-transaction-trace.png) Because a transaction has a tree structure, top-level spans can themselves be broken down into smaller spans, mirroring the way that one function may call a number of other, smaller functions; this is expressed using the parent-child metaphor, so that every span may be the **parent span** to multiple other **child spans**. Further, since all trees must have a single root, one span in every transaction always represents the transaction itself, with all other spans in the transaction descending from that root span. Here's a zoomed-in view of one of the transactions from the diagram above: -![Diagram illustrating the parent-child relationship between spans within a single transaction.](./img/diagram-transaction-spans.png) +![Diagram illustrating the parent-child relationship between spans within a single transaction.](/product/sentry-basics/concepts/tracing/diagram-transaction-spans.png) To make all of this more concrete, let's consider our example web app again. @@ -83,7 +83,7 @@ Each transaction would be broken down into **spans** as follows: Let's pause here to make an important point: Some, though not all, of the spans listed here in the browser transaction have a direct correspondence to backend transactions listed earlier. Specifically, each request span in the browser transaction corresponds to a separate request transaction in the backend. In this situation, when a span in one service gives rise to a transaction in a subsequent service, we call the original span a parent span to _both_ the transaction and its root span. In the diagram below, the squiggly lines represent this parent-child relationship. -![Diagram illustrating the trace-transaction-span relationship illustrated above, now applied to the example.](./img/diagram-transaction-example.png) +![Diagram illustrating the trace-transaction-span relationship illustrated above, now applied to the example.](/product/sentry-basics/concepts/tracing/diagram-transaction-example.png) In our example, every transaction other than the initial browser page-load transaction is the child of a span in another service, which means that every root span other than the browser transaction root has a parent span (albeit in a different service). diff --git a/docs/product/sentry-basics/concepts/tracing/event-detail.mdx b/docs/product/sentry-basics/concepts/tracing/event-detail.mdx index 91e8c345a6aca..0e31fd7744cc7 100644 --- a/docs/product/sentry-basics/concepts/tracing/event-detail.mdx +++ b/docs/product/sentry-basics/concepts/tracing/event-detail.mdx @@ -6,7 +6,7 @@ description: "Learn more about how to drill down into a span of a single transac From [Performance](/product/performance/) and [Discover](/product/discover-queries/), you can drill all the way down into a span for a single transaction and traverse multiple directions. This will accelerate your ability to debug slow HTTP requests, database queries, identify associated errors, and root out other bottlenecks. -![Event detail showing critical event information, breakdowns, minimaps and waterfall view](./img/transaction-detail.png) +![Event detail showing critical event information, breakdowns, minimaps and waterfall view](/product/sentry-basics/concepts/tracing/transaction-detail.png) You can get to an event detail from either a [Transaction Summary](/product/performance/transaction-summary/) or [Query Builder](/product/discover-queries/query-builder/). In [Discover](/product/discover-queries/), performing a search with the `event.type:transaction` or going into a pre-built query such as "Transactions by Volume" will generate a list of event IDs. Event IDs will be linked to open the corresponding **Event Detail** page. @@ -28,7 +28,7 @@ The trace navigator (which displays top right of the span view) is an abbreviate - **Children**: Events that the current event directly started - **Descendants**: Future generations of events created by children of this event -![Trace navigator showing related events](./img/trace-navigator.png) +![Trace navigator showing related events](/product/sentry-basics/concepts/tracing/trace-navigator.png) If a node is associated with errors, it is displayed in red and has a flame icon next to it. Click "Trace ID" to open the [Trace View](/product/sentry-basics/tracing/trace-view). @@ -36,7 +36,7 @@ If a node is associated with errors, it is displayed in red and has a flame icon The span view is a split view where the left-hand side shows the transaction’s span tree, and the right-hand side represents each span as a colored rectangle. Within the tree view, Sentry identifies spans by their `op` and `description` values. If a span doesn’t have a description, Sentry uses the span’s id as a fallback. The first span listed is always the transaction’s root span, from which all other spans in the transaction descend. -![Span detail view shows the span id, trace id, parent span id, and other data such as tags.](./img/span-detail.png) +![Span detail view shows the span id, trace id, parent span id, and other data such as tags.](/product/sentry-basics/concepts/tracing/span-detail.png) In cases where single parent-child spans are heavily nested, we may automatically group them for ease of use. This may occur with operations such as `django.middleware`. To ungroup these spans, click on the Autogroup link. @@ -44,11 +44,11 @@ In cases where single parent-child spans are heavily nested, we may automaticall The operations breakdown shows you how much time was spent in each operation within a transaction. For each operation, the breakdown displays the operation type, duration, and percentage of the total duration. -![Operations breakdown in the event detail.](./img/operations-breakdown.png) +![Operations breakdown in the event detail.](/product/sentry-basics/concepts/tracing/operations-breakdown.png) Spans can overlap, but the total duration is based on operations that do not overlap and contribute to the overall duration. You can see this illustrated in the http example below. -![Operations calculation method.](./img/operations-calc.png) +![Operations calculation method.](/product/sentry-basics/concepts/tracing/operations-calc.png) The breakdown can help you find transactions with an unusual distribution of operations, which might point to an underlying problem. @@ -76,7 +76,7 @@ You can click any part of a span row itself to investigate its details. In the d In some cases, spans may be the parent of one or more transactions, and these spans are identified by the add icon. Clicking this icon will pull in the first child transaction and display its span tree nested beneath the parent span. When that transaction is displayed, the remove icon will appear so that you can hide the transaction again. -![Adding or removing child transactions.](./img/addremove-transaction.png) +![Adding or removing child transactions.](/product/sentry-basics/concepts/tracing/addremove-transaction.png) #### Adding Query Information and Parameters to Spans diff --git a/docs/product/sentry-basics/concepts/tracing/trace-view.mdx b/docs/product/sentry-basics/concepts/tracing/trace-view.mdx index a670e548a390c..0fe708ac103d0 100644 --- a/docs/product/sentry-basics/concepts/tracing/trace-view.mdx +++ b/docs/product/sentry-basics/concepts/tracing/trace-view.mdx @@ -13,7 +13,7 @@ With the [trace](/product/sentry-basics/tracing/distributed-tracing) view, you c - [Transaction Summary](/product/performance/transaction-summary/): In the transaction summary, click the trace ID in the event table. - [Query Builder](/product/discover-queries/query-builder/): In Discover, build a query with the trace column, then click the trace ID in the resulting event table. -![Example of Trace View](./img/trace-view.png) +![Example of Trace View](/product/sentry-basics/concepts/tracing/trace-view.png) At the top, you'll find a breakdown of the number of transactions and errors in this trace and how many projects they span across. You'll also get the total duration for this trace from start to end. diff --git a/docs/product/sentry-basics/integrate-backend/capturing-errors.mdx b/docs/product/sentry-basics/integrate-backend/capturing-errors.mdx index 6488bc6502252..2bef6de3d523b 100644 --- a/docs/product/sentry-basics/integrate-backend/capturing-errors.mdx +++ b/docs/product/sentry-basics/integrate-backend/capturing-errors.mdx @@ -22,11 +22,11 @@ The Sentry SDK will automatically capture and report any _unhandled error_ that 3. Notice the unhandled exception appears in the list of issues. - ![Unhandled Issue](./img/unhandled_issue.png) + ![Unhandled Issue](/product/sentry-basics/integrate-backend/unhandled_issue.png) 4. Click on the issue, to open the **Issue Details** page. - ![Issue Details Page](./img/error_with_all_tags.png) + ![Issue Details Page](/product/sentry-basics/integrate-backend/error_with_all_tags.png) 5. Notice that the event: @@ -34,7 +34,7 @@ The Sentry SDK will automatically capture and report any _unhandled error_ that - Contains a suspect commit, made possible because of the commit tracking feature we enabled previously - Contains the custom breadcrumb we added through the SDK - ![Unhandled Breadcrumbs](./img/unhandled_issue_breadcrumbs.png) + ![Unhandled Breadcrumbs](/product/sentry-basics/integrate-backend/unhandled_issue_breadcrumbs.png) ## Handled Errors @@ -50,7 +50,7 @@ The Sentry SDK contains several methods that you can use to **explicitly** repor 2. The method is used to capture the exception handled by the except clause in `HandledErrorView`: - ![Import and Configure SDK](./img/capture_exception.png) + ![Import and Configure SDK](/product/sentry-basics/integrate-backend/capture_exception.png) 3. To try it out on your localhost, trigger the following endpoint: `http://localhost:8000/handled`. @@ -58,7 +58,7 @@ The Sentry SDK contains several methods that you can use to **explicitly** repor 5. Notice that the event is tagged with the same `environment` and `release` configuration options. Hover over the "i" icon in the release tag to reveal the release information and the commits associated with it. - ![Handled release](./img/handled_release.png) + ![Handled release](/product/sentry-basics/integrate-backend/handled_release.png) 6. Click on the release's "i" icon to navigate to the release page. @@ -78,7 +78,7 @@ Typically, `capture_message` is not emitted, but there are times when a develope 4. As before, open the new issue’s detail page from the **Issues** page. - ![Import and Configure SDK](./img/capture_message.png) + ![Import and Configure SDK](/product/sentry-basics/integrate-backend/capture_message.png) > By default captured messages are marked with a severity level tag `level:info`, as reflected in the tags section. However, the `capture_message` methods accept an **optional** severity level parameter. @@ -121,7 +121,7 @@ To enrich the data of the message events we've captured with `capture_message`: - The **user email** is now displayed on the details page and the number of unique users impacted by this event is reflected in the issue's header. - The **custom tag** is now available (and searchable) in the list of tags. - ![Enriched Event Data](./img/enriched_data_1.png) + ![Enriched Event Data](/product/sentry-basics/integrate-backend/enriched_data_1.png) - The **extra data** we set on the SDK is reflected in the "ADDITIONAL DATA" context. - ![Enriched Event Data 2](./img/enriched_data_2.png) + ![Enriched Event Data 2](/product/sentry-basics/integrate-backend/enriched_data_2.png) diff --git a/docs/product/sentry-basics/integrate-backend/configuration-options.mdx b/docs/product/sentry-basics/integrate-backend/configuration-options.mdx index 9613b30abea68..61202ab1a788c 100644 --- a/docs/product/sentry-basics/integrate-backend/configuration-options.mdx +++ b/docs/product/sentry-basics/integrate-backend/configuration-options.mdx @@ -22,7 +22,7 @@ To set up the release in this project: 2. Open the `Makefile` you ran in the previous tutorial. - ![Makefile](./img/makefile.png) + ![Makefile](/product/sentry-basics/integrate-backend/makefile.png) 3. Notice that we're setting the release version name as an environment variable that is then used in the application's runtime. We're letting the CLI propose a release version name, but you'd probably want to apply your naming conventions: diff --git a/docs/product/sentry-basics/integrate-backend/getting-started.mdx b/docs/product/sentry-basics/integrate-backend/getting-started.mdx index b1075381849f0..ec013c816396f 100644 --- a/docs/product/sentry-basics/integrate-backend/getting-started.mdx +++ b/docs/product/sentry-basics/integrate-backend/getting-started.mdx @@ -34,7 +34,7 @@ If you're using your own source code, you can skip this tutorial and either: 3. Once the fork is complete, click on "Clone or download" and copy the repository URL. You can do this using HTTPS, SSH or via GitHub CLI. - ![Clone Repository](./img/fork_n_clone.png) + ![Clone Repository](/product/sentry-basics/integrate-backend/fork_n_clone.png) 4. Clone the forked repository to your local environment: @@ -123,7 +123,7 @@ To build and run the demo application on your localhost: 9. To execute the `sentry-cli` commands, follow the instructions described [here](/product/sentry-basics/integrate-frontend/upload-source-maps/#step-1-prepare-the-build-environment) to obtain the values for your `SENTRY_AUTH_TOKEN`, `SENTRY_ORG`, and `SENTRY_PROJECT` environment variables. - ![Makefile Config](./img/makefile_config.png) + ![Makefile Config](/product/sentry-basics/integrate-backend/makefile_config.png) > The sentry-cli can be configured by providing these values either through environment variables or through a dedicated configuration file. Learn more in [Sentry CLI > Configuration and Authentication](/product/cli/configuration/). @@ -133,7 +133,7 @@ To build and run the demo application on your localhost: make deploy ``` - ![Deploy & Serve](./img/run_django_server.png) + ![Deploy & Serve](/product/sentry-basics/integrate-backend/run_django_server.png) > In the terminal, notice that a new release is created and commits are associated with it. Once the deploy finishes successfully, you'll see the confirmation in your terminal diff --git a/docs/product/sentry-basics/integrate-frontend/configure-scms.mdx b/docs/product/sentry-basics/integrate-frontend/configure-scms.mdx index 5fa30622475b3..56db9050aaa39 100644 --- a/docs/product/sentry-basics/integrate-frontend/configure-scms.mdx +++ b/docs/product/sentry-basics/integrate-frontend/configure-scms.mdx @@ -24,7 +24,7 @@ Use Sentry's GitHub integration to link your source code repository to your Sent 1. Fill out the information requested to add a code mapping between your Sentry project and the `frontend-tutorial` repository's `main` or `master` branch. Tell Sentry that your components live in the `src/` directory: - ![Add code mapping](./img/configure-scms-09.png) + ![Add code mapping](/product/sentry-basics/integrate-frontend/configure-scms-09.png) ### UI Walkthrough @@ -122,7 +122,7 @@ Now suspect commits and suggested assignees should start appearing on the **Issu 1. Check your email for the alert about the new error. Notice that a new "Suspect Commits" section has been added to the email. - ![Suspect Commits email](./img/issue_email_suspect_commits.png) + ![Suspect Commits email](/product/sentry-basics/integrate-frontend/issue_email_suspect_commits.png) 1. Click "View on Sentry" to open the **Issue Details** page. @@ -130,7 +130,7 @@ Now suspect commits and suggested assignees should start appearing on the **Issu 1. In the right side panel, click under "Assigned To" to open the dropdown to see suggested assignees. You'll see that the author of the suspect commit is listed as a suggested assignee for this issue. - ![Suggested Assignees](./img/suggested_assignees.png) + ![Suggested Assignees](/product/sentry-basics/integrate-frontend/suggested_assignees.png) You can assign the issue to the suggested assignee by clicking on their email. Alternatively, you can choose to assign the issue to other users or teams associated with the project. diff --git a/docs/product/sentry-basics/integrate-frontend/generate-first-error.mdx b/docs/product/sentry-basics/integrate-frontend/generate-first-error.mdx index 39d76a7ffd3c3..687d63de67e97 100644 --- a/docs/product/sentry-basics/integrate-frontend/generate-first-error.mdx +++ b/docs/product/sentry-basics/integrate-frontend/generate-first-error.mdx @@ -48,11 +48,11 @@ If you're using your own source code, skip this step. Instead, select your [plat - An error message "Something went wrong" displays in the app. - The error appears in the browser console. - ![Import and Configure SDK](./img/generate-first-error-01.png) + ![Import and Configure SDK](/product/sentry-basics/integrate-frontend/generate-first-error-01.png) - An alert is sent to your email address configured on Sentry notifying you about an error that occurred in your app. - ![Alert Email](./img/new_issue_email.png) + ![Alert Email](/product/sentry-basics/integrate-frontend/new_issue_email.png) ## 2. View the Error in Sentry diff --git a/docs/product/sentry-basics/integrate-frontend/initialize-sentry-sdk.mdx b/docs/product/sentry-basics/integrate-frontend/initialize-sentry-sdk.mdx index c0720b1baccc1..a9d3feb4599f4 100644 --- a/docs/product/sentry-basics/integrate-frontend/initialize-sentry-sdk.mdx +++ b/docs/product/sentry-basics/integrate-frontend/initialize-sentry-sdk.mdx @@ -109,7 +109,7 @@ In the `frontend-tutorial` project folder: The sample app should be running at [http://localhost:3000/](http://localhost:3000/) or the URL output in your terminal in the last step. - ![Sample app UX showing an online hardware store](./img/FE-tutorial-demo-app.png) + ![Sample app UX showing an online hardware store](/product/sentry-basics/integrate-frontend/FE-tutorial-demo-app.png) ## Next diff --git a/docs/product/sentry-basics/integrate-frontend/upload-source-maps.mdx b/docs/product/sentry-basics/integrate-frontend/upload-source-maps.mdx index a18c706fcf3ca..d25fc7498da3a 100644 --- a/docs/product/sentry-basics/integrate-frontend/upload-source-maps.mdx +++ b/docs/product/sentry-basics/integrate-frontend/upload-source-maps.mdx @@ -116,7 +116,7 @@ If your project has a different configuration, use the [Sentry Wizard](/platform 1. In your browser, make sure that the dev console is open and perform an "Empty Cache and Hard Reload" to make sure the updated code is being served. - ![Release Created](./img/upload-source-maps-08.png) + ![Release Created](/product/sentry-basics/integrate-frontend/upload-source-maps-08.png) 1. Generate the error again by adding products to your cart and clicking "Checkout". diff --git a/docs/product/session-replay/index.mdx b/docs/product/session-replay/index.mdx index ba3a1563708a9..ec792c4c72cf8 100644 --- a/docs/product/session-replay/index.mdx +++ b/docs/product/session-replay/index.mdx @@ -10,13 +10,13 @@ Session Replay allows you to see video-like reproductions of user sessions which Replays are integrated with other parts of the Sentry product so you can see how the user experience is impacted by errors and slow transactions. You'll see session replays associated with error events on the [Issue Details](/product/issues/issue-details/) page, and those associated with slow transactions on the [Transaction Summary](/product/performance/transaction-summary/) page. For [backend error replays](/product/session-replay/getting-started#replays-for-backend-errors), any contributing backend errors will be included in the replay's timeline, [breadcrumbs](https://docs.sentry.io/product/issues/issue-details/breadcrumbs/), and errors. -![Session Replay User Interface](./img/session-replay.png) +![Session Replay User Interface](/product/session-replay/session-replay.png) ## What Is a Session Replay? A session replay is **not** a video recording. It’s a video-like reproduction of a user session, built using the [rrweb recording library](https://www.rrweb.io/). Replays are created from snapshots of your web application’s DOM state (the browser’s in-memory representation of HTML). When each snapshot is played back, you will see a video-like recording of what the user did throughout their entire session. The user session includes any pageloads, refreshes, and navigations that happened while the user was on your site. -![Session Replay User Interface](./img/session-replay-what-is-a-replay.png) +![Session Replay User Interface](/product/session-replay/session-replay-what-is-a-replay.png) The start of a session replay recording can be triggered by: diff --git a/docs/product/session-replay/protecting-user-privacy.mdx b/docs/product/session-replay/protecting-user-privacy.mdx index e264d57ad647f..a72d4a624074d 100644 --- a/docs/product/session-replay/protecting-user-privacy.mdx +++ b/docs/product/session-replay/protecting-user-privacy.mdx @@ -22,7 +22,7 @@ To reduce the risk of Personally Identifiable Information (PII) being ingested a To see unredacted HTML content – for example, your static navigation items, menus, and links – you may additionally opt-in static HTML elements that are known not to contain PII by denoting those elements with the `sentry-unmask` class name. It’s strongly recommended not to opt-in any known, user-generated content. -![Replay PII Scrubbing example](./img/Replay-PIIScrubbing.png) +![Replay PII Scrubbing example](/product/session-replay/Replay-PIIScrubbing.png) Alternatively, you can turn off the default privacy configuration, which will cause all text nodes and images to be transferred unredacted. This is only recommended when working with static content websites known not to contain any sensitive user information. Note that when using this configuration option, failure to carefully identify HTML elements containing PII means risking sensitive content leaving the user’s browser. diff --git a/docs/product/session-replay/replay-details.mdx b/docs/product/session-replay/replay-details.mdx index 88f3d35a5580e..11617c5d11a1b 100644 --- a/docs/product/session-replay/replay-details.mdx +++ b/docs/product/session-replay/replay-details.mdx @@ -8,7 +8,7 @@ description: "Session Replay Details." Every replay has a detailed view that contains the embedded video player and rich debugging context. Playing back the video will allow you to see every user interaction in relation to console messages, DOM events, and network requests. It’s like having [DevTools](https://developer.chrome.com/docs/devtools/overview/) active for your production user sessions. Almost every component on this page is connected through timestamps. See the breakdown of each component and why it’s valuable: -![Session Replay details user interface](./img/replay-details.png) +![Session Replay details user interface](/product/session-replay/replay-details.png) - **Replay Player:** Video-like reproduction of a user session created from DOM snapshots. This is where you can visualize exactly what actions the user took during a user session, and how the website behaved within this specific user’s environment, including browser, latency, settings, and so on. Most importantly, you can see which actions lead to an error and take the guesswork out of debugging. - By default, the Session Replay SDK is configured to replace all text nodes and user input with asterisks (\*), and to remove media elements. See all privacy configuration options [here](/platforms/javascript/session-replay/privacy/). @@ -36,7 +36,7 @@ Every replay has a detailed view that contains the embedded video player and ric Share a replay at a specific timestamp with a Sentry member by clicking the “Share” button in the top-right corner of the **Replay Details** page. This allows you to share replays at the point of a critical event or user flow with other Sentry members in your organization. -![Highlight the button to share a replay](./img/replay-details-share.png) +![Highlight the button to share a replay](/product/session-replay/replay-details-share.png) ## Delete Replays @@ -46,7 +46,7 @@ Delete an individual replay by clicking the “Delete” button in the top-right Find a complete list of built-in fields and custom tags associated with a replay under the “Tags” tab next to Breadcrumbs for additional context around the replay you’re viewing. -![Highlight the button to share a replay](./img/replay-details-tags.png) +![Highlight the button to share a replay](/product/session-replay/replay-details-tags.png) ## Retention diff --git a/docs/product/session-replay/replay-page-and-filters.mdx b/docs/product/session-replay/replay-page-and-filters.mdx index 8bfc1496ef2ad..768f42adcdae5 100644 --- a/docs/product/session-replay/replay-page-and-filters.mdx +++ b/docs/product/session-replay/replay-page-and-filters.mdx @@ -28,4 +28,4 @@ Each replay will bring users to the [**Replay Details**](/product/session-replay All replays have built-in key fields, and may have [custom tags](/platforms/javascript/enriching-events/tags/) if you have them set up. The search bar operates similarly to the one in the Discover [Query Builder](/product/discover-queries/query-builder/#filter-by-search-conditions). Use it to enter these keys and assign them values. This will filter down your list of replays so you can quickly find the ones with the criteria you care about. For example, you can refine your replays search to a specific browser by using `browser.version:` as a key field and assigning the version as a value. For a list of all the built-in key fields/replay properties, check out our [Searchable Properties](/product/sentry-basics/search/searchable-properties/#replay-properties) documentation. -![Highlight the Search Filters input on the Session Replay Index Page](./img/replay-index-filtering.png) +![Highlight the Search Filters input on the Session Replay Index Page](/product/session-replay/replay-index-filtering.png) diff --git a/docs/product/stats/index.mdx b/docs/product/stats/index.mdx index d0680b0005154..8e8a000be03a5 100644 --- a/docs/product/stats/index.mdx +++ b/docs/product/stats/index.mdx @@ -14,7 +14,7 @@ The "Usage" tab shows you the events (errors and transactions) and attachments S You can see which projects have had a recent spike or are the most active and may need more attention. On this page, you can also control the date range that’s displayed, allowing you to focus on a smaller period of time or zoom out for a longer view. The page is designed for org admins, but is available to all team members. This is helpful if a team member who isn't an admin is tasked with reviewing these statistics. Also, this allows team members associated with specific projects to use this page to investigate why their events are being dropped. -![Overview of Usage Stats page](./img/usage-stats.png) +![Overview of Usage Stats page](/product/stats/usage-stats.png) With the dropdowns at the top of the page, you can set whether the page displays stats for errors, transactions, or attachments, as well as the date range. With the date selector, the time period can be set from an hour to a maximum of 90 days, and all of the page elements change dynamically when you update this setting. @@ -47,7 +47,7 @@ The table displays only the projects of the teams that you belong to, unless you The "Issues" tab shows activity about issues assigned to your team; how many new issues were detected, how many resolved issues regressed, and how they were triaged. -![The Issues Stats page](./img/issues-stats.png) +![The Issues Stats page](/product/stats/issues-stats.png) #### All Unresolved Issues @@ -75,7 +75,7 @@ The "Time to Resolution" chart shows the mean time it took for issues to be reso The "Health" tab shows information about the overall health of your projects; the crash free sessions, user misery of your team’s key transactions, the number of alerts triggered by your team’s alert rules, and the number of releases per project. -![The Health Stats page](./img/health-stats.png) +![The Health Stats page](/product/stats/health-stats.png) #### Crash Free Sessions diff --git a/docs/product/user-feedback/index.mdx b/docs/product/user-feedback/index.mdx index 8e449bc1b2276..089b471db04b8 100644 --- a/docs/product/user-feedback/index.mdx +++ b/docs/product/user-feedback/index.mdx @@ -14,7 +14,7 @@ For example, using [Session Replay](/product/session-replay/) with the User Feed The User Feedback Widget is an out-of-the-box, persistent widget you can add anywhere on your web application. It allows users to submit feedback quickly and easily any time they encounter something that isn’t working as expected. Learn more about how to install and customize it [here](https://docs.sentry.io/product/user-feedback/setup/). -![User Feedback widget.](./img/user-feedback-widget.png) +![User Feedback widget.](/product/user-feedback/user-feedback-widget.png) Feedback collected via the Feedback Widget may have some or all of the following information (depending on what you mark as required and what’s available from the error context): @@ -29,7 +29,7 @@ Feedback collected via the Feedback Widget may have some or all of the following Another way to collect feedback is by installing the Crash-Report Modal. This allows users to submit feedback after they experience an error via an automatic modal that pops up after an error occurs. Learn more about how to install and customize it [here](https://docs.sentry.io/platforms/javascript/enriching-events/user-feedback/#embeddable-javascript-widget). -![Crash-Report Modal.](./img/crash-report-user-feedback.png) +![Crash-Report Modal.](/product/user-feedback/crash-report-user-feedback.png) Feedback collected via the Crash-Report Modal will have the following information: @@ -44,13 +44,13 @@ Whether you choose to collect user feedback via the Feedback Widget, the Crash-R You can narrow down the results in the feedback list by using the project, environment, and date range filters. -![User Feedback List.](./img/user-feedback-list.png) +![User Feedback List.](/product/user-feedback/user-feedback-list.png) ## Triaging User Feedback Submissions You can either manually resolve user feedback submissions on the **User Feedback Details** view by clicking the “Resolve” button in the top-right corner, or bulk resolve by multi-selecting the feedback: -![User Feedback List Triaging.](./img/user-feedback-triaging.png) +![User Feedback List Triaging.](/product/user-feedback/user-feedback-triaging.png) You can also assign a team member to a specific user feedback submission on the **User Feedback Details** view. @@ -73,6 +73,6 @@ If you don't have Sentry's default issue alert turned on, follow these steps to 3. Choose which actions to perform in the “THEN” filter. 4. Add an alert name and owner. -![User Feedback Alert Configuration.](./img/user-feedback-alert-configuration.png) +![User Feedback Alert Configuration.](/product/user-feedback/user-feedback-alert-configuration.png) To be alerted when crash-report feedback comes in, set up Workflow Notifications as described [here](https://docs.sentry.io/product/alerts/notifications/#workflow-notifications). diff --git a/package.json b/package.json index 9520786df13a4..038d33e4e915a 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "framer-motion": "^10.12.16", "gray-matter": "^4.0.3", "hastscript": "^8.0.0", - "image-size": "^1.1.1", + "image-size": "^1.0.2", "js-cookie": "^3.0.5", "js-yaml": "^4.1.0", "mdx-bundler": "^10.0.1", @@ -75,7 +75,6 @@ "rehype-slug": "^6.0.0", "rehype-stringify": "^10.0.0", "remark-gfm": "^4.0.0", - "remark-mdx-images": "^3.0.0", "remark-parse": "^11.0.0", "remark-prism": "^1.3.6", "rss": "^1.2.2", diff --git a/platform-includes/capture-message/unreal.mdx b/platform-includes/capture-message/unreal.mdx index b7ac24fc23296..917e9e750aed4 100644 --- a/platform-includes/capture-message/unreal.mdx +++ b/platform-includes/capture-message/unreal.mdx @@ -26,7 +26,7 @@ void USomeClass::HandleScopeDelegate(USentryScope* Scope) The same result can be achieved by calling corresponding functions in blueprint: -![Capture message](./img/unreal_capture_message.png) +![Capture message](/platform-includes/capture-message/unreal_capture_message.png) @@ -78,7 +78,7 @@ void USomeClass::HandleScopeDelegate(USentryScope* Scope) The same result can be achieved by calling corresponding functions in blueprint: -![Capture event](./img/unreal_capture_event.png) +![Capture event](/platform-includes/capture-message/unreal_capture_event.png) diff --git a/platform-includes/configuration/config-intro/unity.mdx b/platform-includes/configuration/config-intro/unity.mdx index 738b3f40cba5b..7dd3eac30423d 100644 --- a/platform-includes/configuration/config-intro/unity.mdx +++ b/platform-includes/configuration/config-intro/unity.mdx @@ -8,7 +8,7 @@ On mobile, the native SDKs are configured and set up during build time and initi To provide a way to modify options programmatically, we've added `ScriptableOptionsConfiguration` to the `Options Config` tab in the Sentry editor window. -![Options Configuration](./img/unity-options-configuration.png) +![Options Configuration](/platform-includes/configuration/config-intro/unity-options-configuration.png) There are two situations when a scriptable configuration object comes into play: diff --git a/platform-includes/enriching-events/attach-screenshots/unity.mdx b/platform-includes/enriching-events/attach-screenshots/unity.mdx index 64fb0d72dd24e..b41502b5696f5 100644 --- a/platform-includes/enriching-events/attach-screenshots/unity.mdx +++ b/platform-includes/enriching-events/attach-screenshots/unity.mdx @@ -1,6 +1,6 @@ Using the editor integrations in **Tools > Sentry**: -![Options Screenshot Configuration](./img/attach-screenshot-unity-editor.png) +![Options Screenshot Configuration](/platform-includes/enriching-events/attach-screenshots/attach-screenshot-unity-editor.png) Or, like so, if you're [configuring things programatically](/platforms/unity/configuration/options/): diff --git a/platform-includes/enriching-events/attachment-upload/unreal.mdx b/platform-includes/enriching-events/attachment-upload/unreal.mdx index d6e1243fddfba..a4a8b30719572 100644 --- a/platform-includes/enriching-events/attachment-upload/unreal.mdx +++ b/platform-includes/enriching-events/attachment-upload/unreal.mdx @@ -18,4 +18,4 @@ void USomeClass::HandleScopeDelegate(USentryScope* Scope) The same result can be achieved by calling the corresponding function in blueprint: -![Upload attachmnet](./img/unreal_attachment_upload.png) +![Upload attachmnet](/platform-includes/enriching-events/attachment-upload/unreal_attachment_upload.png) diff --git a/platform-includes/enriching-events/breadcrumbs/automatic-breadcrumbs/unreal.mdx b/platform-includes/enriching-events/breadcrumbs/automatic-breadcrumbs/unreal.mdx index 1bf454b972c65..3096faf467833 100644 --- a/platform-includes/enriching-events/breadcrumbs/automatic-breadcrumbs/unreal.mdx +++ b/platform-includes/enriching-events/breadcrumbs/automatic-breadcrumbs/unreal.mdx @@ -1,3 +1,3 @@ The Unreal Engine SDK can capture certain types of breadcrumbs automatically. Those can be enabled using the Sentry configuration window at **Project Settings > Plugins > Sentry**. -![Sentry automatic breadcrumbs](./img/unreal_automatic_breadcrumbs.png) +![Sentry automatic breadcrumbs](/platform-includes/enriching-events/breadcrumbs/automatic-breadcrumbs/unreal_automatic_breadcrumbs.png) diff --git a/platform-includes/enriching-events/breadcrumbs/breadcrumbs-example/unreal.mdx b/platform-includes/enriching-events/breadcrumbs/breadcrumbs-example/unreal.mdx index ab1111b77c50b..fd102c515bfc4 100644 --- a/platform-includes/enriching-events/breadcrumbs/breadcrumbs-example/unreal.mdx +++ b/platform-includes/enriching-events/breadcrumbs/breadcrumbs-example/unreal.mdx @@ -9,4 +9,4 @@ SentrySubsystem->AddBreadcrumb("Message", "Category", "Type", AdditionalData, ES The same result can be achieved by calling corresponding function in blueprint: -![Add breadcrumb](./img/ureal_breadcrumb.png) +![Add breadcrumb](/platform-includes/enriching-events/breadcrumbs/breadcrumbs-example/ureal_breadcrumb.png) diff --git a/platform-includes/enriching-events/set-context/unreal.mdx b/platform-includes/enriching-events/set-context/unreal.mdx index cbe9a48b063a1..3484530cee2e9 100644 --- a/platform-includes/enriching-events/set-context/unreal.mdx +++ b/platform-includes/enriching-events/set-context/unreal.mdx @@ -10,6 +10,6 @@ SentrySubsystem->SetContext("Character", ContextData); The same result can be achieved by calling corresponding function in blueprint: -![Set context](./img/unreal_set_context.png) +![Set context](/platform-includes/enriching-events/set-context/unreal_set_context.png) Alternatively, this configuration can be provided to the crash reporter [during initialization](/platforms/unreal/configuration/setup-crashreporter/#configure-attributes). diff --git a/platform-includes/enriching-events/set-tag/unreal.mdx b/platform-includes/enriching-events/set-tag/unreal.mdx index 8fd82886aeee3..66b46fd63b1f0 100644 --- a/platform-includes/enriching-events/set-tag/unreal.mdx +++ b/platform-includes/enriching-events/set-tag/unreal.mdx @@ -6,10 +6,10 @@ SentrySubsystem->SetTag("tag1", "value1"); The same result can be achieved by calling corresponding function in blueprint: -![Set tag](./img/unreal_set_tag.png) +![Set tag](/platform-includes/enriching-events/set-tag/unreal_set_tag.png) Alternatively, this configuration can be provided to the crash reporter [during initialization](/platforms/unreal/configuration/setup-crashreporter/#configure-attributes). Commonly used values including `Engine version`, `Configuration`, and `Target Type`, can be promoted to tags via Sentry's configuration window by navigating to the editor's menu **Project Settings > Plugins > Sentry > Misc > Promote values to tags** and selecting the values that should be automatically added to captured events as tags. -![Configure default tags](./img/unreal_tags_setting.png) +![Configure default tags](/platform-includes/enriching-events/set-tag/unreal_tags_setting.png) diff --git a/platform-includes/enriching-events/set-user/unreal.mdx b/platform-includes/enriching-events/set-user/unreal.mdx index f893f5685e94b..578ccf13bd4d2 100644 --- a/platform-includes/enriching-events/set-user/unreal.mdx +++ b/platform-includes/enriching-events/set-user/unreal.mdx @@ -16,6 +16,6 @@ SentrySubsystem->SetUser(User); The same result can be achieved by calling corresponding function in blueprint: -![Set user](./img/unreal_set_user.png) +![Set user](/platform-includes/enriching-events/set-user/unreal_set_user.png) Alternatively, this configuration can be provided to the crash reporter [during initialization](/platforms/unreal/configuration/setup-crashreporter/#configure-attributes). diff --git a/platform-includes/enriching-events/unset-user/unreal.mdx b/platform-includes/enriching-events/unset-user/unreal.mdx index 73cc4a15f7258..1e607b326aab6 100644 --- a/platform-includes/enriching-events/unset-user/unreal.mdx +++ b/platform-includes/enriching-events/unset-user/unreal.mdx @@ -6,6 +6,6 @@ SentrySubsystem->RemoveUser(); Or in blueprint: -![Unset user](./img/unreal_unset_user.png) +![Unset user](/platform-includes/enriching-events/unset-user/unreal_unset_user.png) In configurations with a crash reporter, create a new `__sentry` config object without the `user` field. Then, call `FGenericCrashContext::SetGameData` from the [initialization function](/platforms/unreal/configuration/setup-crashreporter/#configure-attributes) with the new JSON data. You have to provide all other fields again, as the call overrides the previously registered data. diff --git a/platform-includes/getting-started-config/unity.mdx b/platform-includes/getting-started-config/unity.mdx index 98de4dbbe7870..4776c299ed3e5 100644 --- a/platform-includes/getting-started-config/unity.mdx +++ b/platform-includes/getting-started-config/unity.mdx @@ -9,6 +9,6 @@ ___PUBLIC_DSN___ Sentry can be configured via the Sentry configuration window or [programatically](/platforms/unity/configuration/options/). The window can be accessed by going to Unity's top menu: `Tools` > `Sentry`. -![Sentry window](./unity-sentry-window.png) +![Sentry window](/platform-includes/getting-started-config/unity-sentry-window.png) Sentry saves your configuration to `Assets/Resources/Sentry/SentryOptions.asset` and reads from there at runtime. diff --git a/platform-includes/getting-started-config/unreal.mdx b/platform-includes/getting-started-config/unreal.mdx index c7d4b31da2814..ba14680775959 100644 --- a/platform-includes/getting-started-config/unreal.mdx +++ b/platform-includes/getting-started-config/unreal.mdx @@ -15,7 +15,7 @@ If you are logged in, you can also go to your project settings and copy its DSN Sentry can be configured using the Sentry configuration window. The window can be accessed by going to editor's menu: **Project Settings > Plugins > Sentry**. -![Sentry settings window](./img/unreal_window.png) +![Sentry settings window](/platform-includes/getting-started-config/unreal_window.png) By default, the SDK is automatically initialized on application startup. Alternatively, the `Initialize SDK automatically` option can be disabled and in this case, explicit SDK initialization is required. diff --git a/platform-includes/getting-started-install/unreal.mdx b/platform-includes/getting-started-install/unreal.mdx index 1d5d74da5cfc0..37da1128d4a5f 100644 --- a/platform-includes/getting-started-install/unreal.mdx +++ b/platform-includes/getting-started-install/unreal.mdx @@ -26,7 +26,7 @@ This method is recommended only for Blueprint UE projects. If you already have a To make sure the Sentry plugin has been enabled after installation has been completed, go to the editor and navigate to the **Settings > Plugins > Code Plugins** menu and check for the installation. -![Sentry window](./img/unreal_plugins_window.png) +![Sentry window](/platform-includes/getting-started-install/unreal_plugins_window.png) To access the plugin API from within C++, add `Sentry` support to the build script (`MyProject.build.cs`): diff --git a/platform-includes/getting-started-verify/unity.mdx b/platform-includes/getting-started-verify/unity.mdx index f3988529f2911..8ee44df83d60c 100644 --- a/platform-includes/getting-started-verify/unity.mdx +++ b/platform-includes/getting-started-verify/unity.mdx @@ -20,4 +20,4 @@ public class TestMonoBehaviour : MonoBehaviour Additionally, the packages includes a sample called "Unity of bugs" that can optionally be imported into your project through the package manager. The samples contain a variety of common bugs, including native errors, so you don't have to write them. -![Import Samples](./img/unity-package-samples.png) +![Import Samples](/platform-includes/getting-started-verify/unity-package-samples.png) diff --git a/platform-includes/getting-started-verify/unreal.mdx b/platform-includes/getting-started-verify/unreal.mdx index 360d49f4b4dfe..c391983b72af6 100644 --- a/platform-includes/getting-started-verify/unreal.mdx +++ b/platform-includes/getting-started-verify/unreal.mdx @@ -13,4 +13,4 @@ void Verify() The same result can be achieved by calling corresponding function in blueprint: -![Sentry capture message BP](./img/unreal_bp_message.png) +![Sentry capture message BP](/platform-includes/getting-started-verify/unreal_bp_message.png) diff --git a/platform-includes/performance/automatic-instrumentation-integrations/dotnet.mdx b/platform-includes/performance/automatic-instrumentation-integrations/dotnet.mdx index fd8fe8f38aee7..3f4a5f2e8c708 100644 --- a/platform-includes/performance/automatic-instrumentation-integrations/dotnet.mdx +++ b/platform-includes/performance/automatic-instrumentation-integrations/dotnet.mdx @@ -21,7 +21,7 @@ option.AddDiagnosticSourceIntegration(); ### Entity Framework Core Integration -![Sample transaction with Entity Framework Core Integration.](./img/dotnet-ef-core-integration.png) +![Sample transaction with Entity Framework Core Integration.](/platform-includes/performance/automatic-instrumentation-integrations/dotnet-ef-core-integration.png) This integration is part of the `DiagnosticSource` integration and will automatically create spans for EF Core queries for the following operations: @@ -52,7 +52,7 @@ The parameters for this span are: ### SQLClient Integration -![Sample transaction with SQLClient Integration.](./img/dotnet-sql-client-integration.png) +![Sample transaction with SQLClient Integration.](/platform-includes/performance/automatic-instrumentation-integrations/dotnet-sql-client-integration.png) This integration is part of the DiagnosticSource integration and will automatically create spans for SQLClient operations, the integrated operations are: diff --git a/platform-includes/set-level/unreal.mdx b/platform-includes/set-level/unreal.mdx index becaf0e85a9eb..d1abd6cae17d4 100644 --- a/platform-includes/set-level/unreal.mdx +++ b/platform-includes/set-level/unreal.mdx @@ -6,4 +6,4 @@ SentrySubsystem->SetLevel(ESentryLevel::Info); The same result can be achieved by calling corresponding functions in blueprint: -![Set level](./img/unreal_set_level.png) +![Set level](/platform-includes/set-level/unreal_set_level.png) diff --git a/platform-includes/source-context/java.mdx b/platform-includes/source-context/java.mdx index ad2293807c311..76e5c5f4f11fb 100644 --- a/platform-includes/source-context/java.mdx +++ b/platform-includes/source-context/java.mdx @@ -18,7 +18,7 @@ the Sentry server to look up source code in the source bundle with a matching ID If you're using a build tool plugin, these steps happen automatically. -![Java Source Context](./img/java-source-context.png) +![Java Source Context](/platform-includes/source-context/java-source-context.png) All of the following methods require `org`, `project` and an `authToken`. diff --git a/platform-includes/sourcemaps/artifact-bundles/javascript.mdx b/platform-includes/sourcemaps/artifact-bundles/javascript.mdx index 2e0056b32d6d2..03c20444adfe1 100644 --- a/platform-includes/sourcemaps/artifact-bundles/javascript.mdx +++ b/platform-includes/sourcemaps/artifact-bundles/javascript.mdx @@ -8,7 +8,7 @@ Sentry uses **Artifact Bundles** for managing un-minification of your stack trac An artifact bundle is our new bundle format that aims to address the shortcomings of the old Release Bundles by **adding the support for Debug IDs** and **removing the need to create a `release`**. -![How Artifact Bundles Work](./artifact-bundle.png) +![How Artifact Bundles Work](/platform-includes/sourcemaps/artifact-bundles/artifact-bundle.png) Artifact Bundles solve the challenge of matching paths by using a new identification mechanism known as Debug IDs. Rather than relying on paths we uniquely identify and bind pairs of minified sources and source maps with a Debug ID (UUID). With this, we are able to quickly identify the minified source and corresponding source map without ever needing to check any paths. Thus, you don't have to worry about wrong paths configurations. diff --git a/platform-includes/sourcemaps/legacy-troubleshooting/javascript.mdx b/platform-includes/sourcemaps/legacy-troubleshooting/javascript.mdx index e60ca15eb553c..30043cc330091 100644 --- a/platform-includes/sourcemaps/legacy-troubleshooting/javascript.mdx +++ b/platform-includes/sourcemaps/legacy-troubleshooting/javascript.mdx @@ -9,7 +9,7 @@ To use the automated verification process, install and configure the Sentry [Com For example, "Event ID: c2ad049f": -![Image highlighting where to find the ID of an event on Sentry](./img/event_id.png) +![Image highlighting where to find the ID of an event on Sentry](/platform-includes/sourcemaps/troubleshooting/event_id.png) ```shell sentry-cli sourcemaps explain c2ad049fd9e448ada7849df94575e019 diff --git a/platform-includes/sourcemaps/legacy-uploading-methods/img/event_id.png b/platform-includes/sourcemaps/legacy-uploading-methods/img/event_id.png deleted file mode 100644 index 62f1b14fcffd2..0000000000000 Binary files a/platform-includes/sourcemaps/legacy-uploading-methods/img/event_id.png and /dev/null differ diff --git a/platform-includes/sourcemaps/legacy-uploading-methods/javascript.mdx b/platform-includes/sourcemaps/legacy-uploading-methods/javascript.mdx index 95be4dda57da0..8b7da4c69cbc4 100644 --- a/platform-includes/sourcemaps/legacy-uploading-methods/javascript.mdx +++ b/platform-includes/sourcemaps/legacy-uploading-methods/javascript.mdx @@ -282,7 +282,7 @@ To use the automated verification process, install and configure the Sentry [Com For example, "Event ID: c2ad049f": -![Image highlighting where to find the ID of an event on Sentry](./img/event_id.png) +![Image highlighting where to find the ID of an event on Sentry](/platform-includes/sourcemaps/troubleshooting/event_id.png) ```shell sentry-cli sourcemaps explain c2ad049fd9e448ada7849df94575e019 diff --git a/platform-includes/sourcemaps/primer/javascript.astro.mdx b/platform-includes/sourcemaps/primer/javascript.astro.mdx index c33534a466cb8..3aac2e78da2b3 100644 --- a/platform-includes/sourcemaps/primer/javascript.astro.mdx +++ b/platform-includes/sourcemaps/primer/javascript.astro.mdx @@ -1,5 +1,5 @@ The Sentry Astro SDK will generate and upload source maps automatically during a production build, so that errors in Sentry contain readable stack traces. -![Readable Stack Traces](./img/readable-stacktraces.png) +![Readable Stack Traces](/platform-includes/sourcemaps/primer/readable-stacktraces.png) The Astro SDK uses the [Sentry Vite Plugin](https://www.npmjs.com/package/@sentry/vite-plugin/) to upload source maps. See the Manual Configuration page and the Sentry [Vite plugin documentation](https://www.npmjs.com/package/@sentry/vite-plugin/#configuration) for more details. diff --git a/platform-includes/sourcemaps/primer/javascript.mdx b/platform-includes/sourcemaps/primer/javascript.mdx index f2bb309741a3c..2b4dd533c8108 100644 --- a/platform-includes/sourcemaps/primer/javascript.mdx +++ b/platform-includes/sourcemaps/primer/javascript.mdx @@ -1,3 +1,3 @@ To enable readable stack traces in your Sentry errors, you need to upload your source maps to Sentry. -![Readable Stack Traces](./readable-stacktraces.png) +![Readable Stack Traces](/platform-includes/sourcemaps/primer/readable-stacktraces.png) diff --git a/platform-includes/sourcemaps/troubleshooting/img/event_id.png b/platform-includes/sourcemaps/troubleshooting/img/event_id.png deleted file mode 100644 index 62f1b14fcffd2..0000000000000 Binary files a/platform-includes/sourcemaps/troubleshooting/img/event_id.png and /dev/null differ diff --git a/platform-includes/sourcemaps/troubleshooting/javascript.mdx b/platform-includes/sourcemaps/troubleshooting/javascript.mdx index 5935f94b3cc51..26d826e0ae7d1 100644 --- a/platform-includes/sourcemaps/troubleshooting/javascript.mdx +++ b/platform-includes/sourcemaps/troubleshooting/javascript.mdx @@ -41,7 +41,7 @@ To use the automated verification process, install and configure the Sentry [Com For example, "Event ID: c2ad049f": -![Image highlighting where to find the ID of an event on Sentry](./img/event_id.png) +![Image highlighting where to find the ID of an event on Sentry](/platform-includes/sourcemaps/troubleshooting/event_id.png) ```shell sentry-cli sourcemaps explain c2ad049fd9e448ada7849df94575e019 diff --git a/platform-includes/user-feedback/sdk-api-example/unreal.mdx b/platform-includes/user-feedback/sdk-api-example/unreal.mdx index 497a336c4b51c..e83b73336ee0e 100644 --- a/platform-includes/user-feedback/sdk-api-example/unreal.mdx +++ b/platform-includes/user-feedback/sdk-api-example/unreal.mdx @@ -18,7 +18,7 @@ SentrySubsystem->CaptureUserFeedbackWithParams(EventId, "test@sentry.io", "Some The same result can be achieved by calling corresponding functions in blueprint: -![Capture user feedback](./img/unreal_user_feedback.png) +![Capture user feedback](/platform-includes/user-feedback/sdk-api-example/unreal_user_feedback.png) diff --git a/platform-includes/user-feedback/setup-intro/ruby.rails.mdx b/platform-includes/user-feedback/setup-intro/ruby.rails.mdx index 04ade53ebc42d..fbd52a3fbbcc5 100644 --- a/platform-includes/user-feedback/setup-intro/ruby.rails.mdx +++ b/platform-includes/user-feedback/setup-intro/ruby.rails.mdx @@ -6,7 +6,7 @@ To collect feedback, the Crash-Report modal requests and collects the user's nam The screenshot below provides an example of the Crash-Report modal, though yours may differ depending on your customization: -![An example of a Crash-Report modal with text boxes for user name, email, and additional details about the break.](/img/user_feedback_widget.png) +![An example of a Crash-Report modal with text boxes for user name, email, and additional details about the break.](/platform-includes/user-feedback/setup-intro/user_feedback_widget.png) ### Integration diff --git a/docs/api/guides/img/create-internal-integration.gif b/public/api/guides/create-internal-integration.gif similarity index 100% rename from docs/api/guides/img/create-internal-integration.gif rename to public/api/guides/create-internal-integration.gif diff --git a/docs/api/guides/img/set-token-permissions.gif b/public/api/guides/set-token-permissions.gif similarity index 100% rename from docs/api/guides/img/set-token-permissions.gif rename to public/api/guides/set-token-permissions.gif diff --git a/platform-includes/capture-message/img/unreal_capture_event.png b/public/platform-includes/capture-message/unreal_capture_event.png similarity index 100% rename from platform-includes/capture-message/img/unreal_capture_event.png rename to public/platform-includes/capture-message/unreal_capture_event.png diff --git a/platform-includes/capture-message/img/unreal_capture_message.png b/public/platform-includes/capture-message/unreal_capture_message.png similarity index 100% rename from platform-includes/capture-message/img/unreal_capture_message.png rename to public/platform-includes/capture-message/unreal_capture_message.png diff --git a/platform-includes/configuration/config-intro/img/unity-options-configuration.png b/public/platform-includes/configuration/config-intro/unity-options-configuration.png similarity index 100% rename from platform-includes/configuration/config-intro/img/unity-options-configuration.png rename to public/platform-includes/configuration/config-intro/unity-options-configuration.png diff --git a/platform-includes/enriching-events/attach-screenshots/img/attach-screenshot-unity-editor.png b/public/platform-includes/enriching-events/attach-screenshots/attach-screenshot-unity-editor.png similarity index 100% rename from platform-includes/enriching-events/attach-screenshots/img/attach-screenshot-unity-editor.png rename to public/platform-includes/enriching-events/attach-screenshots/attach-screenshot-unity-editor.png diff --git a/docs/platforms/unreal/enriching-events/attachments/img/unreal_attachment_upload.png b/public/platform-includes/enriching-events/attachment-upload/unreal_attachment_upload.png similarity index 100% rename from docs/platforms/unreal/enriching-events/attachments/img/unreal_attachment_upload.png rename to public/platform-includes/enriching-events/attachment-upload/unreal_attachment_upload.png diff --git a/docs/platforms/unreal/enriching-events/breadcrumbs/img/unreal_automatic_breadcrumbs.png b/public/platform-includes/enriching-events/breadcrumbs/automatic-breadcrumbs/unreal_automatic_breadcrumbs.png similarity index 100% rename from docs/platforms/unreal/enriching-events/breadcrumbs/img/unreal_automatic_breadcrumbs.png rename to public/platform-includes/enriching-events/breadcrumbs/automatic-breadcrumbs/unreal_automatic_breadcrumbs.png diff --git a/platform-includes/enriching-events/breadcrumbs/breadcrumbs-example/img/ureal_breadcrumb.png b/public/platform-includes/enriching-events/breadcrumbs/breadcrumbs-example/ureal_breadcrumb.png similarity index 100% rename from platform-includes/enriching-events/breadcrumbs/breadcrumbs-example/img/ureal_breadcrumb.png rename to public/platform-includes/enriching-events/breadcrumbs/breadcrumbs-example/ureal_breadcrumb.png diff --git a/docs/platforms/unreal/enriching-events/context/unreal_set_context.png b/public/platform-includes/enriching-events/set-context/unreal_set_context.png similarity index 100% rename from docs/platforms/unreal/enriching-events/context/unreal_set_context.png rename to public/platform-includes/enriching-events/set-context/unreal_set_context.png diff --git a/platform-includes/enriching-events/set-tag/img/unreal_set_tag.png b/public/platform-includes/enriching-events/set-tag/unreal_set_tag.png similarity index 100% rename from platform-includes/enriching-events/set-tag/img/unreal_set_tag.png rename to public/platform-includes/enriching-events/set-tag/unreal_set_tag.png diff --git a/platform-includes/enriching-events/set-tag/img/unreal_tags_setting.png b/public/platform-includes/enriching-events/set-tag/unreal_tags_setting.png similarity index 100% rename from platform-includes/enriching-events/set-tag/img/unreal_tags_setting.png rename to public/platform-includes/enriching-events/set-tag/unreal_tags_setting.png diff --git a/docs/platforms/unreal/enriching-events/identify-user/img/unreal_set_user.png b/public/platform-includes/enriching-events/set-user/unreal_set_user.png similarity index 100% rename from docs/platforms/unreal/enriching-events/identify-user/img/unreal_set_user.png rename to public/platform-includes/enriching-events/set-user/unreal_set_user.png diff --git a/docs/platforms/unreal/enriching-events/identify-user/img/unreal_unset_user.png b/public/platform-includes/enriching-events/unset-user/unreal_unset_user.png similarity index 100% rename from docs/platforms/unreal/enriching-events/identify-user/img/unreal_unset_user.png rename to public/platform-includes/enriching-events/unset-user/unreal_unset_user.png diff --git a/public/platform-includes/getting-started-config/unity-sentry-window.png b/public/platform-includes/getting-started-config/unity-sentry-window.png new file mode 100644 index 0000000000000..da1868d578164 Binary files /dev/null and b/public/platform-includes/getting-started-config/unity-sentry-window.png differ diff --git a/docs/platforms/unreal/img/unreal_window.png b/public/platform-includes/getting-started-config/unreal_window.png similarity index 100% rename from docs/platforms/unreal/img/unreal_window.png rename to public/platform-includes/getting-started-config/unreal_window.png diff --git a/docs/platforms/unreal/img/unreal_plugins_window.png b/public/platform-includes/getting-started-install/unreal_plugins_window.png similarity index 100% rename from docs/platforms/unreal/img/unreal_plugins_window.png rename to public/platform-includes/getting-started-install/unreal_plugins_window.png diff --git a/platform-includes/getting-started-verify/img/unity-package-samples.png b/public/platform-includes/getting-started-verify/unity-package-samples.png similarity index 100% rename from platform-includes/getting-started-verify/img/unity-package-samples.png rename to public/platform-includes/getting-started-verify/unity-package-samples.png diff --git a/docs/platforms/unreal/img/unreal_bp_message.png b/public/platform-includes/getting-started-verify/unreal_bp_message.png similarity index 100% rename from docs/platforms/unreal/img/unreal_bp_message.png rename to public/platform-includes/getting-started-verify/unreal_bp_message.png diff --git a/platform-includes/performance/automatic-instrumentation-integrations/img/dotnet-ef-core-integration.png b/public/platform-includes/performance/automatic-instrumentation-integrations/dotnet-ef-core-integration.png similarity index 100% rename from platform-includes/performance/automatic-instrumentation-integrations/img/dotnet-ef-core-integration.png rename to public/platform-includes/performance/automatic-instrumentation-integrations/dotnet-ef-core-integration.png diff --git a/platform-includes/performance/automatic-instrumentation-integrations/img/dotnet-sql-client-integration.png b/public/platform-includes/performance/automatic-instrumentation-integrations/dotnet-sql-client-integration.png similarity index 100% rename from platform-includes/performance/automatic-instrumentation-integrations/img/dotnet-sql-client-integration.png rename to public/platform-includes/performance/automatic-instrumentation-integrations/dotnet-sql-client-integration.png diff --git a/platform-includes/set-level/img/unreal_set_level.png b/public/platform-includes/set-level/unreal_set_level.png similarity index 100% rename from platform-includes/set-level/img/unreal_set_level.png rename to public/platform-includes/set-level/unreal_set_level.png diff --git a/platform-includes/source-context/img/java-source-context.png b/public/platform-includes/source-context/java-source-context.png similarity index 100% rename from platform-includes/source-context/img/java-source-context.png rename to public/platform-includes/source-context/java-source-context.png diff --git a/public/platform-includes/sourcemaps/artifact-bundles/artifact-bundle.png b/public/platform-includes/sourcemaps/artifact-bundles/artifact-bundle.png new file mode 100644 index 0000000000000..bc481b9b2c2f8 Binary files /dev/null and b/public/platform-includes/sourcemaps/artifact-bundles/artifact-bundle.png differ diff --git a/platform-includes/sourcemaps/primer/img/readable-stacktraces.png b/public/platform-includes/sourcemaps/primer/readable-stacktraces.png similarity index 100% rename from platform-includes/sourcemaps/primer/img/readable-stacktraces.png rename to public/platform-includes/sourcemaps/primer/readable-stacktraces.png diff --git a/platform-includes/sourcemaps/legacy-troubleshooting/img/event_id.png b/public/platform-includes/sourcemaps/troubleshooting/event_id.png similarity index 100% rename from platform-includes/sourcemaps/legacy-troubleshooting/img/event_id.png rename to public/platform-includes/sourcemaps/troubleshooting/event_id.png diff --git a/platform-includes/user-feedback/sdk-api-example/img/unreal_user_feedback.png b/public/platform-includes/user-feedback/sdk-api-example/unreal_user_feedback.png similarity index 100% rename from platform-includes/user-feedback/sdk-api-example/img/unreal_user_feedback.png rename to public/platform-includes/user-feedback/sdk-api-example/unreal_user_feedback.png diff --git a/platform-includes/user-feedback/setup-intro/img/user_feedback_widget.png b/public/platform-includes/user-feedback/setup-intro/user_feedback_widget.png similarity index 100% rename from platform-includes/user-feedback/setup-intro/img/user_feedback_widget.png rename to public/platform-includes/user-feedback/setup-intro/user_feedback_widget.png diff --git a/docs/platforms/android/configuration/img/anr-rootcause-deadlock.png b/public/platforms/android/configuration/anr-rootcause-deadlock.png similarity index 100% rename from docs/platforms/android/configuration/img/anr-rootcause-deadlock.png rename to public/platforms/android/configuration/anr-rootcause-deadlock.png diff --git a/docs/platforms/android/configuration/img/anr-rootcause-fileio.png b/public/platforms/android/configuration/anr-rootcause-fileio.png similarity index 100% rename from docs/platforms/android/configuration/img/anr-rootcause-fileio.png rename to public/platforms/android/configuration/anr-rootcause-fileio.png diff --git a/docs/platforms/android/configuration/img/anr-rootcause-frame.png b/public/platforms/android/configuration/anr-rootcause-frame.png similarity index 100% rename from docs/platforms/android/configuration/img/anr-rootcause-frame.png rename to public/platforms/android/configuration/anr-rootcause-frame.png diff --git a/docs/platforms/android/configuration/img/app-not-respond-thread-dump.png b/public/platforms/android/configuration/app-not-respond-thread-dump.png similarity index 100% rename from docs/platforms/android/configuration/img/app-not-respond-thread-dump.png rename to public/platforms/android/configuration/app-not-respond-thread-dump.png diff --git a/docs/platforms/android/configuration/img/app-not-respond.png b/public/platforms/android/configuration/app-not-respond.png similarity index 100% rename from docs/platforms/android/configuration/img/app-not-respond.png rename to public/platforms/android/configuration/app-not-respond.png diff --git a/docs/platforms/android/data-management/debug-files/source-context/img/source-context-screenshot.png b/public/platforms/android/data-management/debug-files/source-context/source-context-screenshot.png similarity index 100% rename from docs/platforms/android/data-management/debug-files/source-context/img/source-context-screenshot.png rename to public/platforms/android/data-management/debug-files/source-context/source-context-screenshot.png diff --git a/public/img/debug-files-workflow.png b/public/platforms/android/data-management/debug-files/upload/debug-files-workflow.png similarity index 100% rename from public/img/debug-files-workflow.png rename to public/platforms/android/data-management/debug-files/upload/debug-files-workflow.png diff --git a/public/img/attachments-access-denied.png b/public/platforms/android/enriching-events/attachments/attachments-access-denied.png similarity index 100% rename from public/img/attachments-access-denied.png rename to public/platforms/android/enriching-events/attachments/attachments-access-denied.png diff --git a/public/img/attachments-access.png b/public/platforms/android/enriching-events/attachments/attachments-access.png similarity index 100% rename from public/img/attachments-access.png rename to public/platforms/android/enriching-events/attachments/attachments-access.png diff --git a/public/img/attachments-list-example.png b/public/platforms/android/enriching-events/attachments/attachments-list-example.png similarity index 100% rename from public/img/attachments-list-example.png rename to public/platforms/android/enriching-events/attachments/attachments-list-example.png diff --git a/public/img/additional_data.png b/public/platforms/android/enriching-events/context/additional_data.png similarity index 100% rename from public/img/additional_data.png rename to public/platforms/android/enriching-events/context/additional_data.png diff --git a/docs/platforms/android/enriching-events/screenshots/img/screenshot-list-example.png b/public/platforms/android/enriching-events/screenshots/screenshot-list-example.png similarity index 100% rename from docs/platforms/android/enriching-events/screenshots/img/screenshot-list-example.png rename to public/platforms/android/enriching-events/screenshots/screenshot-list-example.png diff --git a/docs/platforms/android/enriching-events/screenshots/img/screenshot-thumbnail.png b/public/platforms/android/enriching-events/screenshots/screenshot-thumbnail.png similarity index 100% rename from docs/platforms/android/enriching-events/screenshots/img/screenshot-thumbnail.png rename to public/platforms/android/enriching-events/screenshots/screenshot-thumbnail.png diff --git a/public/platforms/android/enriching-events/tags/tags.png b/public/platforms/android/enriching-events/tags/tags.png new file mode 100644 index 0000000000000..6a9901f4c4e00 Binary files /dev/null and b/public/platforms/android/enriching-events/tags/tags.png differ diff --git a/docs/platforms/android/enriching-events/viewhierarchy/img/viewhierarchy-example-android.png b/public/platforms/android/enriching-events/viewhierarchy/viewhierarchy-example-android.png similarity index 100% rename from docs/platforms/android/enriching-events/viewhierarchy/img/viewhierarchy-example-android.png rename to public/platforms/android/enriching-events/viewhierarchy/viewhierarchy-example-android.png diff --git a/public/img/viewhierarchy-list-example.png b/public/platforms/android/enriching-events/viewhierarchy/viewhierarchy-list-example.png similarity index 100% rename from public/img/viewhierarchy-list-example.png rename to public/platforms/android/enriching-events/viewhierarchy/viewhierarchy-list-example.png diff --git a/docs/platforms/android/integrations/file-io/img/file-io-instrumentation.png b/public/platforms/android/integrations/file-io/file-io-instrumentation.png similarity index 100% rename from docs/platforms/android/integrations/file-io/img/file-io-instrumentation.png rename to public/platforms/android/integrations/file-io/file-io-instrumentation.png diff --git a/docs/platforms/android/integrations/jetpack-compose/img/jetpack-compose-navigation.png b/public/platforms/android/integrations/jetpack-compose/jetpack-compose-navigation.png similarity index 100% rename from docs/platforms/android/integrations/jetpack-compose/img/jetpack-compose-navigation.png rename to public/platforms/android/integrations/jetpack-compose/jetpack-compose-navigation.png diff --git a/docs/platforms/android/integrations/jetpack-compose/img/jetpack-compose-performance-metrics.png b/public/platforms/android/integrations/jetpack-compose/jetpack-compose-performance-metrics.png similarity index 100% rename from docs/platforms/android/integrations/jetpack-compose/img/jetpack-compose-performance-metrics.png rename to public/platforms/android/integrations/jetpack-compose/jetpack-compose-performance-metrics.png diff --git a/docs/platforms/android/integrations/jetpack-compose/img/jetpack-compose-user-interactions.png b/public/platforms/android/integrations/jetpack-compose/jetpack-compose-user-interactions.png similarity index 100% rename from docs/platforms/android/integrations/jetpack-compose/img/jetpack-compose-user-interactions.png rename to public/platforms/android/integrations/jetpack-compose/jetpack-compose-user-interactions.png diff --git a/docs/platforms/android/integrations/logcat/img/logcat-breadcrumbs.png b/public/platforms/android/integrations/logcat/logcat-breadcrumbs.png similarity index 100% rename from docs/platforms/android/integrations/logcat/img/logcat-breadcrumbs.png rename to public/platforms/android/integrations/logcat/logcat-breadcrumbs.png diff --git a/docs/platforms/android/integrations/room-and-sqlite/img/room-sqlite-instrumentation.png b/public/platforms/android/integrations/room-and-sqlite/room-sqlite-instrumentation.png similarity index 100% rename from docs/platforms/android/integrations/room-and-sqlite/img/room-sqlite-instrumentation.png rename to public/platforms/android/integrations/room-and-sqlite/room-sqlite-instrumentation.png diff --git a/public/img/distributed-trace-in-sentry.png b/public/platforms/android/usage/distributed-tracing/distributed-trace-in-sentry.png similarity index 100% rename from public/img/distributed-trace-in-sentry.png rename to public/platforms/android/usage/distributed-tracing/distributed-trace-in-sentry.png diff --git a/docs/platforms/apple/common/data-management/debug-files/source-context/img/source-context-screenshot.png b/public/platforms/apple/common/data-management/debug-files/source-context/source-context-screenshot.png similarity index 100% rename from docs/platforms/apple/common/data-management/debug-files/source-context/img/source-context-screenshot.png rename to public/platforms/apple/common/data-management/debug-files/source-context/source-context-screenshot.png diff --git a/public/platforms/apple/common/data-management/debug-files/upload/debug-files-workflow.png b/public/platforms/apple/common/data-management/debug-files/upload/debug-files-workflow.png new file mode 100644 index 0000000000000..d93025812e6f1 Binary files /dev/null and b/public/platforms/apple/common/data-management/debug-files/upload/debug-files-workflow.png differ diff --git a/public/platforms/apple/common/enriching-events/attachments/attachments-access-denied.png b/public/platforms/apple/common/enriching-events/attachments/attachments-access-denied.png new file mode 100644 index 0000000000000..a07eb651e832b Binary files /dev/null and b/public/platforms/apple/common/enriching-events/attachments/attachments-access-denied.png differ diff --git a/public/platforms/apple/common/enriching-events/attachments/attachments-access.png b/public/platforms/apple/common/enriching-events/attachments/attachments-access.png new file mode 100644 index 0000000000000..a525743259f0f Binary files /dev/null and b/public/platforms/apple/common/enriching-events/attachments/attachments-access.png differ diff --git a/public/platforms/apple/common/enriching-events/attachments/attachments-list-example.png b/public/platforms/apple/common/enriching-events/attachments/attachments-list-example.png new file mode 100644 index 0000000000000..335275106586d Binary files /dev/null and b/public/platforms/apple/common/enriching-events/attachments/attachments-list-example.png differ diff --git a/public/platforms/apple/common/enriching-events/context/additional_data.png b/public/platforms/apple/common/enriching-events/context/additional_data.png new file mode 100644 index 0000000000000..8999e0c5456f4 Binary files /dev/null and b/public/platforms/apple/common/enriching-events/context/additional_data.png differ diff --git a/docs/platforms/apple/common/enriching-events/screenshots/img/screenshot-list-example.png b/public/platforms/apple/common/enriching-events/screenshots/screenshot-list-example.png similarity index 100% rename from docs/platforms/apple/common/enriching-events/screenshots/img/screenshot-list-example.png rename to public/platforms/apple/common/enriching-events/screenshots/screenshot-list-example.png diff --git a/docs/platforms/apple/common/enriching-events/screenshots/img/screenshot-thumbnail.png b/public/platforms/apple/common/enriching-events/screenshots/screenshot-thumbnail.png similarity index 100% rename from docs/platforms/apple/common/enriching-events/screenshots/img/screenshot-thumbnail.png rename to public/platforms/apple/common/enriching-events/screenshots/screenshot-thumbnail.png diff --git a/public/platforms/apple/common/enriching-events/tags/tags.png b/public/platforms/apple/common/enriching-events/tags/tags.png new file mode 100644 index 0000000000000..6a9901f4c4e00 Binary files /dev/null and b/public/platforms/apple/common/enriching-events/tags/tags.png differ diff --git a/public/img/viewhierarchy-example.png b/public/platforms/apple/common/enriching-events/viewhierarchy/viewhierarchy-example.png similarity index 100% rename from public/img/viewhierarchy-example.png rename to public/platforms/apple/common/enriching-events/viewhierarchy/viewhierarchy-example.png diff --git a/public/platforms/apple/common/enriching-events/viewhierarchy/viewhierarchy-list-example.png b/public/platforms/apple/common/enriching-events/viewhierarchy/viewhierarchy-list-example.png new file mode 100644 index 0000000000000..0ce6888a316b2 Binary files /dev/null and b/public/platforms/apple/common/enriching-events/viewhierarchy/viewhierarchy-list-example.png differ diff --git a/docs/platforms/apple/common/performance/instrumentation/img/app-start-transaction.png b/public/platforms/apple/common/performance/instrumentation/app-start-transaction.png similarity index 100% rename from docs/platforms/apple/common/performance/instrumentation/img/app-start-transaction.png rename to public/platforms/apple/common/performance/instrumentation/app-start-transaction.png diff --git a/docs/platforms/apple/common/performance/instrumentation/img/slow-frozen-frames.png b/public/platforms/apple/common/performance/instrumentation/automatic-instrumentation/slow-frozen-frames.png similarity index 100% rename from docs/platforms/apple/common/performance/instrumentation/img/slow-frozen-frames.png rename to public/platforms/apple/common/performance/instrumentation/automatic-instrumentation/slow-frozen-frames.png diff --git a/docs/platforms/apple/common/performance/instrumentation/img/ui-view-controller-transaction.png b/public/platforms/apple/common/performance/instrumentation/automatic-instrumentation/ui-view-controller-transaction.png similarity index 100% rename from docs/platforms/apple/common/performance/instrumentation/img/ui-view-controller-transaction.png rename to public/platforms/apple/common/performance/instrumentation/automatic-instrumentation/ui-view-controller-transaction.png diff --git a/docs/platforms/apple/common/performance/instrumentation/img/nested-view-transaction.png b/public/platforms/apple/common/performance/instrumentation/swiftui-instrumentation/nested-view-transaction.png similarity index 100% rename from docs/platforms/apple/common/performance/instrumentation/img/nested-view-transaction.png rename to public/platforms/apple/common/performance/instrumentation/swiftui-instrumentation/nested-view-transaction.png diff --git a/public/platforms/apple/common/usage/distributed-tracing/distributed-trace-in-sentry.png b/public/platforms/apple/common/usage/distributed-tracing/distributed-trace-in-sentry.png new file mode 100644 index 0000000000000..e46ea6d5c0d46 Binary files /dev/null and b/public/platforms/apple/common/usage/distributed-tracing/distributed-trace-in-sentry.png differ diff --git a/public/platforms/dart/enriching-events/attachments/attachments-access-denied.png b/public/platforms/dart/enriching-events/attachments/attachments-access-denied.png new file mode 100644 index 0000000000000..a07eb651e832b Binary files /dev/null and b/public/platforms/dart/enriching-events/attachments/attachments-access-denied.png differ diff --git a/public/platforms/dart/enriching-events/attachments/attachments-access.png b/public/platforms/dart/enriching-events/attachments/attachments-access.png new file mode 100644 index 0000000000000..a525743259f0f Binary files /dev/null and b/public/platforms/dart/enriching-events/attachments/attachments-access.png differ diff --git a/public/platforms/dart/enriching-events/attachments/attachments-list-example.png b/public/platforms/dart/enriching-events/attachments/attachments-list-example.png new file mode 100644 index 0000000000000..335275106586d Binary files /dev/null and b/public/platforms/dart/enriching-events/attachments/attachments-list-example.png differ diff --git a/public/platforms/dart/enriching-events/context/additional_data.png b/public/platforms/dart/enriching-events/context/additional_data.png new file mode 100644 index 0000000000000..8999e0c5456f4 Binary files /dev/null and b/public/platforms/dart/enriching-events/context/additional_data.png differ diff --git a/public/platforms/dart/enriching-events/tags/tags.png b/public/platforms/dart/enriching-events/tags/tags.png new file mode 100644 index 0000000000000..6a9901f4c4e00 Binary files /dev/null and b/public/platforms/dart/enriching-events/tags/tags.png differ diff --git a/public/platforms/dart/usage/distributed-tracing/distributed-trace-in-sentry.png b/public/platforms/dart/usage/distributed-tracing/distributed-trace-in-sentry.png new file mode 100644 index 0000000000000..e46ea6d5c0d46 Binary files /dev/null and b/public/platforms/dart/usage/distributed-tracing/distributed-trace-in-sentry.png differ diff --git a/docs/platforms/dotnet/common/data-management/debug-files/source-context/img/source-context-screenshot.png b/public/platforms/dotnet/common/data-management/debug-files/source-context/source-context-screenshot.png similarity index 100% rename from docs/platforms/dotnet/common/data-management/debug-files/source-context/img/source-context-screenshot.png rename to public/platforms/dotnet/common/data-management/debug-files/source-context/source-context-screenshot.png diff --git a/public/platforms/dotnet/common/data-management/debug-files/upload/debug-files-workflow.png b/public/platforms/dotnet/common/data-management/debug-files/upload/debug-files-workflow.png new file mode 100644 index 0000000000000..d93025812e6f1 Binary files /dev/null and b/public/platforms/dotnet/common/data-management/debug-files/upload/debug-files-workflow.png differ diff --git a/public/platforms/dotnet/common/enriching-events/attachments/attachments-access-denied.png b/public/platforms/dotnet/common/enriching-events/attachments/attachments-access-denied.png new file mode 100644 index 0000000000000..a07eb651e832b Binary files /dev/null and b/public/platforms/dotnet/common/enriching-events/attachments/attachments-access-denied.png differ diff --git a/public/platforms/dotnet/common/enriching-events/attachments/attachments-access.png b/public/platforms/dotnet/common/enriching-events/attachments/attachments-access.png new file mode 100644 index 0000000000000..a525743259f0f Binary files /dev/null and b/public/platforms/dotnet/common/enriching-events/attachments/attachments-access.png differ diff --git a/public/platforms/dotnet/common/enriching-events/attachments/attachments-list-example.png b/public/platforms/dotnet/common/enriching-events/attachments/attachments-list-example.png new file mode 100644 index 0000000000000..335275106586d Binary files /dev/null and b/public/platforms/dotnet/common/enriching-events/attachments/attachments-list-example.png differ diff --git a/public/platforms/dotnet/common/enriching-events/context/additional_data.png b/public/platforms/dotnet/common/enriching-events/context/additional_data.png new file mode 100644 index 0000000000000..8999e0c5456f4 Binary files /dev/null and b/public/platforms/dotnet/common/enriching-events/context/additional_data.png differ diff --git a/public/platforms/dotnet/common/enriching-events/tags/tags.png b/public/platforms/dotnet/common/enriching-events/tags/tags.png new file mode 100644 index 0000000000000..6a9901f4c4e00 Binary files /dev/null and b/public/platforms/dotnet/common/enriching-events/tags/tags.png differ diff --git a/public/platforms/dotnet/common/usage/distributed-tracing/distributed-trace-in-sentry.png b/public/platforms/dotnet/common/usage/distributed-tracing/distributed-trace-in-sentry.png new file mode 100644 index 0000000000000..e46ea6d5c0d46 Binary files /dev/null and b/public/platforms/dotnet/common/usage/distributed-tracing/distributed-trace-in-sentry.png differ diff --git a/public/img/user_feedback_widget.png b/public/platforms/dotnet/common/user-feedback/user_feedback_widget.png similarity index 100% rename from public/img/user_feedback_widget.png rename to public/platforms/dotnet/common/user-feedback/user_feedback_widget.png diff --git a/docs/platforms/dotnet/guides/entityframework/img/dotnet-entityframework.png b/public/platforms/dotnet/guides/entityframework/dotnet-entityframework.png similarity index 100% rename from docs/platforms/dotnet/guides/entityframework/img/dotnet-entityframework.png rename to public/platforms/dotnet/guides/entityframework/dotnet-entityframework.png diff --git a/docs/platforms/dotnet/guides/log4net/img/log4net-sample.gif b/public/platforms/dotnet/guides/log4net/log4net-sample.gif similarity index 100% rename from docs/platforms/dotnet/guides/log4net/img/log4net-sample.gif rename to public/platforms/dotnet/guides/log4net/log4net-sample.gif diff --git a/docs/platforms/dotnet/guides/winforms/img/vbsettings1.png b/public/platforms/dotnet/guides/winforms/vbsettings1.png similarity index 100% rename from docs/platforms/dotnet/guides/winforms/img/vbsettings1.png rename to public/platforms/dotnet/guides/winforms/vbsettings1.png diff --git a/docs/platforms/dotnet/guides/winforms/img/vbsettings2.png b/public/platforms/dotnet/guides/winforms/vbsettings2.png similarity index 100% rename from docs/platforms/dotnet/guides/winforms/img/vbsettings2.png rename to public/platforms/dotnet/guides/winforms/vbsettings2.png diff --git a/docs/platforms/dotnet/guides/maui/enriching-events/screenshots/img/screenshot-list-example.png b/public/platforms/dotnet/guides/xamarin/enriching-events/screenshots/screenshot-list-example.png similarity index 100% rename from docs/platforms/dotnet/guides/maui/enriching-events/screenshots/img/screenshot-list-example.png rename to public/platforms/dotnet/guides/xamarin/enriching-events/screenshots/screenshot-list-example.png diff --git a/docs/platforms/dotnet/guides/maui/enriching-events/screenshots/img/screenshot-thumbnail.png b/public/platforms/dotnet/guides/xamarin/enriching-events/screenshots/screenshot-thumbnail.png similarity index 100% rename from docs/platforms/dotnet/guides/maui/enriching-events/screenshots/img/screenshot-thumbnail.png rename to public/platforms/dotnet/guides/xamarin/enriching-events/screenshots/screenshot-thumbnail.png diff --git a/docs/platforms/dotnet/guides/xamarin/img/finding-package-reference.png b/public/platforms/dotnet/guides/xamarin/finding-package-reference.png similarity index 100% rename from docs/platforms/dotnet/guides/xamarin/img/finding-package-reference.png rename to public/platforms/dotnet/guides/xamarin/finding-package-reference.png diff --git a/docs/platforms/dotnet/guides/xamarin/img/system-memory-conflict.png b/public/platforms/dotnet/guides/xamarin/system-memory-conflict.png similarity index 100% rename from docs/platforms/dotnet/guides/xamarin/img/system-memory-conflict.png rename to public/platforms/dotnet/guides/xamarin/system-memory-conflict.png diff --git a/docs/platforms/dotnet/guides/xamarin/img/tvos-metadata.jpg b/public/platforms/dotnet/guides/xamarin/tvos-metadata.jpg similarity index 100% rename from docs/platforms/dotnet/guides/xamarin/img/tvos-metadata.jpg rename to public/platforms/dotnet/guides/xamarin/tvos-metadata.jpg diff --git a/public/platforms/elixir/enriching-events/context/additional_data.png b/public/platforms/elixir/enriching-events/context/additional_data.png new file mode 100644 index 0000000000000..8999e0c5456f4 Binary files /dev/null and b/public/platforms/elixir/enriching-events/context/additional_data.png differ diff --git a/public/platforms/elixir/enriching-events/tags/tags.png b/public/platforms/elixir/enriching-events/tags/tags.png new file mode 100644 index 0000000000000..6a9901f4c4e00 Binary files /dev/null and b/public/platforms/elixir/enriching-events/tags/tags.png differ diff --git a/public/platforms/elixir/user-feedback/user_feedback_widget.png b/public/platforms/elixir/user-feedback/user_feedback_widget.png new file mode 100644 index 0000000000000..2e1898535ea0a Binary files /dev/null and b/public/platforms/elixir/user-feedback/user_feedback_widget.png differ diff --git a/docs/platforms/flutter/data-management/debug-files/source-context/img/source-context-screenshot.png b/public/platforms/flutter/data-management/debug-files/source-context/source-context-screenshot.png similarity index 100% rename from docs/platforms/flutter/data-management/debug-files/source-context/img/source-context-screenshot.png rename to public/platforms/flutter/data-management/debug-files/source-context/source-context-screenshot.png diff --git a/public/platforms/flutter/data-management/debug-files/upload/debug-files-workflow.png b/public/platforms/flutter/data-management/debug-files/upload/debug-files-workflow.png new file mode 100644 index 0000000000000..d93025812e6f1 Binary files /dev/null and b/public/platforms/flutter/data-management/debug-files/upload/debug-files-workflow.png differ diff --git a/public/platforms/flutter/enriching-events/attachments/attachments-access-denied.png b/public/platforms/flutter/enriching-events/attachments/attachments-access-denied.png new file mode 100644 index 0000000000000..a07eb651e832b Binary files /dev/null and b/public/platforms/flutter/enriching-events/attachments/attachments-access-denied.png differ diff --git a/public/platforms/flutter/enriching-events/attachments/attachments-access.png b/public/platforms/flutter/enriching-events/attachments/attachments-access.png new file mode 100644 index 0000000000000..a525743259f0f Binary files /dev/null and b/public/platforms/flutter/enriching-events/attachments/attachments-access.png differ diff --git a/public/platforms/flutter/enriching-events/attachments/attachments-list-example.png b/public/platforms/flutter/enriching-events/attachments/attachments-list-example.png new file mode 100644 index 0000000000000..335275106586d Binary files /dev/null and b/public/platforms/flutter/enriching-events/attachments/attachments-list-example.png differ diff --git a/public/platforms/flutter/enriching-events/context/additional_data.png b/public/platforms/flutter/enriching-events/context/additional_data.png new file mode 100644 index 0000000000000..8999e0c5456f4 Binary files /dev/null and b/public/platforms/flutter/enriching-events/context/additional_data.png differ diff --git a/docs/platforms/dotnet/guides/xamarin/enriching-events/screenshots/img/screenshot-list-example.png b/public/platforms/flutter/enriching-events/screenshots/screenshot-list-example.png similarity index 100% rename from docs/platforms/dotnet/guides/xamarin/enriching-events/screenshots/img/screenshot-list-example.png rename to public/platforms/flutter/enriching-events/screenshots/screenshot-list-example.png diff --git a/docs/platforms/dotnet/guides/xamarin/enriching-events/screenshots/img/screenshot-thumbnail.png b/public/platforms/flutter/enriching-events/screenshots/screenshot-thumbnail.png similarity index 100% rename from docs/platforms/dotnet/guides/xamarin/enriching-events/screenshots/img/screenshot-thumbnail.png rename to public/platforms/flutter/enriching-events/screenshots/screenshot-thumbnail.png diff --git a/public/platforms/flutter/enriching-events/tags/tags.png b/public/platforms/flutter/enriching-events/tags/tags.png new file mode 100644 index 0000000000000..6a9901f4c4e00 Binary files /dev/null and b/public/platforms/flutter/enriching-events/tags/tags.png differ diff --git a/public/platforms/flutter/enriching-events/viewhierarchy/viewhierarchy-example.png b/public/platforms/flutter/enriching-events/viewhierarchy/viewhierarchy-example.png new file mode 100644 index 0000000000000..bfb7389314dd5 Binary files /dev/null and b/public/platforms/flutter/enriching-events/viewhierarchy/viewhierarchy-example.png differ diff --git a/public/platforms/flutter/enriching-events/viewhierarchy/viewhierarchy-list-example.png b/public/platforms/flutter/enriching-events/viewhierarchy/viewhierarchy-list-example.png new file mode 100644 index 0000000000000..0ce6888a316b2 Binary files /dev/null and b/public/platforms/flutter/enriching-events/viewhierarchy/viewhierarchy-list-example.png differ diff --git a/public/platforms/flutter/usage/distributed-tracing/distributed-trace-in-sentry.png b/public/platforms/flutter/usage/distributed-tracing/distributed-trace-in-sentry.png new file mode 100644 index 0000000000000..e46ea6d5c0d46 Binary files /dev/null and b/public/platforms/flutter/usage/distributed-tracing/distributed-trace-in-sentry.png differ diff --git a/public/img/crons-alerts-example.png b/public/platforms/go/common/crons/crons-alerts-example.png similarity index 100% rename from public/img/crons-alerts-example.png rename to public/platforms/go/common/crons/crons-alerts-example.png diff --git a/public/platforms/go/common/enriching-events/attachments/attachments-access-denied.png b/public/platforms/go/common/enriching-events/attachments/attachments-access-denied.png new file mode 100644 index 0000000000000..a07eb651e832b Binary files /dev/null and b/public/platforms/go/common/enriching-events/attachments/attachments-access-denied.png differ diff --git a/public/platforms/go/common/enriching-events/attachments/attachments-access.png b/public/platforms/go/common/enriching-events/attachments/attachments-access.png new file mode 100644 index 0000000000000..a525743259f0f Binary files /dev/null and b/public/platforms/go/common/enriching-events/attachments/attachments-access.png differ diff --git a/public/platforms/go/common/enriching-events/attachments/attachments-list-example.png b/public/platforms/go/common/enriching-events/attachments/attachments-list-example.png new file mode 100644 index 0000000000000..335275106586d Binary files /dev/null and b/public/platforms/go/common/enriching-events/attachments/attachments-list-example.png differ diff --git a/public/platforms/go/common/enriching-events/context/additional_data.png b/public/platforms/go/common/enriching-events/context/additional_data.png new file mode 100644 index 0000000000000..8999e0c5456f4 Binary files /dev/null and b/public/platforms/go/common/enriching-events/context/additional_data.png differ diff --git a/public/platforms/go/common/enriching-events/tags/tags.png b/public/platforms/go/common/enriching-events/tags/tags.png new file mode 100644 index 0000000000000..6a9901f4c4e00 Binary files /dev/null and b/public/platforms/go/common/enriching-events/tags/tags.png differ diff --git a/public/platforms/go/common/usage/distributed-tracing/distributed-trace-in-sentry.png b/public/platforms/go/common/usage/distributed-tracing/distributed-trace-in-sentry.png new file mode 100644 index 0000000000000..e46ea6d5c0d46 Binary files /dev/null and b/public/platforms/go/common/usage/distributed-tracing/distributed-trace-in-sentry.png differ diff --git a/public/platforms/go/common/user-feedback/user_feedback_widget.png b/public/platforms/go/common/user-feedback/user_feedback_widget.png new file mode 100644 index 0000000000000..2e1898535ea0a Binary files /dev/null and b/public/platforms/go/common/user-feedback/user_feedback_widget.png differ diff --git a/public/platforms/java/common/crons/crons-alerts-example.png b/public/platforms/java/common/crons/crons-alerts-example.png new file mode 100644 index 0000000000000..769cc631c2785 Binary files /dev/null and b/public/platforms/java/common/crons/crons-alerts-example.png differ diff --git a/public/platforms/java/common/enriching-events/attachments/attachments-access-denied.png b/public/platforms/java/common/enriching-events/attachments/attachments-access-denied.png new file mode 100644 index 0000000000000..a07eb651e832b Binary files /dev/null and b/public/platforms/java/common/enriching-events/attachments/attachments-access-denied.png differ diff --git a/public/platforms/java/common/enriching-events/attachments/attachments-access.png b/public/platforms/java/common/enriching-events/attachments/attachments-access.png new file mode 100644 index 0000000000000..a525743259f0f Binary files /dev/null and b/public/platforms/java/common/enriching-events/attachments/attachments-access.png differ diff --git a/public/platforms/java/common/enriching-events/attachments/attachments-list-example.png b/public/platforms/java/common/enriching-events/attachments/attachments-list-example.png new file mode 100644 index 0000000000000..335275106586d Binary files /dev/null and b/public/platforms/java/common/enriching-events/attachments/attachments-list-example.png differ diff --git a/public/platforms/java/common/enriching-events/context/additional_data.png b/public/platforms/java/common/enriching-events/context/additional_data.png new file mode 100644 index 0000000000000..8999e0c5456f4 Binary files /dev/null and b/public/platforms/java/common/enriching-events/context/additional_data.png differ diff --git a/public/platforms/java/common/enriching-events/tags/tags.png b/public/platforms/java/common/enriching-events/tags/tags.png new file mode 100644 index 0000000000000..6a9901f4c4e00 Binary files /dev/null and b/public/platforms/java/common/enriching-events/tags/tags.png differ diff --git a/docs/platforms/java/common/gradle/img/dependencies-report.png b/public/platforms/java/common/gradle/dependencies-report.png similarity index 100% rename from docs/platforms/java/common/gradle/img/dependencies-report.png rename to public/platforms/java/common/gradle/dependencies-report.png diff --git a/docs/platforms/java/common/source-context/img/java-code-mappings-stacktrace.png b/public/platforms/java/common/source-context/java-code-mappings-stacktrace.png similarity index 100% rename from docs/platforms/java/common/source-context/img/java-code-mappings-stacktrace.png rename to public/platforms/java/common/source-context/java-code-mappings-stacktrace.png diff --git a/public/platforms/java/common/usage/distributed-tracing/distributed-trace-in-sentry.png b/public/platforms/java/common/usage/distributed-tracing/distributed-trace-in-sentry.png new file mode 100644 index 0000000000000..e46ea6d5c0d46 Binary files /dev/null and b/public/platforms/java/common/usage/distributed-tracing/distributed-trace-in-sentry.png differ diff --git a/public/platforms/javascript/common/crons/crons-alerts-example.png b/public/platforms/javascript/common/crons/crons-alerts-example.png new file mode 100644 index 0000000000000..769cc631c2785 Binary files /dev/null and b/public/platforms/javascript/common/crons/crons-alerts-example.png differ diff --git a/docs/platforms/javascript/common/data-management/debug-files/source-context/img/source-context-screenshot.png b/public/platforms/javascript/common/data-management/debug-files/source-context/source-context-screenshot.png similarity index 100% rename from docs/platforms/javascript/common/data-management/debug-files/source-context/img/source-context-screenshot.png rename to public/platforms/javascript/common/data-management/debug-files/source-context/source-context-screenshot.png diff --git a/public/platforms/javascript/common/data-management/debug-files/upload/debug-files-workflow.png b/public/platforms/javascript/common/data-management/debug-files/upload/debug-files-workflow.png new file mode 100644 index 0000000000000..d93025812e6f1 Binary files /dev/null and b/public/platforms/javascript/common/data-management/debug-files/upload/debug-files-workflow.png differ diff --git a/public/platforms/javascript/common/enriching-events/attachments/attachments-access-denied.png b/public/platforms/javascript/common/enriching-events/attachments/attachments-access-denied.png new file mode 100644 index 0000000000000..a07eb651e832b Binary files /dev/null and b/public/platforms/javascript/common/enriching-events/attachments/attachments-access-denied.png differ diff --git a/public/platforms/javascript/common/enriching-events/attachments/attachments-access.png b/public/platforms/javascript/common/enriching-events/attachments/attachments-access.png new file mode 100644 index 0000000000000..a525743259f0f Binary files /dev/null and b/public/platforms/javascript/common/enriching-events/attachments/attachments-access.png differ diff --git a/public/platforms/javascript/common/enriching-events/attachments/attachments-list-example.png b/public/platforms/javascript/common/enriching-events/attachments/attachments-list-example.png new file mode 100644 index 0000000000000..335275106586d Binary files /dev/null and b/public/platforms/javascript/common/enriching-events/attachments/attachments-list-example.png differ diff --git a/docs/platforms/javascript/common/enriching-events/attachments/img/slide-bar-native-crashes.png b/public/platforms/javascript/common/enriching-events/attachments/slide-bar-native-crashes.png similarity index 100% rename from docs/platforms/javascript/common/enriching-events/attachments/img/slide-bar-native-crashes.png rename to public/platforms/javascript/common/enriching-events/attachments/slide-bar-native-crashes.png diff --git a/public/platforms/javascript/common/enriching-events/context/additional_data.png b/public/platforms/javascript/common/enriching-events/context/additional_data.png new file mode 100644 index 0000000000000..8999e0c5456f4 Binary files /dev/null and b/public/platforms/javascript/common/enriching-events/context/additional_data.png differ diff --git a/public/platforms/javascript/common/enriching-events/tags/tags.png b/public/platforms/javascript/common/enriching-events/tags/tags.png new file mode 100644 index 0000000000000..6a9901f4c4e00 Binary files /dev/null and b/public/platforms/javascript/common/enriching-events/tags/tags.png differ diff --git a/docs/platforms/javascript/common/install/img/js-loader-settings.png b/public/platforms/javascript/common/install/loader/js-loader-settings.png similarity index 100% rename from docs/platforms/javascript/common/install/img/js-loader-settings.png rename to public/platforms/javascript/common/install/loader/js-loader-settings.png diff --git a/docs/platforms/javascript/common/session-replay/img/blocking.png b/public/platforms/javascript/common/session-replay/privacy/blocking.png similarity index 100% rename from docs/platforms/javascript/common/session-replay/img/blocking.png rename to public/platforms/javascript/common/session-replay/privacy/blocking.png diff --git a/docs/platforms/javascript/common/session-replay/img/ignoring.gif b/public/platforms/javascript/common/session-replay/privacy/ignoring.gif similarity index 100% rename from docs/platforms/javascript/common/session-replay/img/ignoring.gif rename to public/platforms/javascript/common/session-replay/privacy/ignoring.gif diff --git a/docs/platforms/javascript/common/session-replay/img/masking.png b/public/platforms/javascript/common/session-replay/privacy/masking.png similarity index 100% rename from docs/platforms/javascript/common/session-replay/img/masking.png rename to public/platforms/javascript/common/session-replay/privacy/masking.png diff --git a/docs/platforms/javascript/common/troubleshooting/img/event_JSON.png b/public/platforms/javascript/common/troubleshooting/event_JSON.png similarity index 100% rename from docs/platforms/javascript/common/troubleshooting/img/event_JSON.png rename to public/platforms/javascript/common/troubleshooting/event_JSON.png diff --git a/docs/platforms/javascript/common/troubleshooting/img/tunnel.png b/public/platforms/javascript/common/troubleshooting/tunnel.png similarity index 100% rename from docs/platforms/javascript/common/troubleshooting/img/tunnel.png rename to public/platforms/javascript/common/troubleshooting/tunnel.png diff --git a/public/platforms/javascript/common/usage/distributed-tracing/distributed-trace-in-sentry.png b/public/platforms/javascript/common/usage/distributed-tracing/distributed-trace-in-sentry.png new file mode 100644 index 0000000000000..e46ea6d5c0d46 Binary files /dev/null and b/public/platforms/javascript/common/usage/distributed-tracing/distributed-trace-in-sentry.png differ diff --git a/docs/platforms/javascript/common/user-feedback/configuration/img/user-feedback-widget-customization.png b/public/platforms/javascript/common/user-feedback/configuration/user-feedback-widget-customization.png similarity index 100% rename from docs/platforms/javascript/common/user-feedback/configuration/img/user-feedback-widget-customization.png rename to public/platforms/javascript/common/user-feedback/configuration/user-feedback-widget-customization.png diff --git a/docs/platforms/javascript/common/user-feedback/img/user-feedback-widget.png b/public/platforms/javascript/common/user-feedback/user-feedback-widget.png similarity index 100% rename from docs/platforms/javascript/common/user-feedback/img/user-feedback-widget.png rename to public/platforms/javascript/common/user-feedback/user-feedback-widget.png diff --git a/public/platforms/javascript/common/user-feedback/user_feedback_widget.png b/public/platforms/javascript/common/user-feedback/user_feedback_widget.png new file mode 100644 index 0000000000000..2e1898535ea0a Binary files /dev/null and b/public/platforms/javascript/common/user-feedback/user_feedback_widget.png differ diff --git a/docs/platforms/flutter/enriching-events/screenshots/img/screenshot-list-example.png b/public/platforms/javascript/guides/electron/enriching-events/screenshots/screenshot-list-example.png similarity index 100% rename from docs/platforms/flutter/enriching-events/screenshots/img/screenshot-list-example.png rename to public/platforms/javascript/guides/electron/enriching-events/screenshots/screenshot-list-example.png diff --git a/docs/platforms/flutter/enriching-events/screenshots/img/screenshot-thumbnail.png b/public/platforms/javascript/guides/electron/enriching-events/screenshots/screenshot-thumbnail.png similarity index 100% rename from docs/platforms/flutter/enriching-events/screenshots/img/screenshot-thumbnail.png rename to public/platforms/javascript/guides/electron/enriching-events/screenshots/screenshot-thumbnail.png diff --git a/docs/platforms/javascript/guides/react/features/img/errorboundary-error.png b/public/platforms/javascript/guides/react/features/errorboundary-error.png similarity index 100% rename from docs/platforms/javascript/guides/react/features/img/errorboundary-error.png rename to public/platforms/javascript/guides/react/features/errorboundary-error.png diff --git a/public/platforms/kotlin-multiplatform/enriching-events/attachments/attachments-access-denied.png b/public/platforms/kotlin-multiplatform/enriching-events/attachments/attachments-access-denied.png new file mode 100644 index 0000000000000..a07eb651e832b Binary files /dev/null and b/public/platforms/kotlin-multiplatform/enriching-events/attachments/attachments-access-denied.png differ diff --git a/public/platforms/kotlin-multiplatform/enriching-events/attachments/attachments-access.png b/public/platforms/kotlin-multiplatform/enriching-events/attachments/attachments-access.png new file mode 100644 index 0000000000000..a525743259f0f Binary files /dev/null and b/public/platforms/kotlin-multiplatform/enriching-events/attachments/attachments-access.png differ diff --git a/public/platforms/kotlin-multiplatform/enriching-events/attachments/attachments-list-example.png b/public/platforms/kotlin-multiplatform/enriching-events/attachments/attachments-list-example.png new file mode 100644 index 0000000000000..335275106586d Binary files /dev/null and b/public/platforms/kotlin-multiplatform/enriching-events/attachments/attachments-list-example.png differ diff --git a/public/platforms/kotlin-multiplatform/enriching-events/context/additional_data.png b/public/platforms/kotlin-multiplatform/enriching-events/context/additional_data.png new file mode 100644 index 0000000000000..8999e0c5456f4 Binary files /dev/null and b/public/platforms/kotlin-multiplatform/enriching-events/context/additional_data.png differ diff --git a/docs/platforms/javascript/guides/electron/enriching-events/screenshots/img/screenshot-list-example.png b/public/platforms/kotlin-multiplatform/enriching-events/screenshots/screenshot-list-example.png similarity index 100% rename from docs/platforms/javascript/guides/electron/enriching-events/screenshots/img/screenshot-list-example.png rename to public/platforms/kotlin-multiplatform/enriching-events/screenshots/screenshot-list-example.png diff --git a/docs/platforms/javascript/guides/electron/enriching-events/screenshots/img/screenshot-thumbnail.png b/public/platforms/kotlin-multiplatform/enriching-events/screenshots/screenshot-thumbnail.png similarity index 100% rename from docs/platforms/javascript/guides/electron/enriching-events/screenshots/img/screenshot-thumbnail.png rename to public/platforms/kotlin-multiplatform/enriching-events/screenshots/screenshot-thumbnail.png diff --git a/public/platforms/kotlin-multiplatform/enriching-events/tags/tags.png b/public/platforms/kotlin-multiplatform/enriching-events/tags/tags.png new file mode 100644 index 0000000000000..6a9901f4c4e00 Binary files /dev/null and b/public/platforms/kotlin-multiplatform/enriching-events/tags/tags.png differ diff --git a/public/platforms/kotlin-multiplatform/enriching-events/viewhierarchy/viewhierarchy-example.png b/public/platforms/kotlin-multiplatform/enriching-events/viewhierarchy/viewhierarchy-example.png new file mode 100644 index 0000000000000..bfb7389314dd5 Binary files /dev/null and b/public/platforms/kotlin-multiplatform/enriching-events/viewhierarchy/viewhierarchy-example.png differ diff --git a/public/platforms/kotlin-multiplatform/enriching-events/viewhierarchy/viewhierarchy-list-example.png b/public/platforms/kotlin-multiplatform/enriching-events/viewhierarchy/viewhierarchy-list-example.png new file mode 100644 index 0000000000000..0ce6888a316b2 Binary files /dev/null and b/public/platforms/kotlin-multiplatform/enriching-events/viewhierarchy/viewhierarchy-list-example.png differ diff --git a/docs/platforms/native/common/data-management/debug-files/source-context/img/source-context-screenshot.png b/public/platforms/native/common/data-management/debug-files/source-context/source-context-screenshot.png similarity index 100% rename from docs/platforms/native/common/data-management/debug-files/source-context/img/source-context-screenshot.png rename to public/platforms/native/common/data-management/debug-files/source-context/source-context-screenshot.png diff --git a/public/platforms/native/common/data-management/debug-files/upload/debug-files-workflow.png b/public/platforms/native/common/data-management/debug-files/upload/debug-files-workflow.png new file mode 100644 index 0000000000000..d93025812e6f1 Binary files /dev/null and b/public/platforms/native/common/data-management/debug-files/upload/debug-files-workflow.png differ diff --git a/public/platforms/native/common/enriching-events/attachments/attachments-access-denied.png b/public/platforms/native/common/enriching-events/attachments/attachments-access-denied.png new file mode 100644 index 0000000000000..a07eb651e832b Binary files /dev/null and b/public/platforms/native/common/enriching-events/attachments/attachments-access-denied.png differ diff --git a/public/platforms/native/common/enriching-events/attachments/attachments-access.png b/public/platforms/native/common/enriching-events/attachments/attachments-access.png new file mode 100644 index 0000000000000..a525743259f0f Binary files /dev/null and b/public/platforms/native/common/enriching-events/attachments/attachments-access.png differ diff --git a/public/platforms/native/common/enriching-events/attachments/attachments-list-example.png b/public/platforms/native/common/enriching-events/attachments/attachments-list-example.png new file mode 100644 index 0000000000000..335275106586d Binary files /dev/null and b/public/platforms/native/common/enriching-events/attachments/attachments-list-example.png differ diff --git a/docs/platforms/native/common/enriching-events/attachments/img/slide-bar-native-crashes.png b/public/platforms/native/common/enriching-events/attachments/slide-bar-native-crashes.png similarity index 100% rename from docs/platforms/native/common/enriching-events/attachments/img/slide-bar-native-crashes.png rename to public/platforms/native/common/enriching-events/attachments/slide-bar-native-crashes.png diff --git a/public/platforms/native/common/enriching-events/context/additional_data.png b/public/platforms/native/common/enriching-events/context/additional_data.png new file mode 100644 index 0000000000000..8999e0c5456f4 Binary files /dev/null and b/public/platforms/native/common/enriching-events/context/additional_data.png differ diff --git a/public/platforms/native/common/enriching-events/tags/tags.png b/public/platforms/native/common/enriching-events/tags/tags.png new file mode 100644 index 0000000000000..6a9901f4c4e00 Binary files /dev/null and b/public/platforms/native/common/enriching-events/tags/tags.png differ diff --git a/public/platforms/native/common/usage/distributed-tracing/distributed-trace-in-sentry.png b/public/platforms/native/common/usage/distributed-tracing/distributed-trace-in-sentry.png new file mode 100644 index 0000000000000..e46ea6d5c0d46 Binary files /dev/null and b/public/platforms/native/common/usage/distributed-tracing/distributed-trace-in-sentry.png differ diff --git a/docs/platforms/node/common/configuration/img/anr-node-example.png b/public/platforms/node/common/configuration/anr-node-example.png similarity index 100% rename from docs/platforms/node/common/configuration/img/anr-node-example.png rename to public/platforms/node/common/configuration/anr-node-example.png diff --git a/public/platforms/node/common/crons/crons-alerts-example.png b/public/platforms/node/common/crons/crons-alerts-example.png new file mode 100644 index 0000000000000..769cc631c2785 Binary files /dev/null and b/public/platforms/node/common/crons/crons-alerts-example.png differ diff --git a/public/platforms/node/common/enriching-events/attachments/attachments-access-denied.png b/public/platforms/node/common/enriching-events/attachments/attachments-access-denied.png new file mode 100644 index 0000000000000..a07eb651e832b Binary files /dev/null and b/public/platforms/node/common/enriching-events/attachments/attachments-access-denied.png differ diff --git a/public/platforms/node/common/enriching-events/attachments/attachments-access.png b/public/platforms/node/common/enriching-events/attachments/attachments-access.png new file mode 100644 index 0000000000000..a525743259f0f Binary files /dev/null and b/public/platforms/node/common/enriching-events/attachments/attachments-access.png differ diff --git a/public/platforms/node/common/enriching-events/attachments/attachments-list-example.png b/public/platforms/node/common/enriching-events/attachments/attachments-list-example.png new file mode 100644 index 0000000000000..335275106586d Binary files /dev/null and b/public/platforms/node/common/enriching-events/attachments/attachments-list-example.png differ diff --git a/public/platforms/node/common/enriching-events/context/additional_data.png b/public/platforms/node/common/enriching-events/context/additional_data.png new file mode 100644 index 0000000000000..8999e0c5456f4 Binary files /dev/null and b/public/platforms/node/common/enriching-events/context/additional_data.png differ diff --git a/public/platforms/node/common/enriching-events/tags/tags.png b/public/platforms/node/common/enriching-events/tags/tags.png new file mode 100644 index 0000000000000..6a9901f4c4e00 Binary files /dev/null and b/public/platforms/node/common/enriching-events/tags/tags.png differ diff --git a/public/platforms/node/common/usage/distributed-tracing/distributed-trace-in-sentry.png b/public/platforms/node/common/usage/distributed-tracing/distributed-trace-in-sentry.png new file mode 100644 index 0000000000000..e46ea6d5c0d46 Binary files /dev/null and b/public/platforms/node/common/usage/distributed-tracing/distributed-trace-in-sentry.png differ diff --git a/public/platforms/node/common/user-feedback/user_feedback_widget.png b/public/platforms/node/common/user-feedback/user_feedback_widget.png new file mode 100644 index 0000000000000..2e1898535ea0a Binary files /dev/null and b/public/platforms/node/common/user-feedback/user_feedback_widget.png differ diff --git a/docs/platforms/node/guides/aws-lambda/layer/img/add_layer.png b/public/platforms/node/guides/aws-lambda/layer/add_layer.png similarity index 100% rename from docs/platforms/node/guides/aws-lambda/layer/img/add_layer.png rename to public/platforms/node/guides/aws-lambda/layer/add_layer.png diff --git a/docs/platforms/node/guides/aws-lambda/layer/img/lambda_view.png b/public/platforms/node/guides/aws-lambda/layer/lambda_view.png similarity index 100% rename from docs/platforms/node/guides/aws-lambda/layer/img/lambda_view.png rename to public/platforms/node/guides/aws-lambda/layer/lambda_view.png diff --git a/docs/platforms/node/guides/express/img/express-data-filters.png b/public/platforms/node/guides/express/express-data-filters.png similarity index 100% rename from docs/platforms/node/guides/express/img/express-data-filters.png rename to public/platforms/node/guides/express/express-data-filters.png diff --git a/public/platforms/php/common/crons/crons-alerts-example.png b/public/platforms/php/common/crons/crons-alerts-example.png new file mode 100644 index 0000000000000..769cc631c2785 Binary files /dev/null and b/public/platforms/php/common/crons/crons-alerts-example.png differ diff --git a/public/platforms/php/common/enriching-events/context/additional_data.png b/public/platforms/php/common/enriching-events/context/additional_data.png new file mode 100644 index 0000000000000..8999e0c5456f4 Binary files /dev/null and b/public/platforms/php/common/enriching-events/context/additional_data.png differ diff --git a/public/platforms/php/common/enriching-events/tags/tags.png b/public/platforms/php/common/enriching-events/tags/tags.png new file mode 100644 index 0000000000000..6a9901f4c4e00 Binary files /dev/null and b/public/platforms/php/common/enriching-events/tags/tags.png differ diff --git a/public/platforms/php/common/usage/distributed-tracing/distributed-trace-in-sentry.png b/public/platforms/php/common/usage/distributed-tracing/distributed-trace-in-sentry.png new file mode 100644 index 0000000000000..e46ea6d5c0d46 Binary files /dev/null and b/public/platforms/php/common/usage/distributed-tracing/distributed-trace-in-sentry.png differ diff --git a/public/platforms/php/common/user-feedback/user_feedback_widget.png b/public/platforms/php/common/user-feedback/user_feedback_widget.png new file mode 100644 index 0000000000000..2e1898535ea0a Binary files /dev/null and b/public/platforms/php/common/user-feedback/user_feedback_widget.png differ diff --git a/public/platforms/python/crons/crons-alerts-example.png b/public/platforms/python/crons/crons-alerts-example.png new file mode 100644 index 0000000000000..769cc631c2785 Binary files /dev/null and b/public/platforms/python/crons/crons-alerts-example.png differ diff --git a/public/platforms/python/enriching-events/attachments/attachments-access-denied.png b/public/platforms/python/enriching-events/attachments/attachments-access-denied.png new file mode 100644 index 0000000000000..a07eb651e832b Binary files /dev/null and b/public/platforms/python/enriching-events/attachments/attachments-access-denied.png differ diff --git a/public/platforms/python/enriching-events/attachments/attachments-access.png b/public/platforms/python/enriching-events/attachments/attachments-access.png new file mode 100644 index 0000000000000..a525743259f0f Binary files /dev/null and b/public/platforms/python/enriching-events/attachments/attachments-access.png differ diff --git a/public/platforms/python/enriching-events/attachments/attachments-list-example.png b/public/platforms/python/enriching-events/attachments/attachments-list-example.png new file mode 100644 index 0000000000000..335275106586d Binary files /dev/null and b/public/platforms/python/enriching-events/attachments/attachments-list-example.png differ diff --git a/public/platforms/python/enriching-events/context/additional_data.png b/public/platforms/python/enriching-events/context/additional_data.png new file mode 100644 index 0000000000000..8999e0c5456f4 Binary files /dev/null and b/public/platforms/python/enriching-events/context/additional_data.png differ diff --git a/public/platforms/python/enriching-events/tags/tags.png b/public/platforms/python/enriching-events/tags/tags.png new file mode 100644 index 0000000000000..6a9901f4c4e00 Binary files /dev/null and b/public/platforms/python/enriching-events/tags/tags.png differ diff --git a/docs/platforms/python/integrations/aws-lambda/manual-layer/img/lambda-function-add-layer.png b/public/platforms/python/integrations/aws-lambda/manual-layer/lambda-function-add-layer.png similarity index 100% rename from docs/platforms/python/integrations/aws-lambda/manual-layer/img/lambda-function-add-layer.png rename to public/platforms/python/integrations/aws-lambda/manual-layer/lambda-function-add-layer.png diff --git a/docs/platforms/python/integrations/aws-lambda/manual-layer/img/lambda-function-configuration.png b/public/platforms/python/integrations/aws-lambda/manual-layer/lambda-function-configuration.png similarity index 100% rename from docs/platforms/python/integrations/aws-lambda/manual-layer/img/lambda-function-configuration.png rename to public/platforms/python/integrations/aws-lambda/manual-layer/lambda-function-configuration.png diff --git a/docs/platforms/python/integrations/aws-lambda/manual-layer/img/lambda-function-detail-layer.png b/public/platforms/python/integrations/aws-lambda/manual-layer/lambda-function-detail-layer.png similarity index 100% rename from docs/platforms/python/integrations/aws-lambda/manual-layer/img/lambda-function-detail-layer.png rename to public/platforms/python/integrations/aws-lambda/manual-layer/lambda-function-detail-layer.png diff --git a/docs/platforms/python/integrations/aws-lambda/manual-layer/img/lambda-function-detail.png b/public/platforms/python/integrations/aws-lambda/manual-layer/lambda-function-detail.png similarity index 100% rename from docs/platforms/python/integrations/aws-lambda/manual-layer/img/lambda-function-detail.png rename to public/platforms/python/integrations/aws-lambda/manual-layer/lambda-function-detail.png diff --git a/docs/platforms/python/integrations/aws-lambda/manual-layer/img/lambda-function-runtime-settings.png b/public/platforms/python/integrations/aws-lambda/manual-layer/lambda-function-runtime-settings.png similarity index 100% rename from docs/platforms/python/integrations/aws-lambda/manual-layer/img/lambda-function-runtime-settings.png rename to public/platforms/python/integrations/aws-lambda/manual-layer/lambda-function-runtime-settings.png diff --git a/docs/platforms/python/integrations/aws-lambda/manual-layer/img/runtime-settings-handler.png b/public/platforms/python/integrations/aws-lambda/manual-layer/runtime-settings-handler.png similarity index 100% rename from docs/platforms/python/integrations/aws-lambda/manual-layer/img/runtime-settings-handler.png rename to public/platforms/python/integrations/aws-lambda/manual-layer/runtime-settings-handler.png diff --git a/docs/platforms/python/integrations/cloudresourcecontext/img/cloudresourcecontext-aws-ec2.png b/public/platforms/python/integrations/cloudresourcecontext/cloudresourcecontext-aws-ec2.png similarity index 100% rename from docs/platforms/python/integrations/cloudresourcecontext/img/cloudresourcecontext-aws-ec2.png rename to public/platforms/python/integrations/cloudresourcecontext/cloudresourcecontext-aws-ec2.png diff --git a/docs/platforms/python/integrations/cloudresourcecontext/img/cloudresourcecontext-gcp-gce.png b/public/platforms/python/integrations/cloudresourcecontext/cloudresourcecontext-gcp-gce.png similarity index 100% rename from docs/platforms/python/integrations/cloudresourcecontext/img/cloudresourcecontext-gcp-gce.png rename to public/platforms/python/integrations/cloudresourcecontext/cloudresourcecontext-gcp-gce.png diff --git a/docs/platforms/python/integrations/fastapi/img/fastapi-issues-list.png b/public/platforms/python/integrations/fastapi/fastapi-issues-list.png similarity index 100% rename from docs/platforms/python/integrations/fastapi/img/fastapi-issues-list.png rename to public/platforms/python/integrations/fastapi/fastapi-issues-list.png diff --git a/docs/platforms/python/integrations/fastapi/img/fastapi-performance-details.png b/public/platforms/python/integrations/fastapi/fastapi-performance-details.png similarity index 100% rename from docs/platforms/python/integrations/fastapi/img/fastapi-performance-details.png rename to public/platforms/python/integrations/fastapi/fastapi-performance-details.png diff --git a/docs/platforms/python/integrations/pymongo/img/pymongo-query-performance-details.png b/public/platforms/python/integrations/pymongo/pymongo-query-performance-details.png similarity index 100% rename from docs/platforms/python/integrations/pymongo/img/pymongo-query-performance-details.png rename to public/platforms/python/integrations/pymongo/pymongo-query-performance-details.png diff --git a/public/platforms/python/usage/distributed-tracing/distributed-trace-in-sentry.png b/public/platforms/python/usage/distributed-tracing/distributed-trace-in-sentry.png new file mode 100644 index 0000000000000..e46ea6d5c0d46 Binary files /dev/null and b/public/platforms/python/usage/distributed-tracing/distributed-trace-in-sentry.png differ diff --git a/public/platforms/python/user-feedback/user_feedback_widget.png b/public/platforms/python/user-feedback/user_feedback_widget.png new file mode 100644 index 0000000000000..2e1898535ea0a Binary files /dev/null and b/public/platforms/python/user-feedback/user_feedback_widget.png differ diff --git a/docs/platforms/react-native/data-management/debug-files/source-context/img/source-context-screenshot.png b/public/platforms/react-native/data-management/debug-files/source-context/source-context-screenshot.png similarity index 100% rename from docs/platforms/react-native/data-management/debug-files/source-context/img/source-context-screenshot.png rename to public/platforms/react-native/data-management/debug-files/source-context/source-context-screenshot.png diff --git a/public/platforms/react-native/data-management/debug-files/upload/debug-files-workflow.png b/public/platforms/react-native/data-management/debug-files/upload/debug-files-workflow.png new file mode 100644 index 0000000000000..d93025812e6f1 Binary files /dev/null and b/public/platforms/react-native/data-management/debug-files/upload/debug-files-workflow.png differ diff --git a/public/platforms/react-native/enriching-events/attachments/attachments-access-denied.png b/public/platforms/react-native/enriching-events/attachments/attachments-access-denied.png new file mode 100644 index 0000000000000..a07eb651e832b Binary files /dev/null and b/public/platforms/react-native/enriching-events/attachments/attachments-access-denied.png differ diff --git a/public/platforms/react-native/enriching-events/attachments/attachments-access.png b/public/platforms/react-native/enriching-events/attachments/attachments-access.png new file mode 100644 index 0000000000000..a525743259f0f Binary files /dev/null and b/public/platforms/react-native/enriching-events/attachments/attachments-access.png differ diff --git a/public/platforms/react-native/enriching-events/attachments/attachments-list-example.png b/public/platforms/react-native/enriching-events/attachments/attachments-list-example.png new file mode 100644 index 0000000000000..335275106586d Binary files /dev/null and b/public/platforms/react-native/enriching-events/attachments/attachments-list-example.png differ diff --git a/public/platforms/react-native/enriching-events/context/additional_data.png b/public/platforms/react-native/enriching-events/context/additional_data.png new file mode 100644 index 0000000000000..8999e0c5456f4 Binary files /dev/null and b/public/platforms/react-native/enriching-events/context/additional_data.png differ diff --git a/docs/platforms/kotlin-multiplatform/enriching-events/screenshots/img/screenshot-list-example.png b/public/platforms/react-native/enriching-events/screenshots/screenshot-list-example.png similarity index 100% rename from docs/platforms/kotlin-multiplatform/enriching-events/screenshots/img/screenshot-list-example.png rename to public/platforms/react-native/enriching-events/screenshots/screenshot-list-example.png diff --git a/docs/platforms/kotlin-multiplatform/enriching-events/screenshots/img/screenshot-thumbnail.png b/public/platforms/react-native/enriching-events/screenshots/screenshot-thumbnail.png similarity index 100% rename from docs/platforms/kotlin-multiplatform/enriching-events/screenshots/img/screenshot-thumbnail.png rename to public/platforms/react-native/enriching-events/screenshots/screenshot-thumbnail.png diff --git a/public/platforms/react-native/enriching-events/tags/tags.png b/public/platforms/react-native/enriching-events/tags/tags.png new file mode 100644 index 0000000000000..6a9901f4c4e00 Binary files /dev/null and b/public/platforms/react-native/enriching-events/tags/tags.png differ diff --git a/public/platforms/react-native/enriching-events/viewhierarchy/viewhierarchy-example.png b/public/platforms/react-native/enriching-events/viewhierarchy/viewhierarchy-example.png new file mode 100644 index 0000000000000..bfb7389314dd5 Binary files /dev/null and b/public/platforms/react-native/enriching-events/viewhierarchy/viewhierarchy-example.png differ diff --git a/public/platforms/react-native/enriching-events/viewhierarchy/viewhierarchy-list-example.png b/public/platforms/react-native/enriching-events/viewhierarchy/viewhierarchy-list-example.png new file mode 100644 index 0000000000000..0ce6888a316b2 Binary files /dev/null and b/public/platforms/react-native/enriching-events/viewhierarchy/viewhierarchy-list-example.png differ diff --git a/docs/platforms/react-native/sourcemaps/troubleshooting/img/001-manual-sourcemaps.png b/public/platforms/react-native/sourcemaps/troubleshooting/001-manual-sourcemaps.png similarity index 100% rename from docs/platforms/react-native/sourcemaps/troubleshooting/img/001-manual-sourcemaps.png rename to public/platforms/react-native/sourcemaps/troubleshooting/001-manual-sourcemaps.png diff --git a/public/platforms/react-native/usage/distributed-tracing/distributed-trace-in-sentry.png b/public/platforms/react-native/usage/distributed-tracing/distributed-trace-in-sentry.png new file mode 100644 index 0000000000000..e46ea6d5c0d46 Binary files /dev/null and b/public/platforms/react-native/usage/distributed-tracing/distributed-trace-in-sentry.png differ diff --git a/public/platforms/ruby/common/crons/crons-alerts-example.png b/public/platforms/ruby/common/crons/crons-alerts-example.png new file mode 100644 index 0000000000000..769cc631c2785 Binary files /dev/null and b/public/platforms/ruby/common/crons/crons-alerts-example.png differ diff --git a/public/platforms/ruby/common/enriching-events/context/additional_data.png b/public/platforms/ruby/common/enriching-events/context/additional_data.png new file mode 100644 index 0000000000000..8999e0c5456f4 Binary files /dev/null and b/public/platforms/ruby/common/enriching-events/context/additional_data.png differ diff --git a/public/platforms/ruby/common/enriching-events/tags/tags.png b/public/platforms/ruby/common/enriching-events/tags/tags.png new file mode 100644 index 0000000000000..6a9901f4c4e00 Binary files /dev/null and b/public/platforms/ruby/common/enriching-events/tags/tags.png differ diff --git a/public/platforms/ruby/common/usage/distributed-tracing/distributed-trace-in-sentry.png b/public/platforms/ruby/common/usage/distributed-tracing/distributed-trace-in-sentry.png new file mode 100644 index 0000000000000..e46ea6d5c0d46 Binary files /dev/null and b/public/platforms/ruby/common/usage/distributed-tracing/distributed-trace-in-sentry.png differ diff --git a/public/platforms/rust/common/enriching-events/context/additional_data.png b/public/platforms/rust/common/enriching-events/context/additional_data.png new file mode 100644 index 0000000000000..8999e0c5456f4 Binary files /dev/null and b/public/platforms/rust/common/enriching-events/context/additional_data.png differ diff --git a/public/platforms/rust/common/enriching-events/tags/tags.png b/public/platforms/rust/common/enriching-events/tags/tags.png new file mode 100644 index 0000000000000..6a9901f4c4e00 Binary files /dev/null and b/public/platforms/rust/common/enriching-events/tags/tags.png differ diff --git a/public/platforms/rust/common/usage/distributed-tracing/distributed-trace-in-sentry.png b/public/platforms/rust/common/usage/distributed-tracing/distributed-trace-in-sentry.png new file mode 100644 index 0000000000000..e46ea6d5c0d46 Binary files /dev/null and b/public/platforms/rust/common/usage/distributed-tracing/distributed-trace-in-sentry.png differ diff --git a/public/platforms/rust/common/user-feedback/user_feedback_widget.png b/public/platforms/rust/common/user-feedback/user_feedback_widget.png new file mode 100644 index 0000000000000..2e1898535ea0a Binary files /dev/null and b/public/platforms/rust/common/user-feedback/user_feedback_widget.png differ diff --git a/docs/platforms/unity/configuration/app-not-responding/img/unity-anr.jpg b/public/platforms/unity/configuration/app-not-responding/unity-anr.jpg similarity index 100% rename from docs/platforms/unity/configuration/app-not-responding/img/unity-anr.jpg rename to public/platforms/unity/configuration/app-not-responding/unity-anr.jpg diff --git a/docs/platforms/unity/data-management/debug-files/source-context/img/source-context-screenshot.png b/public/platforms/unity/data-management/debug-files/source-context/source-context-screenshot.png similarity index 100% rename from docs/platforms/unity/data-management/debug-files/source-context/img/source-context-screenshot.png rename to public/platforms/unity/data-management/debug-files/source-context/source-context-screenshot.png diff --git a/public/platforms/unity/data-management/debug-files/upload/debug-files-workflow.png b/public/platforms/unity/data-management/debug-files/upload/debug-files-workflow.png new file mode 100644 index 0000000000000..d93025812e6f1 Binary files /dev/null and b/public/platforms/unity/data-management/debug-files/upload/debug-files-workflow.png differ diff --git a/public/platforms/unity/enriching-events/attachments/attachments-access-denied.png b/public/platforms/unity/enriching-events/attachments/attachments-access-denied.png new file mode 100644 index 0000000000000..a07eb651e832b Binary files /dev/null and b/public/platforms/unity/enriching-events/attachments/attachments-access-denied.png differ diff --git a/public/platforms/unity/enriching-events/attachments/attachments-access.png b/public/platforms/unity/enriching-events/attachments/attachments-access.png new file mode 100644 index 0000000000000..a525743259f0f Binary files /dev/null and b/public/platforms/unity/enriching-events/attachments/attachments-access.png differ diff --git a/public/platforms/unity/enriching-events/attachments/attachments-list-example.png b/public/platforms/unity/enriching-events/attachments/attachments-list-example.png new file mode 100644 index 0000000000000..335275106586d Binary files /dev/null and b/public/platforms/unity/enriching-events/attachments/attachments-list-example.png differ diff --git a/public/platforms/unity/enriching-events/context/additional_data.png b/public/platforms/unity/enriching-events/context/additional_data.png new file mode 100644 index 0000000000000..8999e0c5456f4 Binary files /dev/null and b/public/platforms/unity/enriching-events/context/additional_data.png differ diff --git a/docs/platforms/react-native/enriching-events/screenshots/img/screenshot-list-example.png b/public/platforms/unity/enriching-events/screenshots/screenshot-list-example.png similarity index 100% rename from docs/platforms/react-native/enriching-events/screenshots/img/screenshot-list-example.png rename to public/platforms/unity/enriching-events/screenshots/screenshot-list-example.png diff --git a/docs/platforms/react-native/enriching-events/screenshots/img/screenshot-thumbnail.png b/public/platforms/unity/enriching-events/screenshots/screenshot-thumbnail.png similarity index 100% rename from docs/platforms/react-native/enriching-events/screenshots/img/screenshot-thumbnail.png rename to public/platforms/unity/enriching-events/screenshots/screenshot-thumbnail.png diff --git a/public/platforms/unity/enriching-events/tags/tags.png b/public/platforms/unity/enriching-events/tags/tags.png new file mode 100644 index 0000000000000..6a9901f4c4e00 Binary files /dev/null and b/public/platforms/unity/enriching-events/tags/tags.png differ diff --git a/docs/platforms/unity/troubleshooting/img/unity-cpp-stacktrace.jpg b/public/platforms/unity/troubleshooting/unity-cpp-stacktrace.jpg similarity index 100% rename from docs/platforms/unity/troubleshooting/img/unity-cpp-stacktrace.jpg rename to public/platforms/unity/troubleshooting/unity-cpp-stacktrace.jpg diff --git a/public/platforms/unity/usage/distributed-tracing/distributed-trace-in-sentry.png b/public/platforms/unity/usage/distributed-tracing/distributed-trace-in-sentry.png new file mode 100644 index 0000000000000..e46ea6d5c0d46 Binary files /dev/null and b/public/platforms/unity/usage/distributed-tracing/distributed-trace-in-sentry.png differ diff --git a/docs/platforms/unreal/configuration/debug-symbols/img/unreal-debug-symbols.png b/public/platforms/unreal/configuration/debug-symbols/unreal-debug-symbols.png similarity index 100% rename from docs/platforms/unreal/configuration/debug-symbols/img/unreal-debug-symbols.png rename to public/platforms/unreal/configuration/debug-symbols/unreal-debug-symbols.png diff --git a/docs/platforms/unreal/configuration/setup-crashreporter/img/ue-crash-reporter-settings.png b/public/platforms/unreal/configuration/setup-crashreporter/ue-crash-reporter-settings.png similarity index 100% rename from docs/platforms/unreal/configuration/setup-crashreporter/img/ue-crash-reporter-settings.png rename to public/platforms/unreal/configuration/setup-crashreporter/ue-crash-reporter-settings.png diff --git a/docs/platforms/unreal/configuration/setup-crashreporter/img/ue-crash-reporter.png b/public/platforms/unreal/configuration/setup-crashreporter/ue-crash-reporter.png similarity index 100% rename from docs/platforms/unreal/configuration/setup-crashreporter/img/ue-crash-reporter.png rename to public/platforms/unreal/configuration/setup-crashreporter/ue-crash-reporter.png diff --git a/docs/platforms/unreal/configuration/setup-crashreporter/img/ue-include-crash-reporter.png b/public/platforms/unreal/configuration/setup-crashreporter/ue-include-crash-reporter.png similarity index 100% rename from docs/platforms/unreal/configuration/setup-crashreporter/img/ue-include-crash-reporter.png rename to public/platforms/unreal/configuration/setup-crashreporter/ue-include-crash-reporter.png diff --git a/public/platforms/unreal/data-management/debug-files/upload/debug-files-workflow.png b/public/platforms/unreal/data-management/debug-files/upload/debug-files-workflow.png new file mode 100644 index 0000000000000..d93025812e6f1 Binary files /dev/null and b/public/platforms/unreal/data-management/debug-files/upload/debug-files-workflow.png differ diff --git a/public/platforms/unreal/enriching-events/attachments/attachments-access-denied.png b/public/platforms/unreal/enriching-events/attachments/attachments-access-denied.png new file mode 100644 index 0000000000000..a07eb651e832b Binary files /dev/null and b/public/platforms/unreal/enriching-events/attachments/attachments-access-denied.png differ diff --git a/public/platforms/unreal/enriching-events/attachments/attachments-access.png b/public/platforms/unreal/enriching-events/attachments/attachments-access.png new file mode 100644 index 0000000000000..a525743259f0f Binary files /dev/null and b/public/platforms/unreal/enriching-events/attachments/attachments-access.png differ diff --git a/public/platforms/unreal/enriching-events/attachments/attachments-list-example.png b/public/platforms/unreal/enriching-events/attachments/attachments-list-example.png new file mode 100644 index 0000000000000..335275106586d Binary files /dev/null and b/public/platforms/unreal/enriching-events/attachments/attachments-list-example.png differ diff --git a/platform-includes/enriching-events/attachment-upload/img/unreal_attachment_upload.png b/public/platforms/unreal/enriching-events/attachments/unreal_attachment_upload.png similarity index 100% rename from platform-includes/enriching-events/attachment-upload/img/unreal_attachment_upload.png rename to public/platforms/unreal/enriching-events/attachments/unreal_attachment_upload.png diff --git a/platform-includes/enriching-events/breadcrumbs/automatic-breadcrumbs/img/unreal_automatic_breadcrumbs.png b/public/platforms/unreal/enriching-events/breadcrumbs/unreal_automatic_breadcrumbs.png similarity index 100% rename from platform-includes/enriching-events/breadcrumbs/automatic-breadcrumbs/img/unreal_automatic_breadcrumbs.png rename to public/platforms/unreal/enriching-events/breadcrumbs/unreal_automatic_breadcrumbs.png diff --git a/docs/platforms/unreal/enriching-events/breadcrumbs/img/unreal_breadcrumb.png b/public/platforms/unreal/enriching-events/breadcrumbs/unreal_breadcrumb.png similarity index 100% rename from docs/platforms/unreal/enriching-events/breadcrumbs/img/unreal_breadcrumb.png rename to public/platforms/unreal/enriching-events/breadcrumbs/unreal_breadcrumb.png diff --git a/public/platforms/unreal/enriching-events/context/additional_data.png b/public/platforms/unreal/enriching-events/context/additional_data.png new file mode 100644 index 0000000000000..8999e0c5456f4 Binary files /dev/null and b/public/platforms/unreal/enriching-events/context/additional_data.png differ diff --git a/platform-includes/enriching-events/set-context/img/unreal_set_context.png b/public/platforms/unreal/enriching-events/context/unreal_set_context.png similarity index 100% rename from platform-includes/enriching-events/set-context/img/unreal_set_context.png rename to public/platforms/unreal/enriching-events/context/unreal_set_context.png diff --git a/platform-includes/enriching-events/set-user/img/unreal_set_user.png b/public/platforms/unreal/enriching-events/identify-user/unreal_set_user.png similarity index 100% rename from platform-includes/enriching-events/set-user/img/unreal_set_user.png rename to public/platforms/unreal/enriching-events/identify-user/unreal_set_user.png diff --git a/platform-includes/enriching-events/unset-user/img/unreal_unset_user.png b/public/platforms/unreal/enriching-events/identify-user/unreal_unset_user.png similarity index 100% rename from platform-includes/enriching-events/unset-user/img/unreal_unset_user.png rename to public/platforms/unreal/enriching-events/identify-user/unreal_unset_user.png diff --git a/public/platforms/unreal/enriching-events/tags/tags.png b/public/platforms/unreal/enriching-events/tags/tags.png new file mode 100644 index 0000000000000..6a9901f4c4e00 Binary files /dev/null and b/public/platforms/unreal/enriching-events/tags/tags.png differ diff --git a/platform-includes/getting-started-verify/img/unreal_bp_message.png b/public/platforms/unreal/unreal_bp_message.png similarity index 100% rename from platform-includes/getting-started-verify/img/unreal_bp_message.png rename to public/platforms/unreal/unreal_bp_message.png diff --git a/platform-includes/getting-started-install/img/unreal_plugins_window.png b/public/platforms/unreal/unreal_plugins_window.png similarity index 100% rename from platform-includes/getting-started-install/img/unreal_plugins_window.png rename to public/platforms/unreal/unreal_plugins_window.png diff --git a/platform-includes/getting-started-config/img/unreal_window.png b/public/platforms/unreal/unreal_window.png similarity index 100% rename from platform-includes/getting-started-config/img/unreal_window.png rename to public/platforms/unreal/unreal_window.png diff --git a/docs/product/accounts/auth-tokens/img/org-auth-token-create.png b/public/product/accounts/auth-tokens/org-auth-token-create.png similarity index 100% rename from docs/product/accounts/auth-tokens/img/org-auth-token-create.png rename to public/product/accounts/auth-tokens/org-auth-token-create.png diff --git a/docs/product/accounts/auth-tokens/img/org-auth-tokens-overview.png b/public/product/accounts/auth-tokens/org-auth-tokens-overview.png similarity index 100% rename from docs/product/accounts/auth-tokens/img/org-auth-tokens-overview.png rename to public/product/accounts/auth-tokens/org-auth-tokens-overview.png diff --git a/docs/api/img/user-auth-token-create.png b/public/product/accounts/auth-tokens/user-auth-token-create.png similarity index 100% rename from docs/api/img/user-auth-token-create.png rename to public/product/accounts/auth-tokens/user-auth-token-create.png diff --git a/docs/product/accounts/auth-tokens/img/user-auth-tokens-menu.png b/public/product/accounts/auth-tokens/user-auth-tokens-menu.png similarity index 100% rename from docs/product/accounts/auth-tokens/img/user-auth-tokens-menu.png rename to public/product/accounts/auth-tokens/user-auth-tokens-menu.png diff --git a/docs/product/accounts/auth-tokens/img/user-auth-tokens-overview.png b/public/product/accounts/auth-tokens/user-auth-tokens-overview.png similarity index 100% rename from docs/product/accounts/auth-tokens/img/user-auth-tokens-overview.png rename to public/product/accounts/auth-tokens/user-auth-tokens-overview.png diff --git a/docs/product/accounts/early-adopter-features/img/early-adopter-toggle.png b/public/product/accounts/early-adopter-features/early-adopter-toggle.png similarity index 100% rename from docs/product/accounts/early-adopter-features/img/early-adopter-toggle.png rename to public/product/accounts/early-adopter-features/early-adopter-toggle.png diff --git a/docs/product/accounts/getting-started/img/environment-dropdown.png b/public/product/accounts/getting-started/environment-dropdown.png similarity index 100% rename from docs/product/accounts/getting-started/img/environment-dropdown.png rename to public/product/accounts/getting-started/environment-dropdown.png diff --git a/docs/product/accounts/getting-started/img/invite-members.png b/public/product/accounts/getting-started/invite-members.png similarity index 100% rename from docs/product/accounts/getting-started/img/invite-members.png rename to public/product/accounts/getting-started/invite-members.png diff --git a/docs/product/accounts/getting-started/img/issue-integrations-01.png b/public/product/accounts/getting-started/issue-integrations-01.png similarity index 100% rename from docs/product/accounts/getting-started/img/issue-integrations-01.png rename to public/product/accounts/getting-started/issue-integrations-01.png diff --git a/docs/product/accounts/getting-started/img/issue-integrations-02.png b/public/product/accounts/getting-started/issue-integrations-02.png similarity index 100% rename from docs/product/accounts/getting-started/img/issue-integrations-02.png rename to public/product/accounts/getting-started/issue-integrations-02.png diff --git a/docs/product/accounts/getting-started/img/issues-project-dropdown.png b/public/product/accounts/getting-started/issues-project-dropdown.png similarity index 100% rename from docs/product/accounts/getting-started/img/issues-project-dropdown.png rename to public/product/accounts/getting-started/issues-project-dropdown.png diff --git a/docs/product/accounts/getting-started/img/project-dsn.png b/public/product/accounts/getting-started/project-dsn.png similarity index 100% rename from docs/product/accounts/getting-started/img/project-dsn.png rename to public/product/accounts/getting-started/project-dsn.png diff --git a/docs/product/accounts/getting-started/img/team-settings.png b/public/product/accounts/getting-started/team-settings.png similarity index 100% rename from docs/product/accounts/getting-started/img/team-settings.png rename to public/product/accounts/getting-started/team-settings.png diff --git a/docs/product/accounts/img/membership-toggle.png b/public/product/accounts/membership-toggle.png similarity index 100% rename from docs/product/accounts/img/membership-toggle.png rename to public/product/accounts/membership-toggle.png diff --git a/docs/product/accounts/migration/img/org-slug.png b/public/product/accounts/migration/org-slug.png similarity index 100% rename from docs/product/accounts/migration/img/org-slug.png rename to public/product/accounts/migration/org-slug.png diff --git a/docs/product/accounts/migration/img/sign-up-welcome.png b/public/product/accounts/migration/sign-up-welcome.png similarity index 100% rename from docs/product/accounts/migration/img/sign-up-welcome.png rename to public/product/accounts/migration/sign-up-welcome.png diff --git a/docs/product/accounts/img/on-demand-budgets.png b/public/product/accounts/on-demand-budgets.png similarity index 100% rename from docs/product/accounts/img/on-demand-budgets.png rename to public/product/accounts/on-demand-budgets.png diff --git a/docs/product/accounts/quotas/img/bursty_projects.png b/public/product/accounts/quotas/bursty_projects.png similarity index 100% rename from docs/product/accounts/quotas/img/bursty_projects.png rename to public/product/accounts/quotas/bursty_projects.png diff --git a/docs/product/accounts/quotas/img/manage-crons-on-demand-budgets.png b/public/product/accounts/quotas/manage-crons-on-demand-budgets.png similarity index 100% rename from docs/product/accounts/quotas/img/manage-crons-on-demand-budgets.png rename to public/product/accounts/quotas/manage-crons-on-demand-budgets.png diff --git a/docs/product/accounts/quotas/img/manage-event-stream-02.png b/public/product/accounts/quotas/manage-event-stream-02.png similarity index 100% rename from docs/product/accounts/quotas/img/manage-event-stream-02.png rename to public/product/accounts/quotas/manage-event-stream-02.png diff --git a/docs/product/accounts/quotas/img/manage-event-stream-03.png b/public/product/accounts/quotas/manage-event-stream-03.png similarity index 100% rename from docs/product/accounts/quotas/img/manage-event-stream-03.png rename to public/product/accounts/quotas/manage-event-stream-03.png diff --git a/docs/product/accounts/quotas/img/manage-event-stream-06-new.png b/public/product/accounts/quotas/manage-event-stream-06-new.png similarity index 100% rename from docs/product/accounts/quotas/img/manage-event-stream-06-new.png rename to public/product/accounts/quotas/manage-event-stream-06-new.png diff --git a/docs/product/accounts/quotas/img/manage-event-stream-07-new.png b/public/product/accounts/quotas/manage-event-stream-07-new.png similarity index 100% rename from docs/product/accounts/quotas/img/manage-event-stream-07-new.png rename to public/product/accounts/quotas/manage-event-stream-07-new.png diff --git a/docs/product/accounts/quotas/img/manage-event-stream-10.png b/public/product/accounts/quotas/manage-event-stream-10.png similarity index 100% rename from docs/product/accounts/quotas/img/manage-event-stream-10.png rename to public/product/accounts/quotas/manage-event-stream-10.png diff --git a/docs/product/accounts/quotas/img/manage-event-stream-11.png b/public/product/accounts/quotas/manage-event-stream-11.png similarity index 100% rename from docs/product/accounts/quotas/img/manage-event-stream-11.png rename to public/product/accounts/quotas/manage-event-stream-11.png diff --git a/docs/product/accounts/quotas/img/manage-event-stream-14-new.png b/public/product/accounts/quotas/manage-event-stream-14-new.png similarity index 100% rename from docs/product/accounts/quotas/img/manage-event-stream-14-new.png rename to public/product/accounts/quotas/manage-event-stream-14-new.png diff --git a/docs/product/accounts/quotas/img/manage-event-stream-15-new.png b/public/product/accounts/quotas/manage-event-stream-15-new.png similarity index 100% rename from docs/product/accounts/quotas/img/manage-event-stream-15-new.png rename to public/product/accounts/quotas/manage-event-stream-15-new.png diff --git a/docs/product/accounts/quotas/img/manage-trans-quota-01.png b/public/product/accounts/quotas/manage-trans-quota-01.png similarity index 100% rename from docs/product/accounts/quotas/img/manage-trans-quota-01.png rename to public/product/accounts/quotas/manage-trans-quota-01.png diff --git a/docs/product/accounts/quotas/img/manage-trans-quota-02.png b/public/product/accounts/quotas/manage-trans-quota-02.png similarity index 100% rename from docs/product/accounts/quotas/img/manage-trans-quota-02.png rename to public/product/accounts/quotas/manage-trans-quota-02.png diff --git a/docs/product/accounts/quotas/img/review-subscription.png b/public/product/accounts/quotas/review-subscription.png similarity index 100% rename from docs/product/accounts/quotas/img/review-subscription.png rename to public/product/accounts/quotas/review-subscription.png diff --git a/docs/product/accounts/quotas/img/spend-allocation-creation.png b/public/product/accounts/quotas/spend-allocation-creation.png similarity index 100% rename from docs/product/accounts/quotas/img/spend-allocation-creation.png rename to public/product/accounts/quotas/spend-allocation-creation.png diff --git a/docs/product/accounts/quotas/img/spend-allocation-empty.png b/public/product/accounts/quotas/spend-allocation-empty.png similarity index 100% rename from docs/product/accounts/quotas/img/spend-allocation-empty.png rename to public/product/accounts/quotas/spend-allocation-empty.png diff --git a/docs/product/accounts/quotas/img/spend-allocation-populated.png b/public/product/accounts/quotas/spend-allocation-populated.png similarity index 100% rename from docs/product/accounts/quotas/img/spend-allocation-populated.png rename to public/product/accounts/quotas/spend-allocation-populated.png diff --git a/docs/product/accounts/quotas/img/spike-limit-threshold.png b/public/product/accounts/quotas/spike-limit-threshold.png similarity index 100% rename from docs/product/accounts/quotas/img/spike-limit-threshold.png rename to public/product/accounts/quotas/spike-limit-threshold.png diff --git a/docs/product/accounts/quotas/img/spike-protection-steady-state.png b/public/product/accounts/quotas/spike-protection-steady-state.png similarity index 100% rename from docs/product/accounts/quotas/img/spike-protection-steady-state.png rename to public/product/accounts/quotas/spike-protection-steady-state.png diff --git a/docs/product/accounts/quotas/img/spike-protection-zoomed-in.png b/public/product/accounts/quotas/spike-protection-zoomed-in.png similarity index 100% rename from docs/product/accounts/quotas/img/spike-protection-zoomed-in.png rename to public/product/accounts/quotas/spike-protection-zoomed-in.png diff --git a/docs/product/accounts/quotas/img/spike-protection-zoomed-out.png b/public/product/accounts/quotas/spike-protection-zoomed-out.png similarity index 100% rename from docs/product/accounts/quotas/img/spike-protection-zoomed-out.png rename to public/product/accounts/quotas/spike-protection-zoomed-out.png diff --git a/docs/product/accounts/quotas/img/usage-stats-attachments.png b/public/product/accounts/quotas/usage-stats-attachments.png similarity index 100% rename from docs/product/accounts/quotas/img/usage-stats-attachments.png rename to public/product/accounts/quotas/usage-stats-attachments.png diff --git a/docs/product/accounts/quotas/img/usage-stats-errors.png b/public/product/accounts/quotas/usage-stats-errors.png similarity index 100% rename from docs/product/accounts/quotas/img/usage-stats-errors.png rename to public/product/accounts/quotas/usage-stats-errors.png diff --git a/docs/product/accounts/quotas/img/usage-stats-replay.png b/public/product/accounts/quotas/usage-stats-replay.png similarity index 100% rename from docs/product/accounts/quotas/img/usage-stats-replay.png rename to public/product/accounts/quotas/usage-stats-replay.png diff --git a/docs/product/accounts/quotas/img/usage-stats-transactions.png b/public/product/accounts/quotas/usage-stats-transactions.png similarity index 100% rename from docs/product/accounts/quotas/img/usage-stats-transactions.png rename to public/product/accounts/quotas/usage-stats-transactions.png diff --git a/docs/product/accounts/img/require-2fa-add-auth.png b/public/product/accounts/require-2fa-add-auth.png similarity index 100% rename from docs/product/accounts/img/require-2fa-add-auth.png rename to public/product/accounts/require-2fa-add-auth.png diff --git a/docs/product/accounts/img/require-2fa-audit-log.png b/public/product/accounts/require-2fa-audit-log.png similarity index 100% rename from docs/product/accounts/img/require-2fa-audit-log.png rename to public/product/accounts/require-2fa-audit-log.png diff --git a/docs/product/accounts/img/require-2fa-email.png b/public/product/accounts/require-2fa-email.png similarity index 100% rename from docs/product/accounts/img/require-2fa-email.png rename to public/product/accounts/require-2fa-email.png diff --git a/docs/product/accounts/img/require-2fa-members.png b/public/product/accounts/require-2fa-members.png similarity index 100% rename from docs/product/accounts/img/require-2fa-members.png rename to public/product/accounts/require-2fa-members.png diff --git a/docs/product/accounts/img/require-2fa-rejoin.png b/public/product/accounts/require-2fa-rejoin.png similarity index 100% rename from docs/product/accounts/img/require-2fa-rejoin.png rename to public/product/accounts/require-2fa-rejoin.png diff --git a/docs/product/accounts/img/require-2fa-resend-invite.png b/public/product/accounts/require-2fa-resend-invite.png similarity index 100% rename from docs/product/accounts/img/require-2fa-resend-invite.png rename to public/product/accounts/require-2fa-resend-invite.png diff --git a/docs/product/accounts/img/require-2fa-switch.png b/public/product/accounts/require-2fa-switch.png similarity index 100% rename from docs/product/accounts/img/require-2fa-switch.png rename to public/product/accounts/require-2fa-switch.png diff --git a/docs/product/accounts/img/reserved-volume.png b/public/product/accounts/reserved-volume.png similarity index 100% rename from docs/product/accounts/img/reserved-volume.png rename to public/product/accounts/reserved-volume.png diff --git a/docs/product/accounts/sso/img/azure-basic-saml-configuration.png b/public/product/accounts/sso/azure-basic-saml-configuration.png similarity index 100% rename from docs/product/accounts/sso/img/azure-basic-saml-configuration.png rename to public/product/accounts/sso/azure-basic-saml-configuration.png diff --git a/docs/product/accounts/sso/img/azure-map-identity-provider-attributes.png b/public/product/accounts/sso/azure-map-identity-provider-attributes.png similarity index 100% rename from docs/product/accounts/sso/img/azure-map-identity-provider-attributes.png rename to public/product/accounts/sso/azure-map-identity-provider-attributes.png diff --git a/docs/product/accounts/sso/img/azure-saml-signing-certificate.png b/public/product/accounts/sso/azure-saml-signing-certificate.png similarity index 100% rename from docs/product/accounts/sso/img/azure-saml-signing-certificate.png rename to public/product/accounts/sso/azure-saml-signing-certificate.png diff --git a/docs/product/accounts/sso/img/azure-scim-provisioning.png b/public/product/accounts/sso/azure-scim-provisioning.png similarity index 100% rename from docs/product/accounts/sso/img/azure-scim-provisioning.png rename to public/product/accounts/sso/azure-scim-provisioning.png diff --git a/docs/product/accounts/sso/img/azure-scim-test-connection.png b/public/product/accounts/sso/azure-scim-test-connection.png similarity index 100% rename from docs/product/accounts/sso/img/azure-scim-test-connection.png rename to public/product/accounts/sso/azure-scim-test-connection.png diff --git a/docs/product/accounts/sso/img/azure-search-sentry.png b/public/product/accounts/sso/azure-search-sentry.png similarity index 100% rename from docs/product/accounts/sso/img/azure-search-sentry.png rename to public/product/accounts/sso/azure-search-sentry.png diff --git a/docs/product/accounts/sso/img/azure-sentry-overview.png b/public/product/accounts/sso/azure-sentry-overview.png similarity index 100% rename from docs/product/accounts/sso/img/azure-sentry-overview.png rename to public/product/accounts/sso/azure-sentry-overview.png diff --git a/docs/product/accounts/sso/okta-sso/img/okta-add-attribute.png b/public/product/accounts/sso/okta-sso/okta-add-attribute.png similarity index 100% rename from docs/product/accounts/sso/okta-sso/img/okta-add-attribute.png rename to public/product/accounts/sso/okta-sso/okta-add-attribute.png diff --git a/docs/product/accounts/sso/okta-sso/img/okta-assign-group.png b/public/product/accounts/sso/okta-sso/okta-assign-group.png similarity index 100% rename from docs/product/accounts/sso/okta-sso/img/okta-assign-group.png rename to public/product/accounts/sso/okta-sso/okta-assign-group.png diff --git a/docs/product/accounts/sso/okta-sso/img/okta-custom-attribute-values.png b/public/product/accounts/sso/okta-sso/okta-custom-attribute-values.png similarity index 100% rename from docs/product/accounts/sso/okta-sso/img/okta-custom-attribute-values.png rename to public/product/accounts/sso/okta-sso/okta-custom-attribute-values.png diff --git a/docs/product/accounts/sso/okta-sso/img/okta-edit-sentryOrgRole-attribute.png b/public/product/accounts/sso/okta-sso/okta-edit-sentryOrgRole-attribute.png similarity index 100% rename from docs/product/accounts/sso/okta-sso/img/okta-edit-sentryOrgRole-attribute.png rename to public/product/accounts/sso/okta-sso/okta-edit-sentryOrgRole-attribute.png diff --git a/docs/product/accounts/sso/okta-sso/img/okta-gallery.png b/public/product/accounts/sso/okta-sso/okta-gallery.png similarity index 100% rename from docs/product/accounts/sso/okta-sso/img/okta-gallery.png rename to public/product/accounts/sso/okta-sso/okta-gallery.png diff --git a/docs/product/accounts/sso/okta-sso/img/okta-go-to-profile.png b/public/product/accounts/sso/okta-sso/okta-go-to-profile.png similarity index 100% rename from docs/product/accounts/sso/okta-sso/img/okta-go-to-profile.png rename to public/product/accounts/sso/okta-sso/okta-go-to-profile.png diff --git a/docs/product/accounts/sso/okta-sso/img/okta-provisioned-unable-to-leave.png b/public/product/accounts/sso/okta-sso/okta-provisioned-unable-to-leave.png similarity index 100% rename from docs/product/accounts/sso/okta-sso/img/okta-provisioned-unable-to-leave.png rename to public/product/accounts/sso/okta-sso/okta-provisioned-unable-to-leave.png diff --git a/docs/product/accounts/sso/okta-sso/img/okta-role-restricted-sentry-role-select.png b/public/product/accounts/sso/okta-sso/okta-role-restricted-sentry-role-select.png similarity index 100% rename from docs/product/accounts/sso/okta-sso/img/okta-role-restricted-sentry-role-select.png rename to public/product/accounts/sso/okta-sso/okta-role-restricted-sentry-role-select.png diff --git a/docs/product/accounts/sso/okta-sso/img/okta-sentry-settings-for-okta.png b/public/product/accounts/sso/okta-sso/okta-sentry-settings-for-okta.png similarity index 100% rename from docs/product/accounts/sso/okta-sso/img/okta-sentry-settings-for-okta.png rename to public/product/accounts/sso/okta-sso/okta-sentry-settings-for-okta.png diff --git a/docs/product/accounts/sso/okta-sso/img/okta-sentry-settings-metadata-url.png b/public/product/accounts/sso/okta-sso/okta-sentry-settings-metadata-url.png similarity index 100% rename from docs/product/accounts/sso/okta-sso/img/okta-sentry-settings-metadata-url.png rename to public/product/accounts/sso/okta-sso/okta-sentry-settings-metadata-url.png diff --git a/docs/product/accounts/sso/okta-sso/img/okta-sentry-sso-settings-page.png b/public/product/accounts/sso/okta-sso/okta-sentry-sso-settings-page.png similarity index 100% rename from docs/product/accounts/sso/okta-sso/img/okta-sentry-sso-settings-page.png rename to public/product/accounts/sso/okta-sso/okta-sentry-sso-settings-page.png diff --git a/docs/product/accounts/sso/okta-sso/img/okta-set-group-attribute.png b/public/product/accounts/sso/okta-sso/okta-set-group-attribute.png similarity index 100% rename from docs/product/accounts/sso/okta-sso/img/okta-set-group-attribute.png rename to public/product/accounts/sso/okta-sso/okta-set-group-attribute.png diff --git a/docs/product/accounts/sso/okta-sso/img/okta-settings-for-sentry.png b/public/product/accounts/sso/okta-sso/okta-settings-for-sentry.png similarity index 100% rename from docs/product/accounts/sso/okta-sso/img/okta-settings-for-sentry.png rename to public/product/accounts/sso/okta-sso/okta-settings-for-sentry.png diff --git a/docs/product/accounts/sso/okta-sso/img/okta-setup-instructions-page.png b/public/product/accounts/sso/okta-sso/okta-setup-instructions-page.png similarity index 100% rename from docs/product/accounts/sso/okta-sso/img/okta-setup-instructions-page.png rename to public/product/accounts/sso/okta-sso/okta-setup-instructions-page.png diff --git a/docs/product/accounts/sso/okta-sso/img/okta-user-sync.png b/public/product/accounts/sso/okta-sso/okta-user-sync.png similarity index 100% rename from docs/product/accounts/sso/okta-sso/img/okta-user-sync.png rename to public/product/accounts/sso/okta-sso/okta-user-sync.png diff --git a/docs/product/accounts/sso/okta-sso/img/scim-okta-configure.png b/public/product/accounts/sso/okta-sso/scim-okta-configure.png similarity index 100% rename from docs/product/accounts/sso/okta-sso/img/scim-okta-configure.png rename to public/product/accounts/sso/okta-sso/scim-okta-configure.png diff --git a/docs/product/accounts/sso/okta-sso/img/scim-okta-edit.png b/public/product/accounts/sso/okta-sso/scim-okta-edit.png similarity index 100% rename from docs/product/accounts/sso/okta-sso/img/scim-okta-edit.png rename to public/product/accounts/sso/okta-sso/scim-okta-edit.png diff --git a/docs/product/accounts/sso/okta-sso/img/scim-username-config.png b/public/product/accounts/sso/okta-sso/scim-username-config.png similarity index 100% rename from docs/product/accounts/sso/okta-sso/img/scim-username-config.png rename to public/product/accounts/sso/okta-sso/scim-username-config.png diff --git a/docs/product/accounts/sso/img/ping-configure-sentry.png b/public/product/accounts/sso/ping-configure-sentry.png similarity index 100% rename from docs/product/accounts/sso/img/ping-configure-sentry.png rename to public/product/accounts/sso/ping-configure-sentry.png diff --git a/docs/product/accounts/sso/img/ping-new-app.png b/public/product/accounts/sso/ping-new-app.png similarity index 100% rename from docs/product/accounts/sso/img/ping-new-app.png rename to public/product/accounts/sso/ping-new-app.png diff --git a/docs/product/accounts/sso/img/saml2-map-attributes.png b/public/product/accounts/sso/saml2-map-attributes.png similarity index 100% rename from docs/product/accounts/sso/img/saml2-map-attributes.png rename to public/product/accounts/sso/saml2-map-attributes.png diff --git a/docs/product/accounts/sso/img/saml2-metadata-url.png b/public/product/accounts/sso/saml2-metadata-url.png similarity index 100% rename from docs/product/accounts/sso/img/saml2-metadata-url.png rename to public/product/accounts/sso/saml2-metadata-url.png diff --git a/docs/product/accounts/sso/img/saml2-provider-data.png b/public/product/accounts/sso/saml2-provider-data.png similarity index 100% rename from docs/product/accounts/sso/img/saml2-provider-data.png rename to public/product/accounts/sso/saml2-provider-data.png diff --git a/docs/product/accounts/sso/img/saml2-provider-xml.png b/public/product/accounts/sso/saml2-provider-xml.png similarity index 100% rename from docs/product/accounts/sso/img/saml2-provider-xml.png rename to public/product/accounts/sso/saml2-provider-xml.png diff --git a/docs/product/accounts/sso/img/saml2-success.png b/public/product/accounts/sso/saml2-success.png similarity index 100% rename from docs/product/accounts/sso/img/saml2-success.png rename to public/product/accounts/sso/saml2-success.png diff --git a/docs/product/accounts/sso/img/scim-enable-sentry.png b/public/product/accounts/sso/scim-enable-sentry.png similarity index 100% rename from docs/product/accounts/sso/img/scim-enable-sentry.png rename to public/product/accounts/sso/scim-enable-sentry.png diff --git a/docs/product/accounts/sso/img/scim-sentry-fields.png b/public/product/accounts/sso/scim-sentry-fields.png similarity index 100% rename from docs/product/accounts/sso/img/scim-sentry-fields.png rename to public/product/accounts/sso/scim-sentry-fields.png diff --git a/docs/product/accounts/sso/img/scim-settings-auth.png b/public/product/accounts/sso/scim-settings-auth.png similarity index 100% rename from docs/product/accounts/sso/img/scim-settings-auth.png rename to public/product/accounts/sso/scim-settings-auth.png diff --git a/docs/product/accounts/user-settings/img/change-primary-email.png b/public/product/accounts/user-settings/change-primary-email.png similarity index 100% rename from docs/product/accounts/user-settings/img/change-primary-email.png rename to public/product/accounts/user-settings/change-primary-email.png diff --git a/docs/product/alerts/img/alert-details-example.png b/public/product/alerts/alert-details-example.png similarity index 100% rename from docs/product/alerts/img/alert-details-example.png rename to public/product/alerts/alert-details-example.png diff --git a/docs/product/alerts/img/alert-listing.png b/public/product/alerts/alert-listing.png similarity index 100% rename from docs/product/alerts/img/alert-listing.png rename to public/product/alerts/alert-listing.png diff --git a/docs/product/alerts/create-alerts/img/alert-digest.png b/public/product/alerts/create-alerts/alert-digest.png similarity index 100% rename from docs/product/alerts/create-alerts/img/alert-digest.png rename to public/product/alerts/create-alerts/alert-digest.png diff --git a/docs/product/alerts/create-alerts/img/alert-list-row-menu.png b/public/product/alerts/create-alerts/alert-list-row-menu.png similarity index 100% rename from docs/product/alerts/create-alerts/img/alert-list-row-menu.png rename to public/product/alerts/create-alerts/alert-list-row-menu.png diff --git a/docs/product/alerts/create-alerts/img/alerts-advanced-filters.png b/public/product/alerts/create-alerts/alerts-advanced-filters.png similarity index 100% rename from docs/product/alerts/create-alerts/img/alerts-advanced-filters.png rename to public/product/alerts/create-alerts/alerts-advanced-filters.png diff --git a/docs/product/alerts/create-alerts/img/alerts-notifications-discord.png b/public/product/alerts/create-alerts/alerts-notifications-discord.png similarity index 100% rename from docs/product/alerts/create-alerts/img/alerts-notifications-discord.png rename to public/product/alerts/create-alerts/alerts-notifications-discord.png diff --git a/docs/product/alerts/create-alerts/img/alerts_notifications_15.png b/public/product/alerts/create-alerts/alerts_notifications_15.png similarity index 100% rename from docs/product/alerts/create-alerts/img/alerts_notifications_15.png rename to public/product/alerts/create-alerts/alerts_notifications_15.png diff --git a/docs/product/alerts/create-alerts/img/create-new-alert-rule.png b/public/product/alerts/create-alerts/create-new-alert-rule.png similarity index 100% rename from docs/product/alerts/create-alerts/img/create-new-alert-rule.png rename to public/product/alerts/create-alerts/create-new-alert-rule.png diff --git a/docs/product/alerts/create-alerts/img/issue-change-alert.png b/public/product/alerts/create-alerts/issue-change-alert.png similarity index 100% rename from docs/product/alerts/create-alerts/img/issue-change-alert.png rename to public/product/alerts/create-alerts/issue-change-alert.png diff --git a/docs/product/alerts/create-alerts/img/percent-change.png b/public/product/alerts/create-alerts/percent-change.png similarity index 100% rename from docs/product/alerts/create-alerts/img/percent-change.png rename to public/product/alerts/create-alerts/percent-change.png diff --git a/docs/product/alerts/create-alerts/img/suggested_assignee_all_members.png b/public/product/alerts/create-alerts/suggested_assignee_all_members.png similarity index 100% rename from docs/product/alerts/create-alerts/img/suggested_assignee_all_members.png rename to public/product/alerts/create-alerts/suggested_assignee_all_members.png diff --git a/docs/product/alerts/img/issue-alert-rules.png b/public/product/alerts/issue-alert-rules.png similarity index 100% rename from docs/product/alerts/img/issue-alert-rules.png rename to public/product/alerts/issue-alert-rules.png diff --git a/docs/product/alerts/img/issue-alert-status-page-example.png b/public/product/alerts/issue-alert-status-page-example.png similarity index 100% rename from docs/product/alerts/img/issue-alert-status-page-example.png rename to public/product/alerts/issue-alert-status-page-example.png diff --git a/docs/product/alerts/notifications/img/deploy-emails.png b/public/product/alerts/notifications/deploy-emails.png similarity index 100% rename from docs/product/alerts/notifications/img/deploy-emails.png rename to public/product/alerts/notifications/deploy-emails.png diff --git a/docs/product/alerts/notifications/img/issue-alert-notification-detail.png b/public/product/alerts/notifications/issue-alert-notification-detail.png similarity index 100% rename from docs/product/alerts/notifications/img/issue-alert-notification-detail.png rename to public/product/alerts/notifications/issue-alert-notification-detail.png diff --git a/docs/product/alerts/notifications/img/issue-alert-notification.png b/public/product/alerts/notifications/issue-alert-notification.png similarity index 100% rename from docs/product/alerts/notifications/img/issue-alert-notification.png rename to public/product/alerts/notifications/issue-alert-notification.png diff --git a/docs/product/alerts/notifications/img/us-ereport.png b/public/product/alerts/notifications/us-ereport.png similarity index 100% rename from docs/product/alerts/notifications/img/us-ereport.png rename to public/product/alerts/notifications/us-ereport.png diff --git a/docs/product/codecov/img/codecov-read-timeout.png b/public/product/codecov/codecov-read-timeout.png similarity index 100% rename from docs/product/codecov/img/codecov-read-timeout.png rename to public/product/codecov/codecov-read-timeout.png diff --git a/docs/product/codecov/img/codecov-setup-in-ui.png b/public/product/codecov/codecov-setup-in-ui.png similarity index 100% rename from docs/product/codecov/img/codecov-setup-in-ui.png rename to public/product/codecov/codecov-setup-in-ui.png diff --git a/public/product/crons/getting-started/http/crons-alerts-example.png b/public/product/crons/getting-started/http/crons-alerts-example.png new file mode 100644 index 0000000000000..769cc631c2785 Binary files /dev/null and b/public/product/crons/getting-started/http/crons-alerts-example.png differ diff --git a/docs/product/dashboards/custom-dashboards/img/dashboard-edit.png b/public/product/dashboards/custom-dashboards/dashboard-edit.png similarity index 100% rename from docs/product/dashboards/custom-dashboards/img/dashboard-edit.png rename to public/product/dashboards/custom-dashboards/dashboard-edit.png diff --git a/docs/product/dashboards/custom-dashboards/img/dashboard-management.png b/public/product/dashboards/custom-dashboards/dashboard-management.png similarity index 100% rename from docs/product/dashboards/custom-dashboards/img/dashboard-management.png rename to public/product/dashboards/custom-dashboards/dashboard-management.png diff --git a/docs/product/dashboards/img/dashboard-custom.png b/public/product/dashboards/dashboard-custom.png similarity index 100% rename from docs/product/dashboards/img/dashboard-custom.png rename to public/product/dashboards/dashboard-custom.png diff --git a/docs/product/dashboards/img/dashboard-default.png b/public/product/dashboards/dashboard-default.png similarity index 100% rename from docs/product/dashboards/img/dashboard-default.png rename to public/product/dashboards/dashboard-default.png diff --git a/docs/product/dashboards/widget-builder/img/widget-builder-custom-equation-field.png b/public/product/dashboards/widget-builder/widget-builder-custom-equation-field.png similarity index 100% rename from docs/product/dashboards/widget-builder/img/widget-builder-custom-equation-field.png rename to public/product/dashboards/widget-builder/widget-builder-custom-equation-field.png diff --git a/docs/product/dashboards/widget-builder/img/widget-builder-drag-and-drop-column.png b/public/product/dashboards/widget-builder/widget-builder-drag-and-drop-column.png similarity index 100% rename from docs/product/dashboards/widget-builder/img/widget-builder-drag-and-drop-column.png rename to public/product/dashboards/widget-builder/widget-builder-drag-and-drop-column.png diff --git a/docs/product/dashboards/widget-builder/img/widget-builder-drag-and-drop-group-by.png b/public/product/dashboards/widget-builder/widget-builder-drag-and-drop-group-by.png similarity index 100% rename from docs/product/dashboards/widget-builder/img/widget-builder-drag-and-drop-group-by.png rename to public/product/dashboards/widget-builder/widget-builder-drag-and-drop-group-by.png diff --git a/docs/product/dashboards/widget-builder/img/widget-builder-filter-your-results-example.png b/public/product/dashboards/widget-builder/widget-builder-filter-your-results-example.png similarity index 100% rename from docs/product/dashboards/widget-builder/img/widget-builder-filter-your-results-example.png rename to public/product/dashboards/widget-builder/widget-builder-filter-your-results-example.png diff --git a/docs/product/dashboards/widget-builder/img/widget-builder-overview.png b/public/product/dashboards/widget-builder/widget-builder-overview.png similarity index 100% rename from docs/product/dashboards/widget-builder/img/widget-builder-overview.png rename to public/product/dashboards/widget-builder/widget-builder-overview.png diff --git a/docs/product/dashboards/widget-builder/img/widget-builder-thresholds-hover.png b/public/product/dashboards/widget-builder/widget-builder-thresholds-hover.png similarity index 100% rename from docs/product/dashboards/widget-builder/img/widget-builder-thresholds-hover.png rename to public/product/dashboards/widget-builder/widget-builder-thresholds-hover.png diff --git a/docs/product/dashboards/widget-builder/img/widget-builder-thresholds.png b/public/product/dashboards/widget-builder/widget-builder-thresholds.png similarity index 100% rename from docs/product/dashboards/widget-builder/img/widget-builder-thresholds.png rename to public/product/dashboards/widget-builder/widget-builder-thresholds.png diff --git a/docs/product/dashboards/widget-builder/img/widget-builder-time-series-visualizations.png b/public/product/dashboards/widget-builder/widget-builder-time-series-visualizations.png similarity index 100% rename from docs/product/dashboards/widget-builder/img/widget-builder-time-series-visualizations.png rename to public/product/dashboards/widget-builder/widget-builder-time-series-visualizations.png diff --git a/docs/product/dashboards/widget-library/img/widget-library-response-thresholds-widget.png b/public/product/dashboards/widget-library/widget-library-response-thresholds-widget.png similarity index 100% rename from docs/product/dashboards/widget-library/img/widget-library-response-thresholds-widget.png rename to public/product/dashboards/widget-library/widget-library-response-thresholds-widget.png diff --git a/docs/product/data-management-settings/event-grouping/merging-issues/img/after-merge.png b/public/product/data-management-settings/event-grouping/merging-issues/after-merge.png similarity index 100% rename from docs/product/data-management-settings/event-grouping/merging-issues/img/after-merge.png rename to public/product/data-management-settings/event-grouping/merging-issues/after-merge.png diff --git a/docs/product/data-management-settings/event-grouping/merging-issues/img/before-merge.png b/public/product/data-management-settings/event-grouping/merging-issues/before-merge.png similarity index 100% rename from docs/product/data-management-settings/event-grouping/merging-issues/img/before-merge.png rename to public/product/data-management-settings/event-grouping/merging-issues/before-merge.png diff --git a/docs/product/data-management-settings/event-grouping/merging-issues/img/similar-issues.png b/public/product/data-management-settings/event-grouping/merging-issues/similar-issues.png similarity index 100% rename from docs/product/data-management-settings/event-grouping/merging-issues/img/similar-issues.png rename to public/product/data-management-settings/event-grouping/merging-issues/similar-issues.png diff --git a/docs/product/data-management-settings/event-grouping/sentry-defined-fingerprint.png b/public/product/data-management-settings/event-grouping/sentry-defined-fingerprint.png similarity index 100% rename from docs/product/data-management-settings/event-grouping/sentry-defined-fingerprint.png rename to public/product/data-management-settings/event-grouping/sentry-defined-fingerprint.png diff --git a/docs/product/data-management-settings/filtering/img/builtin-inbound-filters.png b/public/product/data-management-settings/filtering/builtin-inbound-filters.png similarity index 100% rename from docs/product/data-management-settings/filtering/img/builtin-inbound-filters.png rename to public/product/data-management-settings/filtering/builtin-inbound-filters.png diff --git a/docs/product/discover-queries/img/001.png b/public/product/discover-queries/001.png similarity index 100% rename from docs/product/discover-queries/img/001.png rename to public/product/discover-queries/001.png diff --git a/docs/product/discover-queries/img/002.png b/public/product/discover-queries/002.png similarity index 100% rename from docs/product/discover-queries/img/002.png rename to public/product/discover-queries/002.png diff --git a/docs/product/discover-queries/img/003.png b/public/product/discover-queries/003.png similarity index 100% rename from docs/product/discover-queries/img/003.png rename to public/product/discover-queries/003.png diff --git a/docs/product/discover-queries/img/004.png b/public/product/discover-queries/004.png similarity index 100% rename from docs/product/discover-queries/img/004.png rename to public/product/discover-queries/004.png diff --git a/docs/product/discover-queries/img/005.png b/public/product/discover-queries/005.png similarity index 100% rename from docs/product/discover-queries/img/005.png rename to public/product/discover-queries/005.png diff --git a/docs/product/discover-queries/img/006.png b/public/product/discover-queries/006.png similarity index 100% rename from docs/product/discover-queries/img/006.png rename to public/product/discover-queries/006.png diff --git a/docs/product/discover-queries/img/007.png b/public/product/discover-queries/007.png similarity index 100% rename from docs/product/discover-queries/img/007.png rename to public/product/discover-queries/007.png diff --git a/docs/product/discover-queries/img/008.png b/public/product/discover-queries/008.png similarity index 100% rename from docs/product/discover-queries/img/008.png rename to public/product/discover-queries/008.png diff --git a/docs/product/discover-queries/img/009.png b/public/product/discover-queries/009.png similarity index 100% rename from docs/product/discover-queries/img/009.png rename to public/product/discover-queries/009.png diff --git a/docs/product/discover-queries/img/010.png b/public/product/discover-queries/010.png similarity index 100% rename from docs/product/discover-queries/img/010.png rename to public/product/discover-queries/010.png diff --git a/docs/product/discover-queries/img/012.png b/public/product/discover-queries/012.png similarity index 100% rename from docs/product/discover-queries/img/012.png rename to public/product/discover-queries/012.png diff --git a/docs/product/discover-queries/img/013.png b/public/product/discover-queries/013.png similarity index 100% rename from docs/product/discover-queries/img/013.png rename to public/product/discover-queries/013.png diff --git a/docs/product/discover-queries/img/014.png b/public/product/discover-queries/014.png similarity index 100% rename from docs/product/discover-queries/img/014.png rename to public/product/discover-queries/014.png diff --git a/docs/product/discover-queries/img/discover-event-details.png b/public/product/discover-queries/discover-event-details.png similarity index 100% rename from docs/product/discover-queries/img/discover-event-details.png rename to public/product/discover-queries/discover-event-details.png diff --git a/docs/product/discover-queries/img/discover-facet-map.png b/public/product/discover-queries/discover-facet-map.png similarity index 100% rename from docs/product/discover-queries/img/discover-facet-map.png rename to public/product/discover-queries/discover-facet-map.png diff --git a/docs/product/discover-queries/img/discover-homepage.png b/public/product/discover-queries/discover-homepage.png similarity index 100% rename from docs/product/discover-queries/img/discover-homepage.png rename to public/product/discover-queries/discover-homepage.png diff --git a/docs/product/discover-queries/img/discover-results.png b/public/product/discover-queries/discover-results.png similarity index 100% rename from docs/product/discover-queries/img/discover-results.png rename to public/product/discover-queries/discover-results.png diff --git a/docs/product/discover-queries/img/discover-table-cell.png b/public/product/discover-queries/discover-table-cell.png similarity index 100% rename from docs/product/discover-queries/img/discover-table-cell.png rename to public/product/discover-queries/discover-table-cell.png diff --git a/docs/product/discover-queries/query-builder/img/add_equation.gif b/public/product/discover-queries/query-builder/add_equation.gif similarity index 100% rename from docs/product/discover-queries/query-builder/img/add_equation.gif rename to public/product/discover-queries/query-builder/add_equation.gif diff --git a/docs/product/integrations/cloud-monitoring/aws-lambda/img/aws_account_1.png b/public/product/integrations/cloud-monitoring/aws-lambda/aws_account_1.png similarity index 100% rename from docs/product/integrations/cloud-monitoring/aws-lambda/img/aws_account_1.png rename to public/product/integrations/cloud-monitoring/aws-lambda/aws_account_1.png diff --git a/docs/product/integrations/cloud-monitoring/aws-lambda/img/aws_account_2.png b/public/product/integrations/cloud-monitoring/aws-lambda/aws_account_2.png similarity index 100% rename from docs/product/integrations/cloud-monitoring/aws-lambda/img/aws_account_2.png rename to public/product/integrations/cloud-monitoring/aws-lambda/aws_account_2.png diff --git a/docs/product/integrations/cloud-monitoring/aws-lambda/img/cloudformation-create-stack.png b/public/product/integrations/cloud-monitoring/aws-lambda/cloudformation-create-stack.png similarity index 100% rename from docs/product/integrations/cloud-monitoring/aws-lambda/img/cloudformation-create-stack.png rename to public/product/integrations/cloud-monitoring/aws-lambda/cloudformation-create-stack.png diff --git a/docs/product/integrations/cloud-monitoring/aws-lambda/img/cloudformation-stack-create-complete.png b/public/product/integrations/cloud-monitoring/aws-lambda/cloudformation-stack-create-complete.png similarity index 100% rename from docs/product/integrations/cloud-monitoring/aws-lambda/img/cloudformation-stack-create-complete.png rename to public/product/integrations/cloud-monitoring/aws-lambda/cloudformation-stack-create-complete.png diff --git a/docs/product/integrations/cloud-monitoring/aws-lambda/img/directory.png b/public/product/integrations/cloud-monitoring/aws-lambda/directory.png similarity index 100% rename from docs/product/integrations/cloud-monitoring/aws-lambda/img/directory.png rename to public/product/integrations/cloud-monitoring/aws-lambda/directory.png diff --git a/docs/product/integrations/cloud-monitoring/aws-lambda/img/env_variables.png b/public/product/integrations/cloud-monitoring/aws-lambda/env_variables.png similarity index 100% rename from docs/product/integrations/cloud-monitoring/aws-lambda/img/env_variables.png rename to public/product/integrations/cloud-monitoring/aws-lambda/env_variables.png diff --git a/docs/product/integrations/cloud-monitoring/aws-lambda/img/env_variables_python.png b/public/product/integrations/cloud-monitoring/aws-lambda/env_variables_python.png similarity index 100% rename from docs/product/integrations/cloud-monitoring/aws-lambda/img/env_variables_python.png rename to public/product/integrations/cloud-monitoring/aws-lambda/env_variables_python.png diff --git a/docs/product/integrations/cloud-monitoring/aws-lambda/img/handler_python.png b/public/product/integrations/cloud-monitoring/aws-lambda/handler_python.png similarity index 100% rename from docs/product/integrations/cloud-monitoring/aws-lambda/img/handler_python.png rename to public/product/integrations/cloud-monitoring/aws-lambda/handler_python.png diff --git a/docs/product/integrations/cloud-monitoring/aws-lambda/img/integration_detail.png b/public/product/integrations/cloud-monitoring/aws-lambda/integration_detail.png similarity index 100% rename from docs/product/integrations/cloud-monitoring/aws-lambda/img/integration_detail.png rename to public/product/integrations/cloud-monitoring/aws-lambda/integration_detail.png diff --git a/docs/product/integrations/cloud-monitoring/aws-lambda/img/layer.png b/public/product/integrations/cloud-monitoring/aws-lambda/layer.png similarity index 100% rename from docs/product/integrations/cloud-monitoring/aws-lambda/img/layer.png rename to public/product/integrations/cloud-monitoring/aws-lambda/layer.png diff --git a/docs/product/integrations/cloud-monitoring/aws-lambda/img/layer_python.png b/public/product/integrations/cloud-monitoring/aws-lambda/layer_python.png similarity index 100% rename from docs/product/integrations/cloud-monitoring/aws-lambda/img/layer_python.png rename to public/product/integrations/cloud-monitoring/aws-lambda/layer_python.png diff --git a/docs/product/integrations/cloud-monitoring/aws-lambda/img/project.png b/public/product/integrations/cloud-monitoring/aws-lambda/project.png similarity index 100% rename from docs/product/integrations/cloud-monitoring/aws-lambda/img/project.png rename to public/product/integrations/cloud-monitoring/aws-lambda/project.png diff --git a/docs/product/integrations/cloud-monitoring/aws-lambda/img/select_lambdas.png b/public/product/integrations/cloud-monitoring/aws-lambda/select_lambdas.png similarity index 100% rename from docs/product/integrations/cloud-monitoring/aws-lambda/img/select_lambdas.png rename to public/product/integrations/cloud-monitoring/aws-lambda/select_lambdas.png diff --git a/docs/product/integrations/cloud-monitoring/aws-lambda/img/sentry-manage-functions.png b/public/product/integrations/cloud-monitoring/aws-lambda/sentry-manage-functions.png similarity index 100% rename from docs/product/integrations/cloud-monitoring/aws-lambda/img/sentry-manage-functions.png rename to public/product/integrations/cloud-monitoring/aws-lambda/sentry-manage-functions.png diff --git a/docs/product/integrations/cloud-monitoring/gcp-cloud-run/img/sentry-choose-platform.png b/public/product/integrations/cloud-monitoring/gcp-cloud-run/sentry-choose-platform.png similarity index 100% rename from docs/product/integrations/cloud-monitoring/gcp-cloud-run/img/sentry-choose-platform.png rename to public/product/integrations/cloud-monitoring/gcp-cloud-run/sentry-choose-platform.png diff --git a/docs/product/integrations/data-visualization/amazon-sqs/img/amazon-sqs.png b/public/product/integrations/data-visualization/amazon-sqs/amazon-sqs.png similarity index 100% rename from docs/product/integrations/data-visualization/amazon-sqs/img/amazon-sqs.png rename to public/product/integrations/data-visualization/amazon-sqs/amazon-sqs.png diff --git a/docs/product/integrations/data-visualization/segment/img/segment.png b/public/product/integrations/data-visualization/segment/segment.png similarity index 100% rename from docs/product/integrations/data-visualization/segment/img/segment.png rename to public/product/integrations/data-visualization/segment/segment.png diff --git a/docs/product/integrations/data-visualization/splunk/img/splunk-data-forwarding-setting-complete.png b/public/product/integrations/data-visualization/splunk/splunk-data-forwarding-setting-complete.png similarity index 100% rename from docs/product/integrations/data-visualization/splunk/img/splunk-data-forwarding-setting-complete.png rename to public/product/integrations/data-visualization/splunk/splunk-data-forwarding-setting-complete.png diff --git a/docs/product/integrations/data-visualization/splunk/img/splunk-data-forwarding-setting.png b/public/product/integrations/data-visualization/splunk/splunk-data-forwarding-setting.png similarity index 100% rename from docs/product/integrations/data-visualization/splunk/img/splunk-data-forwarding-setting.png rename to public/product/integrations/data-visualization/splunk/splunk-data-forwarding-setting.png diff --git a/docs/product/integrations/data-visualization/splunk/img/splunk-data-inputs.png b/public/product/integrations/data-visualization/splunk/splunk-data-inputs.png similarity index 100% rename from docs/product/integrations/data-visualization/splunk/img/splunk-data-inputs.png rename to public/product/integrations/data-visualization/splunk/splunk-data-inputs.png diff --git a/docs/product/integrations/data-visualization/splunk/img/splunk-hec-global-settings.png b/public/product/integrations/data-visualization/splunk/splunk-hec-global-settings.png similarity index 100% rename from docs/product/integrations/data-visualization/splunk/img/splunk-hec-global-settings.png rename to public/product/integrations/data-visualization/splunk/splunk-hec-global-settings.png diff --git a/docs/product/integrations/data-visualization/splunk/img/splunk-hec-inputs.png b/public/product/integrations/data-visualization/splunk/splunk-hec-inputs.png similarity index 100% rename from docs/product/integrations/data-visualization/splunk/img/splunk-hec-inputs.png rename to public/product/integrations/data-visualization/splunk/splunk-hec-inputs.png diff --git a/docs/product/integrations/data-visualization/splunk/img/splunk-new-http-input.png b/public/product/integrations/data-visualization/splunk/splunk-new-http-input.png similarity index 100% rename from docs/product/integrations/data-visualization/splunk/img/splunk-new-http-input.png rename to public/product/integrations/data-visualization/splunk/splunk-new-http-input.png diff --git a/docs/product/integrations/data-visualization/splunk/img/splunk-new-input-final.png b/public/product/integrations/data-visualization/splunk/splunk-new-input-final.png similarity index 100% rename from docs/product/integrations/data-visualization/splunk/img/splunk-new-input-final.png rename to public/product/integrations/data-visualization/splunk/splunk-new-input-final.png diff --git a/docs/product/integrations/data-visualization/splunk/img/splunk-new-input-index.png b/public/product/integrations/data-visualization/splunk/splunk-new-input-index.png similarity index 100% rename from docs/product/integrations/data-visualization/splunk/img/splunk-new-input-index.png rename to public/product/integrations/data-visualization/splunk/splunk-new-input-index.png diff --git a/docs/product/integrations/data-visualization/splunk/img/splunk-new-input-name.png b/public/product/integrations/data-visualization/splunk/splunk-new-input-name.png similarity index 100% rename from docs/product/integrations/data-visualization/splunk/img/splunk-new-input-name.png rename to public/product/integrations/data-visualization/splunk/splunk-new-input-name.png diff --git a/docs/product/integrations/data-visualization/splunk/img/splunk-new-input-review.png b/public/product/integrations/data-visualization/splunk/splunk-new-input-review.png similarity index 100% rename from docs/product/integrations/data-visualization/splunk/img/splunk-new-input-review.png rename to public/product/integrations/data-visualization/splunk/splunk-new-input-review.png diff --git a/docs/product/integrations/data-visualization/splunk/img/splunk-search-sentry.png b/public/product/integrations/data-visualization/splunk/splunk-search-sentry.png similarity index 100% rename from docs/product/integrations/data-visualization/splunk/img/splunk-search-sentry.png rename to public/product/integrations/data-visualization/splunk/splunk-search-sentry.png diff --git a/docs/product/integrations/data-visualization/splunk/img/splunk-settings.png b/public/product/integrations/data-visualization/splunk/splunk-settings.png similarity index 100% rename from docs/product/integrations/data-visualization/splunk/img/splunk-settings.png rename to public/product/integrations/data-visualization/splunk/splunk-settings.png diff --git a/docs/product/integrations/data-visualization/splunk/img/splunk.png b/public/product/integrations/data-visualization/splunk/splunk.png similarity index 100% rename from docs/product/integrations/data-visualization/splunk/img/splunk.png rename to public/product/integrations/data-visualization/splunk/splunk.png diff --git a/docs/product/integrations/debugging/rookout/img/rookout.png b/public/product/integrations/debugging/rookout/rookout.png similarity index 100% rename from docs/product/integrations/debugging/rookout/img/rookout.png rename to public/product/integrations/debugging/rookout/rookout.png diff --git a/docs/product/integrations/debugging/rookout/img/rookout_line_in_stack_trace.png b/public/product/integrations/debugging/rookout/rookout_line_in_stack_trace.png similarity index 100% rename from docs/product/integrations/debugging/rookout/img/rookout_line_in_stack_trace.png rename to public/product/integrations/debugging/rookout/rookout_line_in_stack_trace.png diff --git a/docs/product/integrations/debugging/rookout/img/rookout_modal.png b/public/product/integrations/debugging/rookout/rookout_modal.png similarity index 100% rename from docs/product/integrations/debugging/rookout/img/rookout_modal.png rename to public/product/integrations/debugging/rookout/rookout_modal.png diff --git a/docs/product/integrations/debugging/rookout/img/rookout_screen_1.png b/public/product/integrations/debugging/rookout/rookout_screen_1.png similarity index 100% rename from docs/product/integrations/debugging/rookout/img/rookout_screen_1.png rename to public/product/integrations/debugging/rookout/rookout_screen_1.png diff --git a/docs/product/integrations/deployment/heroku/img/heroku-config.png b/public/product/integrations/deployment/heroku/heroku-config.png similarity index 100% rename from docs/product/integrations/deployment/heroku/img/heroku-config.png rename to public/product/integrations/deployment/heroku/heroku-config.png diff --git a/docs/product/integrations/deployment/heroku/img/heroku-configure-repo-integration.png b/public/product/integrations/deployment/heroku/heroku-configure-repo-integration.png similarity index 100% rename from docs/product/integrations/deployment/heroku/img/heroku-configure-repo-integration.png rename to public/product/integrations/deployment/heroku/heroku-configure-repo-integration.png diff --git a/docs/product/integrations/deployment/heroku/img/heroku-integration-detail.png b/public/product/integrations/deployment/heroku/heroku-integration-detail.png similarity index 100% rename from docs/product/integrations/deployment/heroku/img/heroku-integration-detail.png rename to public/product/integrations/deployment/heroku/heroku-integration-detail.png diff --git a/docs/product/integrations/deployment/heroku/img/heroku-project-config.png b/public/product/integrations/deployment/heroku/heroku-project-config.png similarity index 100% rename from docs/product/integrations/deployment/heroku/img/heroku-project-config.png rename to public/product/integrations/deployment/heroku/heroku-project-config.png diff --git a/docs/product/integrations/deployment/heroku/img/heroku-repo-add.png b/public/product/integrations/deployment/heroku/heroku-repo-add.png similarity index 100% rename from docs/product/integrations/deployment/heroku/img/heroku-repo-add.png rename to public/product/integrations/deployment/heroku/heroku-repo-add.png diff --git a/docs/product/integrations/deployment/vercel/img/vercel_delete_internal_integration.png b/public/product/integrations/deployment/vercel/vercel_delete_internal_integration.png similarity index 100% rename from docs/product/integrations/deployment/vercel/img/vercel_delete_internal_integration.png rename to public/product/integrations/deployment/vercel/vercel_delete_internal_integration.png diff --git a/docs/product/integrations/deployment/vercel/img/vercel_env_vars.png b/public/product/integrations/deployment/vercel/vercel_env_vars.png similarity index 100% rename from docs/product/integrations/deployment/vercel/img/vercel_env_vars.png rename to public/product/integrations/deployment/vercel/vercel_env_vars.png diff --git a/docs/product/integrations/deployment/vercel/img/vercel_failed_to_fetch.png b/public/product/integrations/deployment/vercel/vercel_failed_to_fetch.png similarity index 100% rename from docs/product/integrations/deployment/vercel/img/vercel_failed_to_fetch.png rename to public/product/integrations/deployment/vercel/vercel_failed_to_fetch.png diff --git a/docs/product/integrations/deployment/vercel/img/vercel_install.png b/public/product/integrations/deployment/vercel/vercel_install.png similarity index 100% rename from docs/product/integrations/deployment/vercel/img/vercel_install.png rename to public/product/integrations/deployment/vercel/vercel_install.png diff --git a/docs/product/integrations/deployment/vercel/img/vercel_internal_integration.png b/public/product/integrations/deployment/vercel/vercel_internal_integration.png similarity index 100% rename from docs/product/integrations/deployment/vercel/img/vercel_internal_integration.png rename to public/product/integrations/deployment/vercel/vercel_internal_integration.png diff --git a/docs/product/integrations/deployment/vercel/img/vercel_link_project.png b/public/product/integrations/deployment/vercel/vercel_link_project.png similarity index 100% rename from docs/product/integrations/deployment/vercel/img/vercel_link_project.png rename to public/product/integrations/deployment/vercel/vercel_link_project.png diff --git a/docs/product/integrations/feature-flag/split/img/split.png b/public/product/integrations/feature-flag/split/split.png similarity index 100% rename from docs/product/integrations/feature-flag/split/img/split.png rename to public/product/integrations/feature-flag/split/split.png diff --git a/docs/product/integrations/integration-platform/img/alert-rules.png b/public/product/integrations/integration-platform/alert-rules.png similarity index 100% rename from docs/product/integrations/integration-platform/img/alert-rules.png rename to public/product/integrations/integration-platform/alert-rules.png diff --git a/docs/product/integrations/integration-platform/img/authentication-flow.png b/public/product/integrations/integration-platform/authentication-flow.png similarity index 100% rename from docs/product/integrations/integration-platform/img/authentication-flow.png rename to public/product/integrations/integration-platform/authentication-flow.png diff --git a/docs/product/integrations/integration-platform/img/dev-settings.png b/public/product/integrations/integration-platform/dev-settings.png similarity index 100% rename from docs/product/integrations/integration-platform/img/dev-settings.png rename to public/product/integrations/integration-platform/dev-settings.png diff --git a/docs/product/integrations/integration-platform/img/integration-directory.png b/public/product/integrations/integration-platform/integration-directory.png similarity index 100% rename from docs/product/integrations/integration-platform/img/integration-directory.png rename to public/product/integrations/integration-platform/integration-directory.png diff --git a/docs/product/integrations/integration-platform/img/permissions.png b/public/product/integrations/integration-platform/permissions.png similarity index 100% rename from docs/product/integrations/integration-platform/img/permissions.png rename to public/product/integrations/integration-platform/permissions.png diff --git a/docs/product/integrations/integration-platform/img/publish-button.png b/public/product/integrations/integration-platform/publish-button.png similarity index 100% rename from docs/product/integrations/integration-platform/img/publish-button.png rename to public/product/integrations/integration-platform/publish-button.png diff --git a/docs/product/integrations/integration-platform/img/reference-implementation-frontend.png b/public/product/integrations/integration-platform/reference-implementation-frontend.png similarity index 100% rename from docs/product/integrations/integration-platform/img/reference-implementation-frontend.png rename to public/product/integrations/integration-platform/reference-implementation-frontend.png diff --git a/docs/product/integrations/integration-platform/img/tokens.png b/public/product/integrations/integration-platform/tokens.png similarity index 100% rename from docs/product/integrations/integration-platform/img/tokens.png rename to public/product/integrations/integration-platform/tokens.png diff --git a/docs/product/integrations/integration-platform/ui-components/img/alert-rule-component-action-example.png b/public/product/integrations/integration-platform/ui-components/alert-rule-component-action-example.png similarity index 100% rename from docs/product/integrations/integration-platform/ui-components/img/alert-rule-component-action-example.png rename to public/product/integrations/integration-platform/ui-components/alert-rule-component-action-example.png diff --git a/docs/product/integrations/integration-platform/ui-components/img/alert-rule-component-modal-example.png b/public/product/integrations/integration-platform/ui-components/alert-rule-component-modal-example.png similarity index 100% rename from docs/product/integrations/integration-platform/ui-components/img/alert-rule-component-modal-example.png rename to public/product/integrations/integration-platform/ui-components/alert-rule-component-modal-example.png diff --git a/docs/product/integrations/integration-platform/ui-components/img/issue-sidebar-icons.png b/public/product/integrations/integration-platform/ui-components/issue-sidebar-icons.png similarity index 100% rename from docs/product/integrations/integration-platform/ui-components/img/issue-sidebar-icons.png rename to public/product/integrations/integration-platform/ui-components/issue-sidebar-icons.png diff --git a/docs/product/integrations/integration-platform/ui-components/img/stack-trace-example.png b/public/product/integrations/integration-platform/ui-components/stack-trace-example.png similarity index 100% rename from docs/product/integrations/integration-platform/ui-components/img/stack-trace-example.png rename to public/product/integrations/integration-platform/ui-components/stack-trace-example.png diff --git a/docs/product/integrations/integration-platform/img/webhook-checkbox.png b/public/product/integrations/integration-platform/webhook-checkbox.png similarity index 100% rename from docs/product/integrations/integration-platform/img/webhook-checkbox.png rename to public/product/integrations/integration-platform/webhook-checkbox.png diff --git a/docs/product/integrations/issue-tracking/asana/img/asana.png b/public/product/integrations/issue-tracking/asana/asana.png similarity index 100% rename from docs/product/integrations/issue-tracking/asana/img/asana.png rename to public/product/integrations/issue-tracking/asana/asana.png diff --git a/docs/product/integrations/issue-tracking/clickup/img/click-up.png b/public/product/integrations/issue-tracking/clickup/click-up.png similarity index 100% rename from docs/product/integrations/issue-tracking/clickup/img/click-up.png rename to public/product/integrations/issue-tracking/clickup/click-up.png diff --git a/docs/product/integrations/issue-tracking/height/img/height-create-issue.png b/public/product/integrations/issue-tracking/height/height-create-issue.png similarity index 100% rename from docs/product/integrations/issue-tracking/height/img/height-create-issue.png rename to public/product/integrations/issue-tracking/height/height-create-issue.png diff --git a/docs/product/integrations/issue-tracking/height/img/height-install.png b/public/product/integrations/issue-tracking/height/height-install.png similarity index 100% rename from docs/product/integrations/issue-tracking/height/img/height-install.png rename to public/product/integrations/issue-tracking/height/height-install.png diff --git a/docs/product/integrations/issue-tracking/height/img/height-link-issue.png b/public/product/integrations/issue-tracking/height/height-link-issue.png similarity index 100% rename from docs/product/integrations/issue-tracking/height/img/height-link-issue.png rename to public/product/integrations/issue-tracking/height/height-link-issue.png diff --git a/docs/product/integrations/issue-tracking/height/img/height-rule.png b/public/product/integrations/issue-tracking/height/height-rule.png similarity index 100% rename from docs/product/integrations/issue-tracking/height/img/height-rule.png rename to public/product/integrations/issue-tracking/height/height-rule.png diff --git a/docs/product/integrations/issue-tracking/incidentio/img/incidentio-attach-post.png b/public/product/integrations/issue-tracking/incidentio/incidentio-attach-post.png similarity index 100% rename from docs/product/integrations/issue-tracking/incidentio/img/incidentio-attach-post.png rename to public/product/integrations/issue-tracking/incidentio/incidentio-attach-post.png diff --git a/docs/product/integrations/issue-tracking/incidentio/img/incidentio-attach-prompt.png b/public/product/integrations/issue-tracking/incidentio/incidentio-attach-prompt.png similarity index 100% rename from docs/product/integrations/issue-tracking/incidentio/img/incidentio-attach-prompt.png rename to public/product/integrations/issue-tracking/incidentio/incidentio-attach-prompt.png diff --git a/docs/product/integrations/issue-tracking/incidentio/img/incidentio-install.png b/public/product/integrations/issue-tracking/incidentio/incidentio-install.png similarity index 100% rename from docs/product/integrations/issue-tracking/incidentio/img/incidentio-install.png rename to public/product/integrations/issue-tracking/incidentio/incidentio-install.png diff --git a/docs/product/integrations/issue-tracking/incidentio/img/incidentio-issue-sync.png b/public/product/integrations/issue-tracking/incidentio/incidentio-issue-sync.png similarity index 100% rename from docs/product/integrations/issue-tracking/incidentio/img/incidentio-issue-sync.png rename to public/product/integrations/issue-tracking/incidentio/incidentio-issue-sync.png diff --git a/docs/product/integrations/issue-tracking/incidentio/img/incidentio-link-issue.png b/public/product/integrations/issue-tracking/incidentio/incidentio-link-issue.png similarity index 100% rename from docs/product/integrations/issue-tracking/incidentio/img/incidentio-link-issue.png rename to public/product/integrations/issue-tracking/incidentio/incidentio-link-issue.png diff --git a/docs/product/integrations/issue-tracking/incidentio/img/incidentio-slack-install.png b/public/product/integrations/issue-tracking/incidentio/incidentio-slack-install.png similarity index 100% rename from docs/product/integrations/issue-tracking/incidentio/img/incidentio-slack-install.png rename to public/product/integrations/issue-tracking/incidentio/incidentio-slack-install.png diff --git a/docs/product/integrations/issue-tracking/jira/img/jira-create-issue.png b/public/product/integrations/issue-tracking/jira/jira-create-issue.png similarity index 100% rename from docs/product/integrations/issue-tracking/jira/img/jira-create-issue.png rename to public/product/integrations/issue-tracking/jira/jira-create-issue.png diff --git a/docs/product/integrations/issue-tracking/jira/img/jira-install.png b/public/product/integrations/issue-tracking/jira/jira-install.png similarity index 100% rename from docs/product/integrations/issue-tracking/jira/img/jira-install.png rename to public/product/integrations/issue-tracking/jira/jira-install.png diff --git a/docs/product/integrations/issue-tracking/jira/img/jira-link-issue.png b/public/product/integrations/issue-tracking/jira/jira-link-issue.png similarity index 100% rename from docs/product/integrations/issue-tracking/jira/img/jira-link-issue.png rename to public/product/integrations/issue-tracking/jira/jira-link-issue.png diff --git a/docs/product/integrations/issue-tracking/jira/img/jira-overview.png b/public/product/integrations/issue-tracking/jira/jira-overview.png similarity index 100% rename from docs/product/integrations/issue-tracking/jira/img/jira-overview.png rename to public/product/integrations/issue-tracking/jira/jira-overview.png diff --git a/docs/product/integrations/issue-tracking/jira/img/jira-something-went-wrong.png b/public/product/integrations/issue-tracking/jira/jira-something-went-wrong.png similarity index 100% rename from docs/product/integrations/issue-tracking/jira/img/jira-something-went-wrong.png rename to public/product/integrations/issue-tracking/jira/jira-something-went-wrong.png diff --git a/docs/product/integrations/issue-tracking/jira/img/jira-sync.png b/public/product/integrations/issue-tracking/jira/jira-sync.png similarity index 100% rename from docs/product/integrations/issue-tracking/jira/img/jira-sync.png rename to public/product/integrations/issue-tracking/jira/jira-sync.png diff --git a/docs/product/integrations/issue-tracking/jira/img/jira-ticket-rule.png b/public/product/integrations/issue-tracking/jira/jira-ticket-rule.png similarity index 100% rename from docs/product/integrations/issue-tracking/jira/img/jira-ticket-rule.png rename to public/product/integrations/issue-tracking/jira/jira-ticket-rule.png diff --git a/docs/product/integrations/issue-tracking/linear/img/linear-create-issue.png b/public/product/integrations/issue-tracking/linear/linear-create-issue.png similarity index 100% rename from docs/product/integrations/issue-tracking/linear/img/linear-create-issue.png rename to public/product/integrations/issue-tracking/linear/linear-create-issue.png diff --git a/docs/product/integrations/issue-tracking/linear/img/linear-install-pg.png b/public/product/integrations/issue-tracking/linear/linear-install-pg.png similarity index 100% rename from docs/product/integrations/issue-tracking/linear/img/linear-install-pg.png rename to public/product/integrations/issue-tracking/linear/linear-install-pg.png diff --git a/docs/product/integrations/issue-tracking/linear/img/linear-link-issue.png b/public/product/integrations/issue-tracking/linear/linear-link-issue.png similarity index 100% rename from docs/product/integrations/issue-tracking/linear/img/linear-link-issue.png rename to public/product/integrations/issue-tracking/linear/linear-link-issue.png diff --git a/docs/product/integrations/issue-tracking/linear/img/linear-rule.png b/public/product/integrations/issue-tracking/linear/linear-rule.png similarity index 100% rename from docs/product/integrations/issue-tracking/linear/img/linear-rule.png rename to public/product/integrations/issue-tracking/linear/linear-rule.png diff --git a/docs/product/integrations/issue-tracking/shortcut/img/shortcut.png b/public/product/integrations/issue-tracking/shortcut/shortcut.png similarity index 100% rename from docs/product/integrations/issue-tracking/shortcut/img/shortcut.png rename to public/product/integrations/issue-tracking/shortcut/shortcut.png diff --git a/docs/product/integrations/integration-platform/ui-components/img/shortcut_create_story_with_issue.png b/public/product/integrations/issue-tracking/shortcut/shortcut_create_story_with_issue.png similarity index 100% rename from docs/product/integrations/integration-platform/ui-components/img/shortcut_create_story_with_issue.png rename to public/product/integrations/issue-tracking/shortcut/shortcut_create_story_with_issue.png diff --git a/docs/product/integrations/integration-platform/ui-components/img/shortcut_story_in_linked_issues_82.png b/public/product/integrations/issue-tracking/shortcut/shortcut_story_in_linked_issues_82.png similarity index 100% rename from docs/product/integrations/integration-platform/ui-components/img/shortcut_story_in_linked_issues_82.png rename to public/product/integrations/issue-tracking/shortcut/shortcut_story_in_linked_issues_82.png diff --git a/docs/product/integrations/issue-tracking/teamwork/img/teamwork.png b/public/product/integrations/issue-tracking/teamwork/teamwork.png similarity index 100% rename from docs/product/integrations/issue-tracking/teamwork/img/teamwork.png rename to public/product/integrations/issue-tracking/teamwork/teamwork.png diff --git a/docs/product/integrations/notification-incidents/discord/img/discord-add-issue-alert.png b/public/product/integrations/notification-incidents/discord/discord-add-issue-alert.png similarity index 100% rename from docs/product/integrations/notification-incidents/discord/img/discord-add-issue-alert.png rename to public/product/integrations/notification-incidents/discord/discord-add-issue-alert.png diff --git a/docs/product/integrations/notification-incidents/discord/img/discord-copy-channel-link.png b/public/product/integrations/notification-incidents/discord/discord-copy-channel-link.png similarity index 100% rename from docs/product/integrations/notification-incidents/discord/img/discord-copy-channel-link.png rename to public/product/integrations/notification-incidents/discord/discord-copy-channel-link.png diff --git a/docs/product/integrations/notification-incidents/discord/img/discord-identity-link-page.png b/public/product/integrations/notification-incidents/discord/discord-identity-link-page.png similarity index 100% rename from docs/product/integrations/notification-incidents/discord/img/discord-identity-link-page.png rename to public/product/integrations/notification-incidents/discord/discord-identity-link-page.png diff --git a/docs/product/integrations/notification-incidents/discord/img/discord-integration-details.png b/public/product/integrations/notification-incidents/discord/discord-integration-details.png similarity index 100% rename from docs/product/integrations/notification-incidents/discord/img/discord-integration-details.png rename to public/product/integrations/notification-incidents/discord/discord-integration-details.png diff --git a/docs/product/integrations/notification-incidents/discord/img/discord-issue-alert-demo.gif b/public/product/integrations/notification-incidents/discord/discord-issue-alert-demo.gif similarity index 100% rename from docs/product/integrations/notification-incidents/discord/img/discord-issue-alert-demo.gif rename to public/product/integrations/notification-incidents/discord/discord-issue-alert-demo.gif diff --git a/docs/product/integrations/notification-incidents/discord/img/discord-issue-alert.png b/public/product/integrations/notification-incidents/discord/discord-issue-alert.png similarity index 100% rename from docs/product/integrations/notification-incidents/discord/img/discord-issue-alert.png rename to public/product/integrations/notification-incidents/discord/discord-issue-alert.png diff --git a/docs/product/integrations/notification-incidents/discord/img/discord-link-channel-id.png b/public/product/integrations/notification-incidents/discord/discord-link-channel-id.png similarity index 100% rename from docs/product/integrations/notification-incidents/discord/img/discord-link-channel-id.png rename to public/product/integrations/notification-incidents/discord/discord-link-channel-id.png diff --git a/docs/product/integrations/notification-incidents/discord/img/discord-metric-alert-demo.gif b/public/product/integrations/notification-incidents/discord/discord-metric-alert-demo.gif similarity index 100% rename from docs/product/integrations/notification-incidents/discord/img/discord-metric-alert-demo.gif rename to public/product/integrations/notification-incidents/discord/discord-metric-alert-demo.gif diff --git a/docs/product/integrations/notification-incidents/discord/img/discord-server-select.png b/public/product/integrations/notification-incidents/discord/discord-server-select.png similarity index 100% rename from docs/product/integrations/notification-incidents/discord/img/discord-server-select.png rename to public/product/integrations/notification-incidents/discord/discord-server-select.png diff --git a/docs/product/integrations/notification-incidents/msteams/img/msteams-add-action.png b/public/product/integrations/notification-incidents/msteams/msteams-add-action.png similarity index 100% rename from docs/product/integrations/notification-incidents/msteams/img/msteams-add-action.png rename to public/product/integrations/notification-incidents/msteams/msteams-add-action.png diff --git a/docs/product/integrations/notification-incidents/msteams/img/msteams-add-to-team.png b/public/product/integrations/notification-incidents/msteams/msteams-add-to-team.png similarity index 100% rename from docs/product/integrations/notification-incidents/msteams/img/msteams-add-to-team.png rename to public/product/integrations/notification-incidents/msteams/msteams-add-to-team.png diff --git a/docs/product/integrations/notification-incidents/msteams/img/msteams-alert-message.png b/public/product/integrations/notification-incidents/msteams/msteams-alert-message.png similarity index 100% rename from docs/product/integrations/notification-incidents/msteams/img/msteams-alert-message.png rename to public/product/integrations/notification-incidents/msteams/msteams-alert-message.png diff --git a/docs/product/integrations/notification-incidents/msteams/img/msteams-link-identity.png b/public/product/integrations/notification-incidents/msteams/msteams-link-identity.png similarity index 100% rename from docs/product/integrations/notification-incidents/msteams/img/msteams-link-identity.png rename to public/product/integrations/notification-incidents/msteams/msteams-link-identity.png diff --git a/docs/product/integrations/notification-incidents/msteams/img/msteams-welcome-message.png b/public/product/integrations/notification-incidents/msteams/msteams-welcome-message.png similarity index 100% rename from docs/product/integrations/notification-incidents/msteams/img/msteams-welcome-message.png rename to public/product/integrations/notification-incidents/msteams/msteams-welcome-message.png diff --git a/docs/product/integrations/notification-incidents/msteams/img/msteams_metric_alert_rule.png b/public/product/integrations/notification-incidents/msteams/msteams_metric_alert_rule.png similarity index 100% rename from docs/product/integrations/notification-incidents/msteams/img/msteams_metric_alert_rule.png rename to public/product/integrations/notification-incidents/msteams/msteams_metric_alert_rule.png diff --git a/docs/product/integrations/notification-incidents/opsgenie/img/opsgenie-config.png b/public/product/integrations/notification-incidents/opsgenie/opsgenie-config.png similarity index 100% rename from docs/product/integrations/notification-incidents/opsgenie/img/opsgenie-config.png rename to public/product/integrations/notification-incidents/opsgenie/opsgenie-config.png diff --git a/docs/product/integrations/notification-incidents/opsgenie/img/opsgenie-form.png b/public/product/integrations/notification-incidents/opsgenie/opsgenie-form.png similarity index 100% rename from docs/product/integrations/notification-incidents/opsgenie/img/opsgenie-form.png rename to public/product/integrations/notification-incidents/opsgenie/opsgenie-form.png diff --git a/docs/product/integrations/notification-incidents/opsgenie/img/opsgenie-install.png b/public/product/integrations/notification-incidents/opsgenie/opsgenie-install.png similarity index 100% rename from docs/product/integrations/notification-incidents/opsgenie/img/opsgenie-install.png rename to public/product/integrations/notification-incidents/opsgenie/opsgenie-install.png diff --git a/docs/product/integrations/notification-incidents/opsgenie/img/opsgenie-issue-alert-rule.png b/public/product/integrations/notification-incidents/opsgenie/opsgenie-issue-alert-rule.png similarity index 100% rename from docs/product/integrations/notification-incidents/opsgenie/img/opsgenie-issue-alert-rule.png rename to public/product/integrations/notification-incidents/opsgenie/opsgenie-issue-alert-rule.png diff --git a/docs/product/integrations/notification-incidents/opsgenie/img/opsgenie-metric-alert-rule.png b/public/product/integrations/notification-incidents/opsgenie/opsgenie-metric-alert-rule.png similarity index 100% rename from docs/product/integrations/notification-incidents/opsgenie/img/opsgenie-metric-alert-rule.png rename to public/product/integrations/notification-incidents/opsgenie/opsgenie-metric-alert-rule.png diff --git a/docs/product/integrations/notification-incidents/pagerduty/img/pagerduty-overview.png b/public/product/integrations/notification-incidents/pagerduty/pagerduty-overview.png similarity index 100% rename from docs/product/integrations/notification-incidents/pagerduty/img/pagerduty-overview.png rename to public/product/integrations/notification-incidents/pagerduty/pagerduty-overview.png diff --git a/docs/product/integrations/notification-incidents/pagerduty/img/pd_account_picker.png b/public/product/integrations/notification-incidents/pagerduty/pd_account_picker.png similarity index 100% rename from docs/product/integrations/notification-incidents/pagerduty/img/pd_account_picker.png rename to public/product/integrations/notification-incidents/pagerduty/pd_account_picker.png diff --git a/docs/product/integrations/notification-incidents/pagerduty/img/pd_add_services.png b/public/product/integrations/notification-incidents/pagerduty/pd_add_services.png similarity index 100% rename from docs/product/integrations/notification-incidents/pagerduty/img/pd_add_services.png rename to public/product/integrations/notification-incidents/pagerduty/pd_add_services.png diff --git a/docs/product/integrations/notification-incidents/pagerduty/img/pd_alert_rule.png b/public/product/integrations/notification-incidents/pagerduty/pd_alert_rule.png similarity index 100% rename from docs/product/integrations/notification-incidents/pagerduty/img/pd_alert_rule.png rename to public/product/integrations/notification-incidents/pagerduty/pd_alert_rule.png diff --git a/docs/product/integrations/notification-incidents/pagerduty/img/pd_installed.png b/public/product/integrations/notification-incidents/pagerduty/pd_installed.png similarity index 100% rename from docs/product/integrations/notification-incidents/pagerduty/img/pd_installed.png rename to public/product/integrations/notification-incidents/pagerduty/pd_installed.png diff --git a/docs/product/integrations/notification-incidents/pagerduty/img/pd_metric_alert_rule.png b/public/product/integrations/notification-incidents/pagerduty/pd_metric_alert_rule.png similarity index 100% rename from docs/product/integrations/notification-incidents/pagerduty/img/pd_metric_alert_rule.png rename to public/product/integrations/notification-incidents/pagerduty/pd_metric_alert_rule.png diff --git a/docs/product/integrations/notification-incidents/pagerduty/img/pd_org_configuration.png b/public/product/integrations/notification-incidents/pagerduty/pd_org_configuration.png similarity index 100% rename from docs/product/integrations/notification-incidents/pagerduty/img/pd_org_configuration.png rename to public/product/integrations/notification-incidents/pagerduty/pd_org_configuration.png diff --git a/docs/product/integrations/notification-incidents/slack/img/slack-alert-message.png b/public/product/integrations/notification-incidents/slack/slack-alert-message.png similarity index 100% rename from docs/product/integrations/notification-incidents/slack/img/slack-alert-message.png rename to public/product/integrations/notification-incidents/slack/slack-alert-message.png diff --git a/docs/product/integrations/notification-incidents/slack/img/slack-allow-install.png b/public/product/integrations/notification-incidents/slack/slack-allow-install.png similarity index 100% rename from docs/product/integrations/notification-incidents/slack/img/slack-allow-install.png rename to public/product/integrations/notification-incidents/slack/slack-allow-install.png diff --git a/docs/product/integrations/notification-incidents/slack/img/slack-install-success.png b/public/product/integrations/notification-incidents/slack/slack-install-success.png similarity index 100% rename from docs/product/integrations/notification-incidents/slack/img/slack-install-success.png rename to public/product/integrations/notification-incidents/slack/slack-install-success.png diff --git a/docs/product/integrations/notification-incidents/slack/img/slack-metric-alert-message.png b/public/product/integrations/notification-incidents/slack/slack-metric-alert-message.png similarity index 100% rename from docs/product/integrations/notification-incidents/slack/img/slack-metric-alert-message.png rename to public/product/integrations/notification-incidents/slack/slack-metric-alert-message.png diff --git a/docs/product/integrations/notification-incidents/slack/img/slack-overview-details-page.png b/public/product/integrations/notification-incidents/slack/slack-overview-details-page.png similarity index 100% rename from docs/product/integrations/notification-incidents/slack/img/slack-overview-details-page.png rename to public/product/integrations/notification-incidents/slack/slack-overview-details-page.png diff --git a/docs/product/integrations/notification-incidents/slack/img/slack_issue_alert.png b/public/product/integrations/notification-incidents/slack/slack_issue_alert.png similarity index 100% rename from docs/product/integrations/notification-incidents/slack/img/slack_issue_alert.png rename to public/product/integrations/notification-incidents/slack/slack_issue_alert.png diff --git a/docs/product/integrations/notification-incidents/slack/img/slack_metric_alert.png b/public/product/integrations/notification-incidents/slack/slack_metric_alert.png similarity index 100% rename from docs/product/integrations/notification-incidents/slack/img/slack_metric_alert.png rename to public/product/integrations/notification-incidents/slack/slack_metric_alert.png diff --git a/docs/product/integrations/notification-incidents/threads/img/threads-install.png b/public/product/integrations/notification-incidents/threads/threads-install.png similarity index 100% rename from docs/product/integrations/notification-incidents/threads/img/threads-install.png rename to public/product/integrations/notification-incidents/threads/threads-install.png diff --git a/docs/product/integrations/notification-incidents/threads/img/threads-issue-alert.png b/public/product/integrations/notification-incidents/threads/threads-issue-alert.png similarity index 100% rename from docs/product/integrations/notification-incidents/threads/img/threads-issue-alert.png rename to public/product/integrations/notification-incidents/threads/threads-issue-alert.png diff --git a/docs/product/integrations/notification-incidents/threads/img/threads-metric-alert.png b/public/product/integrations/notification-incidents/threads/threads-metric-alert.png similarity index 100% rename from docs/product/integrations/notification-incidents/threads/img/threads-metric-alert.png rename to public/product/integrations/notification-incidents/threads/threads-metric-alert.png diff --git a/docs/product/integrations/notification-incidents/threads/img/threads-rule.png b/public/product/integrations/notification-incidents/threads/threads-rule.png similarity index 100% rename from docs/product/integrations/notification-incidents/threads/img/threads-rule.png rename to public/product/integrations/notification-incidents/threads/threads-rule.png diff --git a/docs/product/integrations/session-replay/atlas/img/atlas_install.png b/public/product/integrations/session-replay/atlas/atlas_install.png similarity index 100% rename from docs/product/integrations/session-replay/atlas/img/atlas_install.png rename to public/product/integrations/session-replay/atlas/atlas_install.png diff --git a/docs/product/integrations/session-replay/atlas/img/atlas_session.png b/public/product/integrations/session-replay/atlas/atlas_session.png similarity index 100% rename from docs/product/integrations/session-replay/atlas/img/atlas_session.png rename to public/product/integrations/session-replay/atlas/atlas_session.png diff --git a/docs/product/integrations/session-replay/atlas/img/atlas_timeline.png b/public/product/integrations/session-replay/atlas/atlas_timeline.png similarity index 100% rename from docs/product/integrations/session-replay/atlas/img/atlas_timeline.png rename to public/product/integrations/session-replay/atlas/atlas_timeline.png diff --git a/docs/product/integrations/source-code-mgmt/azure-devops/img/azure-add-account-no-accounts.png b/public/product/integrations/source-code-mgmt/azure-devops/azure-add-account-no-accounts.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/azure-devops/img/azure-add-account-no-accounts.png rename to public/product/integrations/source-code-mgmt/azure-devops/azure-add-account-no-accounts.png diff --git a/docs/product/integrations/source-code-mgmt/azure-devops/img/azure-devops-install.png b/public/product/integrations/source-code-mgmt/azure-devops/azure-devops-install.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/azure-devops/img/azure-devops-install.png rename to public/product/integrations/source-code-mgmt/azure-devops/azure-devops-install.png diff --git a/docs/product/integrations/source-code-mgmt/azure-devops/img/azure-global-installed.png b/public/product/integrations/source-code-mgmt/azure-devops/azure-global-installed.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/azure-devops/img/azure-global-installed.png rename to public/product/integrations/source-code-mgmt/azure-devops/azure-global-installed.png diff --git a/docs/product/integrations/source-code-mgmt/azure-devops/img/azure-global-issue-sync.png b/public/product/integrations/source-code-mgmt/azure-devops/azure-global-issue-sync.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/azure-devops/img/azure-global-issue-sync.png rename to public/product/integrations/source-code-mgmt/azure-devops/azure-global-issue-sync.png diff --git a/docs/product/integrations/source-code-mgmt/azure-devops/img/azure-global-link-issue.png b/public/product/integrations/source-code-mgmt/azure-devops/azure-global-link-issue.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/azure-devops/img/azure-global-link-issue.png rename to public/product/integrations/source-code-mgmt/azure-devops/azure-global-link-issue.png diff --git a/docs/product/integrations/source-code-mgmt/azure-devops/img/azure-ticket-rule.png b/public/product/integrations/source-code-mgmt/azure-devops/azure-ticket-rule.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/azure-devops/img/azure-ticket-rule.png rename to public/product/integrations/source-code-mgmt/azure-devops/azure-ticket-rule.png diff --git a/docs/product/integrations/source-code-mgmt/bitbucket/img/bitbucket-add-repo.png b/public/product/integrations/source-code-mgmt/bitbucket/bitbucket-add-repo.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/bitbucket/img/bitbucket-add-repo.png rename to public/product/integrations/source-code-mgmt/bitbucket/bitbucket-add-repo.png diff --git a/docs/product/integrations/source-code-mgmt/bitbucket/img/bitbucket-install-pg.png b/public/product/integrations/source-code-mgmt/bitbucket/bitbucket-install-pg.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/bitbucket/img/bitbucket-install-pg.png rename to public/product/integrations/source-code-mgmt/bitbucket/bitbucket-install-pg.png diff --git a/docs/product/integrations/source-code-mgmt/bitbucket/img/bitbucket-installed.png b/public/product/integrations/source-code-mgmt/bitbucket/bitbucket-installed.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/bitbucket/img/bitbucket-installed.png rename to public/product/integrations/source-code-mgmt/bitbucket/bitbucket-installed.png diff --git a/docs/product/integrations/source-code-mgmt/bitbucket/img/bitbucket-link-issue.png b/public/product/integrations/source-code-mgmt/bitbucket/bitbucket-link-issue.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/bitbucket/img/bitbucket-link-issue.png rename to public/product/integrations/source-code-mgmt/bitbucket/bitbucket-link-issue.png diff --git a/public/img/code-mappings-configure-modal.png b/public/product/integrations/source-code-mgmt/code-mappings-configure-modal.png similarity index 100% rename from public/img/code-mappings-configure-modal.png rename to public/product/integrations/source-code-mgmt/code-mappings-configure-modal.png diff --git a/public/img/code-mappings-event-json.png b/public/product/integrations/source-code-mgmt/code-mappings-event-json.png similarity index 100% rename from public/img/code-mappings-event-json.png rename to public/product/integrations/source-code-mgmt/code-mappings-event-json.png diff --git a/public/img/code-mappings-source-file.png b/public/product/integrations/source-code-mgmt/code-mappings-source-file.png similarity index 100% rename from public/img/code-mappings-source-file.png rename to public/product/integrations/source-code-mgmt/code-mappings-source-file.png diff --git a/docs/product/integrations/source-code-mgmt/azure-devops/img/code-mappings-stacktrace-native.png b/public/product/integrations/source-code-mgmt/code-mappings-stacktrace-native.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/azure-devops/img/code-mappings-stacktrace-native.png rename to public/product/integrations/source-code-mgmt/code-mappings-stacktrace-native.png diff --git a/public/img/code-mappings-stacktrace.png b/public/product/integrations/source-code-mgmt/code-mappings-stacktrace.png similarity index 100% rename from public/img/code-mappings-stacktrace.png rename to public/product/integrations/source-code-mgmt/code-mappings-stacktrace.png diff --git a/docs/product/integrations/source-code-mgmt/github/img/github-create-issue.png b/public/product/integrations/source-code-mgmt/github/github-create-issue.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/github/img/github-create-issue.png rename to public/product/integrations/source-code-mgmt/github/github-create-issue.png diff --git a/docs/product/integrations/source-code-mgmt/github/img/github-e-add-installation.png b/public/product/integrations/source-code-mgmt/github/github-e-add-installation.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/github/img/github-e-add-installation.png rename to public/product/integrations/source-code-mgmt/github/github-e-add-installation.png diff --git a/docs/product/integrations/source-code-mgmt/github/img/github-e-add-repo.png b/public/product/integrations/source-code-mgmt/github/github-e-add-repo.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/github/img/github-e-add-repo.png rename to public/product/integrations/source-code-mgmt/github/github-e-add-repo.png diff --git a/docs/product/integrations/source-code-mgmt/github/img/github-e-configure.png b/public/product/integrations/source-code-mgmt/github/github-e-configure.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/github/img/github-e-configure.png rename to public/product/integrations/source-code-mgmt/github/github-e-configure.png diff --git a/docs/product/integrations/source-code-mgmt/github/img/github-e-form.png b/public/product/integrations/source-code-mgmt/github/github-e-form.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/github/img/github-e-form.png rename to public/product/integrations/source-code-mgmt/github/github-e-form.png diff --git a/docs/product/integrations/source-code-mgmt/github/img/github-e-generate-private-key.png b/public/product/integrations/source-code-mgmt/github/github-e-generate-private-key.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/github/img/github-e-generate-private-key.png rename to public/product/integrations/source-code-mgmt/github/github-e-generate-private-key.png diff --git a/docs/product/integrations/source-code-mgmt/github/img/github-e-install.png b/public/product/integrations/source-code-mgmt/github/github-e-install.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/github/img/github-e-install.png rename to public/product/integrations/source-code-mgmt/github/github-e-install.png diff --git a/docs/product/integrations/source-code-mgmt/github/img/github-e-new-app.png b/public/product/integrations/source-code-mgmt/github/github-e-new-app.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/github/img/github-e-new-app.png rename to public/product/integrations/source-code-mgmt/github/github-e-new-app.png diff --git a/docs/product/integrations/source-code-mgmt/github/img/github-e-repo-access.png b/public/product/integrations/source-code-mgmt/github/github-e-repo-access.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/github/img/github-e-repo-access.png rename to public/product/integrations/source-code-mgmt/github/github-e-repo-access.png diff --git a/docs/product/integrations/source-code-mgmt/github/img/github-global-add-repo.png b/public/product/integrations/source-code-mgmt/github/github-global-add-repo.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/github/img/github-global-add-repo.png rename to public/product/integrations/source-code-mgmt/github/github-global-add-repo.png diff --git a/docs/product/integrations/source-code-mgmt/github/img/github-global-link-issue.png b/public/product/integrations/source-code-mgmt/github/github-global-link-issue.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/github/img/github-global-link-issue.png rename to public/product/integrations/source-code-mgmt/github/github-global-link-issue.png diff --git a/docs/product/integrations/source-code-mgmt/github/img/github-global-suspect-commits.png b/public/product/integrations/source-code-mgmt/github/github-global-suspect-commits.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/github/img/github-global-suspect-commits.png rename to public/product/integrations/source-code-mgmt/github/github-global-suspect-commits.png diff --git a/docs/product/integrations/source-code-mgmt/github/img/github-install-page.png b/public/product/integrations/source-code-mgmt/github/github-install-page.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/github/img/github-install-page.png rename to public/product/integrations/source-code-mgmt/github/github-install-page.png diff --git a/docs/product/integrations/source-code-mgmt/github/img/github-missing-members-banner.png b/public/product/integrations/source-code-mgmt/github/github-missing-members-banner.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/github/img/github-missing-members-banner.png rename to public/product/integrations/source-code-mgmt/github/github-missing-members-banner.png diff --git a/docs/product/integrations/source-code-mgmt/github/img/github-missing-members-modal.png b/public/product/integrations/source-code-mgmt/github/github-missing-members-modal.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/github/img/github-missing-members-modal.png rename to public/product/integrations/source-code-mgmt/github/github-missing-members-modal.png diff --git a/docs/product/integrations/source-code-mgmt/github/img/github-org-settings.png b/public/product/integrations/source-code-mgmt/github/github-org-settings.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/github/img/github-org-settings.png rename to public/product/integrations/source-code-mgmt/github/github-org-settings.png diff --git a/docs/product/integrations/source-code-mgmt/github/img/github-ticket-rule.png b/public/product/integrations/source-code-mgmt/github/github-ticket-rule.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/github/img/github-ticket-rule.png rename to public/product/integrations/source-code-mgmt/github/github-ticket-rule.png diff --git a/docs/product/integrations/source-code-mgmt/github/img/sentry-github-open-pr-comment.png b/public/product/integrations/source-code-mgmt/github/sentry-github-open-pr-comment.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/github/img/sentry-github-open-pr-comment.png rename to public/product/integrations/source-code-mgmt/github/sentry-github-open-pr-comment.png diff --git a/docs/product/integrations/source-code-mgmt/github/img/sentry-github-pr-comment.png b/public/product/integrations/source-code-mgmt/github/sentry-github-pr-comment.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/github/img/sentry-github-pr-comment.png rename to public/product/integrations/source-code-mgmt/github/sentry-github-pr-comment.png diff --git a/docs/product/integrations/source-code-mgmt/gitlab/img/add-installation.png b/public/product/integrations/source-code-mgmt/gitlab/add-installation.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/gitlab/img/add-installation.png rename to public/product/integrations/source-code-mgmt/gitlab/add-installation.png diff --git a/docs/product/integrations/source-code-mgmt/gitlab/img/add-repo.png b/public/product/integrations/source-code-mgmt/gitlab/add-repo.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/gitlab/img/add-repo.png rename to public/product/integrations/source-code-mgmt/gitlab/add-repo.png diff --git a/docs/product/integrations/source-code-mgmt/gitlab/img/configuration-modal.png b/public/product/integrations/source-code-mgmt/gitlab/configuration-modal.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/gitlab/img/configuration-modal.png rename to public/product/integrations/source-code-mgmt/gitlab/configuration-modal.png diff --git a/docs/product/integrations/source-code-mgmt/gitlab/img/configure-button.png b/public/product/integrations/source-code-mgmt/gitlab/configure-button.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/gitlab/img/configure-button.png rename to public/product/integrations/source-code-mgmt/gitlab/configure-button.png diff --git a/docs/product/integrations/source-code-mgmt/gitlab/img/gitlab-app-id.png b/public/product/integrations/source-code-mgmt/gitlab/gitlab-app-id.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/gitlab/img/gitlab-app-id.png rename to public/product/integrations/source-code-mgmt/gitlab/gitlab-app-id.png diff --git a/docs/product/integrations/source-code-mgmt/gitlab/img/gitlab-configuration.png b/public/product/integrations/source-code-mgmt/gitlab/gitlab-configuration.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/gitlab/img/gitlab-configuration.png rename to public/product/integrations/source-code-mgmt/gitlab/gitlab-configuration.png diff --git a/docs/product/integrations/source-code-mgmt/gitlab/img/gitlab-create-issue.png b/public/product/integrations/source-code-mgmt/gitlab/gitlab-create-issue.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/gitlab/img/gitlab-create-issue.png rename to public/product/integrations/source-code-mgmt/gitlab/gitlab-create-issue.png diff --git a/docs/product/integrations/source-code-mgmt/gitlab/img/gitlab-groups.png b/public/product/integrations/source-code-mgmt/gitlab/gitlab-groups.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/gitlab/img/gitlab-groups.png rename to public/product/integrations/source-code-mgmt/gitlab/gitlab-groups.png diff --git a/docs/product/integrations/source-code-mgmt/gitlab/img/gitlab-overview.png b/public/product/integrations/source-code-mgmt/gitlab/gitlab-overview.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/gitlab/img/gitlab-overview.png rename to public/product/integrations/source-code-mgmt/gitlab/gitlab-overview.png diff --git a/docs/product/integrations/source-code-mgmt/gitlab/img/highlighting-suspect-commits.png b/public/product/integrations/source-code-mgmt/gitlab/highlighting-suspect-commits.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/gitlab/img/highlighting-suspect-commits.png rename to public/product/integrations/source-code-mgmt/gitlab/highlighting-suspect-commits.png diff --git a/docs/product/integrations/source-code-mgmt/gitlab/img/highlighting-tags.png b/public/product/integrations/source-code-mgmt/gitlab/highlighting-tags.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/gitlab/img/highlighting-tags.png rename to public/product/integrations/source-code-mgmt/gitlab/highlighting-tags.png diff --git a/docs/product/integrations/source-code-mgmt/gitlab/img/last-commit-in-releases.png b/public/product/integrations/source-code-mgmt/gitlab/last-commit-in-releases.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/gitlab/img/last-commit-in-releases.png rename to public/product/integrations/source-code-mgmt/gitlab/last-commit-in-releases.png diff --git a/docs/product/integrations/source-code-mgmt/gitlab/img/link-gitlab-issue.png b/public/product/integrations/source-code-mgmt/gitlab/link-gitlab-issue.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/gitlab/img/link-gitlab-issue.png rename to public/product/integrations/source-code-mgmt/gitlab/link-gitlab-issue.png diff --git a/docs/product/integrations/source-code-mgmt/gitlab/img/link-issue-by-name.png b/public/product/integrations/source-code-mgmt/gitlab/link-issue-by-name.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/gitlab/img/link-issue-by-name.png rename to public/product/integrations/source-code-mgmt/gitlab/link-issue-by-name.png diff --git a/docs/product/integrations/source-code-mgmt/gitlab/img/sentry-unresolved-issues.png b/public/product/integrations/source-code-mgmt/gitlab/sentry-unresolved-issues.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/gitlab/img/sentry-unresolved-issues.png rename to public/product/integrations/source-code-mgmt/gitlab/sentry-unresolved-issues.png diff --git a/docs/product/integrations/source-code-mgmt/gitlab/img/short-id.png b/public/product/integrations/source-code-mgmt/gitlab/short-id.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/gitlab/img/short-id.png rename to public/product/integrations/source-code-mgmt/gitlab/short-id.png diff --git a/docs/product/integrations/source-code-mgmt/gitlab/img/unlink-issue.png b/public/product/integrations/source-code-mgmt/gitlab/unlink-issue.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/gitlab/img/unlink-issue.png rename to public/product/integrations/source-code-mgmt/gitlab/unlink-issue.png diff --git a/docs/product/issues/img/error_level.png b/public/product/issues/error_level.png similarity index 100% rename from docs/product/issues/img/error_level.png rename to public/product/issues/error_level.png diff --git a/docs/product/issues/grouping-and-fingerprints/img/after-merge-1.png b/public/product/issues/grouping-and-fingerprints/after-merge-1.png similarity index 100% rename from docs/product/issues/grouping-and-fingerprints/img/after-merge-1.png rename to public/product/issues/grouping-and-fingerprints/after-merge-1.png diff --git a/docs/product/issues/grouping-and-fingerprints/img/before-merge-1.png b/public/product/issues/grouping-and-fingerprints/before-merge-1.png similarity index 100% rename from docs/product/issues/grouping-and-fingerprints/img/before-merge-1.png rename to public/product/issues/grouping-and-fingerprints/before-merge-1.png diff --git a/docs/product/issues/grouping-and-fingerprints/img/connection-timeout-message-example.png b/public/product/issues/grouping-and-fingerprints/connection-timeout-message-example.png similarity index 100% rename from docs/product/issues/grouping-and-fingerprints/img/connection-timeout-message-example.png rename to public/product/issues/grouping-and-fingerprints/connection-timeout-message-example.png diff --git a/docs/product/issues/grouping-and-fingerprints/img/connection-timeout-message.png b/public/product/issues/grouping-and-fingerprints/connection-timeout-message.png similarity index 100% rename from docs/product/issues/grouping-and-fingerprints/img/connection-timeout-message.png rename to public/product/issues/grouping-and-fingerprints/connection-timeout-message.png diff --git a/docs/product/issues/grouping-and-fingerprints/img/connection-timeout-type-example.png b/public/product/issues/grouping-and-fingerprints/connection-timeout-type-example.png similarity index 100% rename from docs/product/issues/grouping-and-fingerprints/img/connection-timeout-type-example.png rename to public/product/issues/grouping-and-fingerprints/connection-timeout-type-example.png diff --git a/docs/product/issues/grouping-and-fingerprints/img/connection-timeout-type.png b/public/product/issues/grouping-and-fingerprints/connection-timeout-type.png similarity index 100% rename from docs/product/issues/grouping-and-fingerprints/img/connection-timeout-type.png rename to public/product/issues/grouping-and-fingerprints/connection-timeout-type.png diff --git a/docs/product/issues/grouping-and-fingerprints/img/connection-timeouts-2.png b/public/product/issues/grouping-and-fingerprints/connection-timeouts-2.png similarity index 100% rename from docs/product/issues/grouping-and-fingerprints/img/connection-timeouts-2.png rename to public/product/issues/grouping-and-fingerprints/connection-timeouts-2.png diff --git a/docs/product/issues/grouping-and-fingerprints/img/issue-stacktraces-comparison.png b/public/product/issues/grouping-and-fingerprints/issue-stacktraces-comparison.png similarity index 100% rename from docs/product/issues/grouping-and-fingerprints/img/issue-stacktraces-comparison.png rename to public/product/issues/grouping-and-fingerprints/issue-stacktraces-comparison.png diff --git a/docs/product/issues/grouping-and-fingerprints/img/issues-dashboard.png b/public/product/issues/grouping-and-fingerprints/issues-dashboard.png similarity index 100% rename from docs/product/issues/grouping-and-fingerprints/img/issues-dashboard.png rename to public/product/issues/grouping-and-fingerprints/issues-dashboard.png diff --git a/docs/product/issues/grouping-and-fingerprints/img/similar-issues-1.png b/public/product/issues/grouping-and-fingerprints/similar-issues-1.png similarity index 100% rename from docs/product/issues/grouping-and-fingerprints/img/similar-issues-1.png rename to public/product/issues/grouping-and-fingerprints/similar-issues-1.png diff --git a/docs/product/issues/issue-details/ai-suggested-solution/img/banner.png b/public/product/issues/issue-details/ai-suggested-solution/banner.png similarity index 100% rename from docs/product/issues/issue-details/ai-suggested-solution/img/banner.png rename to public/product/issues/issue-details/ai-suggested-solution/banner.png diff --git a/docs/product/issues/issue-details/ai-suggested-solution/img/disabling-feature.png b/public/product/issues/issue-details/ai-suggested-solution/disabling-feature.png similarity index 100% rename from docs/product/issues/issue-details/ai-suggested-solution/img/disabling-feature.png rename to public/product/issues/issue-details/ai-suggested-solution/disabling-feature.png diff --git a/docs/product/issues/issue-details/ai-suggested-solution/img/solution.png b/public/product/issues/issue-details/ai-suggested-solution/solution.png similarity index 100% rename from docs/product/issues/issue-details/ai-suggested-solution/img/solution.png rename to public/product/issues/issue-details/ai-suggested-solution/solution.png diff --git a/docs/product/issues/issue-details/breadcrumbs/img/breadcrumbs-filter-by.png b/public/product/issues/issue-details/breadcrumbs/breadcrumbs-filter-by.png similarity index 100% rename from docs/product/issues/issue-details/breadcrumbs/img/breadcrumbs-filter-by.png rename to public/product/issues/issue-details/breadcrumbs/breadcrumbs-filter-by.png diff --git a/docs/product/issues/issue-details/breadcrumbs/img/breadcrumbs-relative-time-switch.png b/public/product/issues/issue-details/breadcrumbs/breadcrumbs-relative-time-switch.png similarity index 100% rename from docs/product/issues/issue-details/breadcrumbs/img/breadcrumbs-relative-time-switch.png rename to public/product/issues/issue-details/breadcrumbs/breadcrumbs-relative-time-switch.png diff --git a/docs/product/issues/issue-details/breadcrumbs/img/breadcrumbs-section.png b/public/product/issues/issue-details/breadcrumbs/breadcrumbs-section.png similarity index 100% rename from docs/product/issues/issue-details/breadcrumbs/img/breadcrumbs-section.png rename to public/product/issues/issue-details/breadcrumbs/breadcrumbs-section.png diff --git a/docs/product/issues/issue-details/breadcrumbs/img/breadcrumbs-sort.png b/public/product/issues/issue-details/breadcrumbs/breadcrumbs-sort.png similarity index 100% rename from docs/product/issues/issue-details/breadcrumbs/img/breadcrumbs-sort.png rename to public/product/issues/issue-details/breadcrumbs/breadcrumbs-sort.png diff --git a/docs/product/issues/issue-details/error-issues/img/error-level-icon-2.png b/public/product/issues/issue-details/error-issues/error-level-icon-2.png similarity index 100% rename from docs/product/issues/issue-details/error-issues/img/error-level-icon-2.png rename to public/product/issues/issue-details/error-issues/error-level-icon-2.png diff --git a/docs/product/issues/issue-details/error-issues/img/event-grouping.png b/public/product/issues/issue-details/event-grouping.png similarity index 100% rename from docs/product/issues/issue-details/error-issues/img/event-grouping.png rename to public/product/issues/issue-details/event-grouping.png diff --git a/docs/product/issues/issue-details/img/event-navigator.png b/public/product/issues/issue-details/event-navigator.png similarity index 100% rename from docs/product/issues/issue-details/img/event-navigator.png rename to public/product/issues/issue-details/event-navigator.png diff --git a/docs/product/issues/issue-details/error-issues/img/issue-breadcrumbs.png b/public/product/issues/issue-details/issue-breadcrumbs.png similarity index 100% rename from docs/product/issues/issue-details/error-issues/img/issue-breadcrumbs.png rename to public/product/issues/issue-details/issue-breadcrumbs.png diff --git a/docs/product/issues/issue-details/error-issues/img/issue-exception.png b/public/product/issues/issue-details/issue-exception.png similarity index 100% rename from docs/product/issues/issue-details/error-issues/img/issue-exception.png rename to public/product/issues/issue-details/issue-exception.png diff --git a/docs/product/issues/issue-details/img/issue-tabs.png b/public/product/issues/issue-details/issue-tabs.png similarity index 100% rename from docs/product/issues/issue-details/img/issue-tabs.png rename to public/product/issues/issue-details/issue-tabs.png diff --git a/docs/product/issues/issue-details/error-issues/img/issue_details_page.png b/public/product/issues/issue-details/issue_details_page.png similarity index 100% rename from docs/product/issues/issue-details/error-issues/img/issue_details_page.png rename to public/product/issues/issue-details/issue_details_page.png diff --git a/docs/product/issues/issue-details/performance-issues/consecutive-db-queries/img/consecutive-db-detector-settings.png b/public/product/issues/issue-details/performance-issues/consecutive-db-queries/consecutive-db-detector-settings.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/consecutive-db-queries/img/consecutive-db-detector-settings.png rename to public/product/issues/issue-details/performance-issues/consecutive-db-queries/consecutive-db-detector-settings.png diff --git a/docs/product/issues/issue-details/performance-issues/consecutive-db-queries/img/consecutive-example.png b/public/product/issues/issue-details/performance-issues/consecutive-db-queries/consecutive-example.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/consecutive-db-queries/img/consecutive-example.png rename to public/product/issues/issue-details/performance-issues/consecutive-db-queries/consecutive-example.png diff --git a/docs/product/issues/issue-details/performance-issues/consecutive-db-queries/img/parallel-example.png b/public/product/issues/issue-details/performance-issues/consecutive-db-queries/parallel-example.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/consecutive-db-queries/img/parallel-example.png rename to public/product/issues/issue-details/performance-issues/consecutive-db-queries/parallel-example.png diff --git a/docs/product/issues/issue-details/performance-issues/consecutive-db-queries/img/span-evidence.png b/public/product/issues/issue-details/performance-issues/consecutive-db-queries/span-evidence.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/consecutive-db-queries/img/span-evidence.png rename to public/product/issues/issue-details/performance-issues/consecutive-db-queries/span-evidence.png diff --git a/docs/product/issues/issue-details/performance-issues/consecutive-http/img/consecutive-http-threshold-settings.png b/public/product/issues/issue-details/performance-issues/consecutive-http/consecutive-http-threshold-settings.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/consecutive-http/img/consecutive-http-threshold-settings.png rename to public/product/issues/issue-details/performance-issues/consecutive-http/consecutive-http-threshold-settings.png diff --git a/docs/product/issues/issue-details/performance-issues/consecutive-http/img/span-evidence.png b/public/product/issues/issue-details/performance-issues/consecutive-http/span-evidence.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/consecutive-http/img/span-evidence.png rename to public/product/issues/issue-details/performance-issues/consecutive-http/span-evidence.png diff --git a/docs/product/issues/issue-details/performance-issues/img/db-io.png b/public/product/issues/issue-details/performance-issues/db-io.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/img/db-io.png rename to public/product/issues/issue-details/performance-issues/db-io.png diff --git a/docs/product/issues/issue-details/performance-issues/img/db-on-main-thread-detector-settings.png b/public/product/issues/issue-details/performance-issues/db-on-main-thread-detector-settings.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/img/db-on-main-thread-detector-settings.png rename to public/product/issues/issue-details/performance-issues/db-on-main-thread-detector-settings.png diff --git a/docs/product/issues/issue-details/performance-issues/endpoint-regressions/img/endpoint-regression-chart.png b/public/product/issues/issue-details/performance-issues/endpoint-regressions/endpoint-regression-chart.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/endpoint-regressions/img/endpoint-regression-chart.png rename to public/product/issues/issue-details/performance-issues/endpoint-regressions/endpoint-regression-chart.png diff --git a/docs/product/issues/issue-details/performance-issues/img/file-io.png b/public/product/issues/issue-details/performance-issues/file-io.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/img/file-io.png rename to public/product/issues/issue-details/performance-issues/file-io.png diff --git a/docs/product/issues/issue-details/performance-issues/img/file-main-thread-io-detector-settings.png b/public/product/issues/issue-details/performance-issues/file-main-thread-io-detector-settings.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/img/file-main-thread-io-detector-settings.png rename to public/product/issues/issue-details/performance-issues/file-main-thread-io-detector-settings.png diff --git a/docs/product/issues/issue-details/performance-issues/frame-drop/img/frame-drop-function-evidence.png b/public/product/issues/issue-details/performance-issues/frame-drop/frame-drop-function-evidence.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/frame-drop/img/frame-drop-function-evidence.png rename to public/product/issues/issue-details/performance-issues/frame-drop/frame-drop-function-evidence.png diff --git a/docs/product/issues/issue-details/performance-issues/frame-drop/img/frame-drop-profile.png b/public/product/issues/issue-details/performance-issues/frame-drop/frame-drop-profile.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/frame-drop/img/frame-drop-profile.png rename to public/product/issues/issue-details/performance-issues/frame-drop/frame-drop-profile.png diff --git a/docs/product/issues/issue-details/performance-issues/frame-drop/img/frame-drop-stack-trace.png b/public/product/issues/issue-details/performance-issues/frame-drop/frame-drop-stack-trace.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/frame-drop/img/frame-drop-stack-trace.png rename to public/product/issues/issue-details/performance-issues/frame-drop/frame-drop-stack-trace.png diff --git a/docs/product/issues/issue-details/performance-issues/http-overhead/img/http-overhead-spans.png b/public/product/issues/issue-details/performance-issues/http-overhead/http-overhead-spans.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/http-overhead/img/http-overhead-spans.png rename to public/product/issues/issue-details/performance-issues/http-overhead/http-overhead-spans.png diff --git a/docs/product/issues/issue-details/performance-issues/image-decoding-main-thread/img/image-decoding-function-evidence.png b/public/product/issues/issue-details/performance-issues/image-decoding-main-thread/image-decoding-function-evidence.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/image-decoding-main-thread/img/image-decoding-function-evidence.png rename to public/product/issues/issue-details/performance-issues/image-decoding-main-thread/image-decoding-function-evidence.png diff --git a/docs/product/issues/issue-details/performance-issues/image-decoding-main-thread/img/image-decoding-profile.png b/public/product/issues/issue-details/performance-issues/image-decoding-main-thread/image-decoding-profile.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/image-decoding-main-thread/img/image-decoding-profile.png rename to public/product/issues/issue-details/performance-issues/image-decoding-main-thread/image-decoding-profile.png diff --git a/docs/product/issues/issue-details/performance-issues/image-decoding-main-thread/img/image-decoding-stack-trace.png b/public/product/issues/issue-details/performance-issues/image-decoding-main-thread/image-decoding-stack-trace.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/image-decoding-main-thread/img/image-decoding-stack-trace.png rename to public/product/issues/issue-details/performance-issues/image-decoding-main-thread/image-decoding-stack-trace.png diff --git a/docs/product/issues/issue-details/performance-issues/json-decoding-main-thread/img/json-decoding-function-evidence.png b/public/product/issues/issue-details/performance-issues/json-decoding-main-thread/json-decoding-function-evidence.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/json-decoding-main-thread/img/json-decoding-function-evidence.png rename to public/product/issues/issue-details/performance-issues/json-decoding-main-thread/json-decoding-function-evidence.png diff --git a/docs/product/issues/issue-details/performance-issues/json-decoding-main-thread/img/json-decoding-profile.png b/public/product/issues/issue-details/performance-issues/json-decoding-main-thread/json-decoding-profile.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/json-decoding-main-thread/img/json-decoding-profile.png rename to public/product/issues/issue-details/performance-issues/json-decoding-main-thread/json-decoding-profile.png diff --git a/docs/product/issues/issue-details/performance-issues/json-decoding-main-thread/img/json-decoding-stack-trace.png b/public/product/issues/issue-details/performance-issues/json-decoding-main-thread/json-decoding-stack-trace.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/json-decoding-main-thread/img/json-decoding-stack-trace.png rename to public/product/issues/issue-details/performance-issues/json-decoding-main-thread/json-decoding-stack-trace.png diff --git a/docs/product/issues/issue-details/performance-issues/large-http-payload/img/large-http-payload-detector-settings.png b/public/product/issues/issue-details/performance-issues/large-http-payload/large-http-payload-detector-settings.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/large-http-payload/img/large-http-payload-detector-settings.png rename to public/product/issues/issue-details/performance-issues/large-http-payload/large-http-payload-detector-settings.png diff --git a/docs/product/issues/issue-details/performance-issues/large-http-payload/img/span-evidence.png b/public/product/issues/issue-details/performance-issues/large-http-payload/span-evidence.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/large-http-payload/img/span-evidence.png rename to public/product/issues/issue-details/performance-issues/large-http-payload/span-evidence.png diff --git a/docs/product/issues/issue-details/performance-issues/large-render-blocking-asset/img/render-blocking-asset-detector-settings.png b/public/product/issues/issue-details/performance-issues/large-render-blocking-asset/render-blocking-asset-detector-settings.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/large-render-blocking-asset/img/render-blocking-asset-detector-settings.png rename to public/product/issues/issue-details/performance-issues/large-render-blocking-asset/render-blocking-asset-detector-settings.png diff --git a/docs/product/issues/issue-details/performance-issues/large-render-blocking-asset/img/span-evidence.png b/public/product/issues/issue-details/performance-issues/large-render-blocking-asset/span-evidence.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/large-render-blocking-asset/img/span-evidence.png rename to public/product/issues/issue-details/performance-issues/large-render-blocking-asset/span-evidence.png diff --git a/docs/product/issues/issue-details/performance-issues/img/n-plus-one-api-calls-detector-settings.png b/public/product/issues/issue-details/performance-issues/n-plus-one-api-calls-detector-settings.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/img/n-plus-one-api-calls-detector-settings.png rename to public/product/issues/issue-details/performance-issues/n-plus-one-api-calls-detector-settings.png diff --git a/docs/product/issues/issue-details/performance-issues/img/n-plus-one-api-calls-evidence.png b/public/product/issues/issue-details/performance-issues/n-plus-one-api-calls-evidence.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/img/n-plus-one-api-calls-evidence.png rename to public/product/issues/issue-details/performance-issues/n-plus-one-api-calls-evidence.png diff --git a/docs/product/issues/issue-details/performance-issues/img/n-plus-one-api-calls-in-book-application.png b/public/product/issues/issue-details/performance-issues/n-plus-one-api-calls-in-book-application.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/img/n-plus-one-api-calls-in-book-application.png rename to public/product/issues/issue-details/performance-issues/n-plus-one-api-calls-in-book-application.png diff --git a/docs/product/issues/issue-details/performance-issues/img/n-plus-one-queries-after.png b/public/product/issues/issue-details/performance-issues/n-plus-one-queries-after.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/img/n-plus-one-queries-after.png rename to public/product/issues/issue-details/performance-issues/n-plus-one-queries-after.png diff --git a/docs/product/issues/issue-details/performance-issues/img/n-plus-one-queries-before.png b/public/product/issues/issue-details/performance-issues/n-plus-one-queries-before.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/img/n-plus-one-queries-before.png rename to public/product/issues/issue-details/performance-issues/n-plus-one-queries-before.png diff --git a/docs/product/issues/issue-details/performance-issues/img/n-plus-one-queries-detector-settings.png b/public/product/issues/issue-details/performance-issues/n-plus-one-queries-detector-settings.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/img/n-plus-one-queries-detector-settings.png rename to public/product/issues/issue-details/performance-issues/n-plus-one-queries-detector-settings.png diff --git a/docs/product/issues/issue-details/performance-issues/img/n-plus-one-span-evidence.png b/public/product/issues/issue-details/performance-issues/n-plus-one-span-evidence.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/img/n-plus-one-span-evidence.png rename to public/product/issues/issue-details/performance-issues/n-plus-one-span-evidence.png diff --git a/docs/product/issues/issue-details/performance-issues/img/performance-issue-details.png b/public/product/issues/issue-details/performance-issues/performance-issue-details.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/img/performance-issue-details.png rename to public/product/issues/issue-details/performance-issues/performance-issue-details.png diff --git a/docs/product/issues/issue-details/performance-issues/regex-main-thread/img/regex-function-evidence.png b/public/product/issues/issue-details/performance-issues/regex-main-thread/regex-function-evidence.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/regex-main-thread/img/regex-function-evidence.png rename to public/product/issues/issue-details/performance-issues/regex-main-thread/regex-function-evidence.png diff --git a/docs/product/issues/issue-details/performance-issues/regex-main-thread/img/regex-profile.png b/public/product/issues/issue-details/performance-issues/regex-main-thread/regex-profile.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/regex-main-thread/img/regex-profile.png rename to public/product/issues/issue-details/performance-issues/regex-main-thread/regex-profile.png diff --git a/docs/product/issues/issue-details/performance-issues/regex-main-thread/img/regex-stack-trace.png b/public/product/issues/issue-details/performance-issues/regex-main-thread/regex-stack-trace.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/regex-main-thread/img/regex-stack-trace.png rename to public/product/issues/issue-details/performance-issues/regex-main-thread/regex-stack-trace.png diff --git a/docs/product/issues/issue-details/performance-issues/slow-db-queries/img/slow-db-queries-detector-settings.png b/public/product/issues/issue-details/performance-issues/slow-db-queries/slow-db-queries-detector-settings.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/slow-db-queries/img/slow-db-queries-detector-settings.png rename to public/product/issues/issue-details/performance-issues/slow-db-queries/slow-db-queries-detector-settings.png diff --git a/docs/product/issues/issue-details/performance-issues/slow-db-queries/img/span-evidence.png b/public/product/issues/issue-details/performance-issues/slow-db-queries/span-evidence.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/slow-db-queries/img/span-evidence.png rename to public/product/issues/issue-details/performance-issues/slow-db-queries/span-evidence.png diff --git a/docs/product/issues/issue-details/performance-issues/uncompressed-asset/img/span-evidence.png b/public/product/issues/issue-details/performance-issues/uncompressed-asset/span-evidence.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/uncompressed-asset/img/span-evidence.png rename to public/product/issues/issue-details/performance-issues/uncompressed-asset/span-evidence.png diff --git a/docs/product/issues/issue-details/performance-issues/uncompressed-asset/img/uncompressed-asset-detector-settings.png b/public/product/issues/issue-details/performance-issues/uncompressed-asset/uncompressed-asset-detector-settings.png similarity index 100% rename from docs/product/issues/issue-details/performance-issues/uncompressed-asset/img/uncompressed-asset-detector-settings.png rename to public/product/issues/issue-details/performance-issues/uncompressed-asset/uncompressed-asset-detector-settings.png diff --git a/public/product/issues/issue-details/replay-issues/Rage-click-issue-in-issue-stream.png b/public/product/issues/issue-details/replay-issues/Rage-click-issue-in-issue-stream.png new file mode 100644 index 0000000000000..e0ee0e958bb9f Binary files /dev/null and b/public/product/issues/issue-details/replay-issues/Rage-click-issue-in-issue-stream.png differ diff --git a/public/product/issues/issue-details/replay-issues/Turning-off-rage-clicks-toggle.png b/public/product/issues/issue-details/replay-issues/Turning-off-rage-clicks-toggle.png new file mode 100644 index 0000000000000..4ce22f70f7a60 Binary files /dev/null and b/public/product/issues/issue-details/replay-issues/Turning-off-rage-clicks-toggle.png differ diff --git a/docs/product/issues/issue-details/error-issues/img/suspect-commit.png b/public/product/issues/issue-details/suspect-commit.png similarity index 100% rename from docs/product/issues/issue-details/error-issues/img/suspect-commit.png rename to public/product/issues/issue-details/suspect-commit.png diff --git a/public/img/tags.png b/public/product/issues/issue-details/tags.png similarity index 100% rename from public/img/tags.png rename to public/product/issues/issue-details/tags.png diff --git a/docs/product/issues/issue-details/error-issues/img/trace-details.png b/public/product/issues/issue-details/trace-details.png similarity index 100% rename from docs/product/issues/issue-details/error-issues/img/trace-details.png rename to public/product/issues/issue-details/trace-details.png diff --git a/docs/product/issues/issue-details/error-issues/img/trace-navigator.png b/public/product/issues/issue-details/trace-navigator.png similarity index 100% rename from docs/product/issues/issue-details/error-issues/img/trace-navigator.png rename to public/product/issues/issue-details/trace-navigator.png diff --git a/docs/product/issues/img/issue_page.png b/public/product/issues/issue_page.png similarity index 100% rename from docs/product/issues/img/issue_page.png rename to public/product/issues/issue_page.png diff --git a/docs/product/issues/img/issue_sort.png b/public/product/issues/issue_sort.png similarity index 100% rename from docs/product/issues/img/issue_sort.png rename to public/product/issues/issue_sort.png diff --git a/docs/product/issues/ownership-rules/img/assigned_to_cog.png b/public/product/issues/ownership-rules/assigned_to_cog.png similarity index 100% rename from docs/product/issues/ownership-rules/img/assigned_to_cog.png rename to public/product/issues/ownership-rules/assigned_to_cog.png diff --git a/docs/product/issues/ownership-rules/img/auto-assign-issue-owner.png b/public/product/issues/ownership-rules/auto-assign-issue-owner.png similarity index 100% rename from docs/product/issues/ownership-rules/img/auto-assign-issue-owner.png rename to public/product/issues/ownership-rules/auto-assign-issue-owner.png diff --git a/docs/product/issues/suspect-commits/img/auto-assign-suspect-commits.png b/public/product/issues/ownership-rules/auto-assign-suspect-commits.png similarity index 100% rename from docs/product/issues/suspect-commits/img/auto-assign-suspect-commits.png rename to public/product/issues/ownership-rules/auto-assign-suspect-commits.png diff --git a/docs/product/issues/ownership-rules/img/codeowners.png b/public/product/issues/ownership-rules/codeowners.png similarity index 100% rename from docs/product/issues/ownership-rules/img/codeowners.png rename to public/product/issues/ownership-rules/codeowners.png diff --git a/docs/product/issues/ownership-rules/img/external_team_mappings.png b/public/product/issues/ownership-rules/external_team_mappings.png similarity index 100% rename from docs/product/issues/ownership-rules/img/external_team_mappings.png rename to public/product/issues/ownership-rules/external_team_mappings.png diff --git a/docs/product/issues/ownership-rules/img/external_user_mappings.png b/public/product/issues/ownership-rules/external_user_mappings.png similarity index 100% rename from docs/product/issues/ownership-rules/img/external_user_mappings.png rename to public/product/issues/ownership-rules/external_user_mappings.png diff --git a/docs/product/issues/ownership-rules/img/issue_details_edit_ownership_rules.png b/public/product/issues/ownership-rules/issue_details_edit_ownership_rules.png similarity index 100% rename from docs/product/issues/ownership-rules/img/issue_details_edit_ownership_rules.png rename to public/product/issues/ownership-rules/issue_details_edit_ownership_rules.png diff --git a/docs/product/issues/ownership-rules/img/link_stack_trace.png b/public/product/issues/ownership-rules/link_stack_trace.png similarity index 100% rename from docs/product/issues/ownership-rules/img/link_stack_trace.png rename to public/product/issues/ownership-rules/link_stack_trace.png diff --git a/docs/product/issues/ownership-rules/img/project_settings_edit_ownership_rules.png b/public/product/issues/ownership-rules/project_settings_edit_ownership_rules.png similarity index 100% rename from docs/product/issues/ownership-rules/img/project_settings_edit_ownership_rules.png rename to public/product/issues/ownership-rules/project_settings_edit_ownership_rules.png diff --git a/docs/product/issues/ownership-rules/img/suggested_assignees.png b/public/product/issues/ownership-rules/suggested_assignees.png similarity index 100% rename from docs/product/issues/ownership-rules/img/suggested_assignees.png rename to public/product/issues/ownership-rules/suggested_assignees.png diff --git a/docs/product/issues/reprocessing/img/reprocessing-btn.png b/public/product/issues/reprocessing/reprocessing-btn.png similarity index 100% rename from docs/product/issues/reprocessing/img/reprocessing-btn.png rename to public/product/issues/reprocessing/reprocessing-btn.png diff --git a/docs/product/issues/states-triage/escalating-issues/img/bursty_limit.png b/public/product/issues/states-triage/escalating-issues/bursty_limit.png similarity index 100% rename from docs/product/issues/states-triage/escalating-issues/img/bursty_limit.png rename to public/product/issues/states-triage/escalating-issues/bursty_limit.png diff --git a/docs/product/issues/states-triage/escalating-issues/img/spike_limit.png b/public/product/issues/states-triage/escalating-issues/spike_limit.png similarity index 100% rename from docs/product/issues/states-triage/escalating-issues/img/spike_limit.png rename to public/product/issues/states-triage/escalating-issues/spike_limit.png diff --git a/docs/product/issues/states-triage/img/issue_statuses.png b/public/product/issues/states-triage/issue_statuses.png similarity index 100% rename from docs/product/issues/states-triage/img/issue_statuses.png rename to public/product/issues/states-triage/issue_statuses.png diff --git a/public/product/issues/suspect-commits/code-mappings-configure-modal.png b/public/product/issues/suspect-commits/code-mappings-configure-modal.png new file mode 100644 index 0000000000000..7c75a8ef4c32c Binary files /dev/null and b/public/product/issues/suspect-commits/code-mappings-configure-modal.png differ diff --git a/public/product/issues/suspect-commits/code-mappings-event-json.png b/public/product/issues/suspect-commits/code-mappings-event-json.png new file mode 100644 index 0000000000000..9a2654dfdf78e Binary files /dev/null and b/public/product/issues/suspect-commits/code-mappings-event-json.png differ diff --git a/public/product/issues/suspect-commits/code-mappings-source-file.png b/public/product/issues/suspect-commits/code-mappings-source-file.png new file mode 100644 index 0000000000000..09eb9eb80a1cb Binary files /dev/null and b/public/product/issues/suspect-commits/code-mappings-source-file.png differ diff --git a/docs/product/integrations/source-code-mgmt/bitbucket/img/code-mappings-stacktrace-native.png b/public/product/issues/suspect-commits/code-mappings-stacktrace-native.png similarity index 100% rename from docs/product/integrations/source-code-mgmt/bitbucket/img/code-mappings-stacktrace-native.png rename to public/product/issues/suspect-commits/code-mappings-stacktrace-native.png diff --git a/public/product/issues/suspect-commits/code-mappings-stacktrace.png b/public/product/issues/suspect-commits/code-mappings-stacktrace.png new file mode 100644 index 0000000000000..7f0009d5c6b0f Binary files /dev/null and b/public/product/issues/suspect-commits/code-mappings-stacktrace.png differ diff --git a/docs/product/metrics/img/Index.png b/public/product/metrics/Index.png similarity index 100% rename from docs/product/metrics/img/Index.png rename to public/product/metrics/Index.png diff --git a/docs/product/metrics/img/alerts-dashboards.png b/public/product/metrics/alerts-dashboards.png similarity index 100% rename from docs/product/metrics/img/alerts-dashboards.png rename to public/product/metrics/alerts-dashboards.png diff --git a/docs/product/metrics/img/code-locations.png b/public/product/metrics/code-locations.png similarity index 100% rename from docs/product/metrics/img/code-locations.png rename to public/product/metrics/code-locations.png diff --git a/docs/product/metrics/img/enhance.png b/public/product/metrics/enhance.png similarity index 100% rename from docs/product/metrics/img/enhance.png rename to public/product/metrics/enhance.png diff --git a/docs/product/metrics/img/equations.png b/public/product/metrics/equations.png similarity index 100% rename from docs/product/metrics/img/equations.png rename to public/product/metrics/equations.png diff --git a/docs/product/metrics/img/metrics-explorer-query.png b/public/product/metrics/metrics-explorer-query.png similarity index 100% rename from docs/product/metrics/img/metrics-explorer-query.png rename to public/product/metrics/metrics-explorer-query.png diff --git a/docs/product/metrics/img/multiple-queries.png b/public/product/metrics/multiple-queries.png similarity index 100% rename from docs/product/metrics/img/multiple-queries.png rename to public/product/metrics/multiple-queries.png diff --git a/docs/product/metrics/img/samples-table.png b/public/product/metrics/samples-table.png similarity index 100% rename from docs/product/metrics/img/samples-table.png rename to public/product/metrics/samples-table.png diff --git a/docs/product/performance/img/01_full_widget_all.png b/public/product/performance/01_full_widget_all.png similarity index 100% rename from docs/product/performance/img/01_full_widget_all.png rename to public/product/performance/01_full_widget_all.png diff --git a/docs/product/performance/mobile-vitals/img/01_full_widget_mobile.png b/public/product/performance/01_full_widget_mobile.png similarity index 100% rename from docs/product/performance/mobile-vitals/img/01_full_widget_mobile.png rename to public/product/performance/01_full_widget_mobile.png diff --git a/docs/product/performance/mobile-vitals/img/app-start-transaction.png b/public/product/performance/app-start-transaction.png similarity index 100% rename from docs/product/performance/mobile-vitals/img/app-start-transaction.png rename to public/product/performance/app-start-transaction.png diff --git a/docs/product/performance/mobile-vitals/img/app-starts-samples-by-event.png b/public/product/performance/app-starts-samples-by-event.png similarity index 100% rename from docs/product/performance/mobile-vitals/img/app-starts-samples-by-event.png rename to public/product/performance/app-starts-samples-by-event.png diff --git a/docs/product/performance/mobile-vitals/img/app-starts-screen-summary.png b/public/product/performance/app-starts-screen-summary.png similarity index 100% rename from docs/product/performance/mobile-vitals/img/app-starts-screen-summary.png rename to public/product/performance/app-starts-screen-summary.png diff --git a/docs/product/performance/mobile-vitals/img/app-starts-span-detail-view.png b/public/product/performance/app-starts-span-detail-view.png similarity index 100% rename from docs/product/performance/mobile-vitals/img/app-starts-span-detail-view.png rename to public/product/performance/app-starts-span-detail-view.png diff --git a/docs/product/performance/mobile-vitals/img/app-starts.png b/public/product/performance/app-starts.png similarity index 100% rename from docs/product/performance/mobile-vitals/img/app-starts.png rename to public/product/performance/app-starts.png diff --git a/docs/product/performance/img/custom-metrics-performance.png b/public/product/performance/custom-metrics-performance.png similarity index 100% rename from docs/product/performance/img/custom-metrics-performance.png rename to public/product/performance/custom-metrics-performance.png diff --git a/docs/product/performance/img/diagram-transaction-cls.png b/public/product/performance/diagram-transaction-cls.png similarity index 100% rename from docs/product/performance/img/diagram-transaction-cls.png rename to public/product/performance/diagram-transaction-cls.png diff --git a/docs/product/performance/img/diagram-transaction-vitals.png b/public/product/performance/diagram-transaction-vitals.png similarity index 100% rename from docs/product/performance/img/diagram-transaction-vitals.png rename to public/product/performance/diagram-transaction-vitals.png diff --git a/docs/product/performance/img/exclusive-time.png b/public/product/performance/exclusive-time.png similarity index 100% rename from docs/product/performance/img/exclusive-time.png rename to public/product/performance/exclusive-time.png diff --git a/docs/product/performance/filters-display/img/01_full_widget_frontend.png b/public/product/performance/filters-display/01_full_widget_frontend.png similarity index 100% rename from docs/product/performance/filters-display/img/01_full_widget_frontend.png rename to public/product/performance/filters-display/01_full_widget_frontend.png diff --git a/docs/product/performance/filters-display/img/01_half_widget_frontend.png b/public/product/performance/filters-display/01_half_widget_frontend.png similarity index 100% rename from docs/product/performance/filters-display/img/01_half_widget_frontend.png rename to public/product/performance/filters-display/01_half_widget_frontend.png diff --git a/docs/product/performance/filters-display/img/transaction-name-search.png b/public/product/performance/filters-display/transaction-name-search.png similarity index 100% rename from docs/product/performance/filters-display/img/transaction-name-search.png rename to public/product/performance/filters-display/transaction-name-search.png diff --git a/docs/product/performance/img/perf-transaction-summary.png b/public/product/performance/perf-transaction-summary.png similarity index 100% rename from docs/product/performance/img/perf-transaction-summary.png rename to public/product/performance/perf-transaction-summary.png diff --git a/docs/product/performance/img/perf-web-vitals.png b/public/product/performance/perf-web-vitals.png similarity index 100% rename from docs/product/performance/img/perf-web-vitals.png rename to public/product/performance/perf-web-vitals.png diff --git a/docs/product/performance/img/query-source-laravel.png b/public/product/performance/query-source-laravel.png similarity index 100% rename from docs/product/performance/img/query-source-laravel.png rename to public/product/performance/query-source-laravel.png diff --git a/docs/product/performance/img/resource-sample-images.png b/public/product/performance/resource-sample-images.png similarity index 100% rename from docs/product/performance/img/resource-sample-images.png rename to public/product/performance/resource-sample-images.png diff --git a/docs/product/performance/retention-priorities/img/investigation-bias-discover.png b/public/product/performance/retention-priorities/investigation-bias-discover.png similarity index 100% rename from docs/product/performance/retention-priorities/img/investigation-bias-discover.png rename to public/product/performance/retention-priorities/investigation-bias-discover.png diff --git a/docs/product/performance/retention-priorities/img/investigation-bias-rule-created.png b/public/product/performance/retention-priorities/investigation-bias-rule-created.png similarity index 100% rename from docs/product/performance/retention-priorities/img/investigation-bias-rule-created.png rename to public/product/performance/retention-priorities/investigation-bias-rule-created.png diff --git a/docs/product/performance/retention-priorities/img/investigation-bias-tx-summary.png b/public/product/performance/retention-priorities/investigation-bias-tx-summary.png similarity index 100% rename from docs/product/performance/retention-priorities/img/investigation-bias-tx-summary.png rename to public/product/performance/retention-priorities/investigation-bias-tx-summary.png diff --git a/docs/product/performance/mobile-vitals/img/screen-loads-screen-summary.png b/public/product/performance/screen-loads-screen-summary.png similarity index 100% rename from docs/product/performance/mobile-vitals/img/screen-loads-screen-summary.png rename to public/product/performance/screen-loads-screen-summary.png diff --git a/docs/product/performance/mobile-vitals/img/screen-loads-span-detail.png b/public/product/performance/screen-loads-span-detail.png similarity index 100% rename from docs/product/performance/mobile-vitals/img/screen-loads-span-detail.png rename to public/product/performance/screen-loads-span-detail.png diff --git a/docs/product/performance/mobile-vitals/img/screen-loads.png b/public/product/performance/screen-loads.png similarity index 100% rename from docs/product/performance/mobile-vitals/img/screen-loads.png rename to public/product/performance/screen-loads.png diff --git a/docs/product/performance/mobile-vitals/img/slow-frozen-frames.png b/public/product/performance/slow-frozen-frames.png similarity index 100% rename from docs/product/performance/mobile-vitals/img/slow-frozen-frames.png rename to public/product/performance/slow-frozen-frames.png diff --git a/docs/product/performance/img/tags-tab.png b/public/product/performance/tags-tab.png similarity index 100% rename from docs/product/performance/img/tags-tab.png rename to public/product/performance/tags-tab.png diff --git a/docs/product/performance/mobile-vitals/img/time-to-initial-full-display.png b/public/product/performance/time-to-initial-full-display.png similarity index 100% rename from docs/product/performance/mobile-vitals/img/time-to-initial-full-display.png rename to public/product/performance/time-to-initial-full-display.png diff --git a/docs/product/performance/img/trends.png b/public/product/performance/trends.png similarity index 100% rename from docs/product/performance/img/trends.png rename to public/product/performance/trends.png diff --git a/docs/product/performance/mobile-vitals/img/ttid-ttfd-affecting-spans.png b/public/product/performance/ttid-ttfd-affecting-spans.png similarity index 100% rename from docs/product/performance/mobile-vitals/img/ttid-ttfd-affecting-spans.png rename to public/product/performance/ttid-ttfd-affecting-spans.png diff --git a/docs/product/profiling/img/aggregated-flame-graph-view.png b/public/product/profiling/aggregated-flame-graph-view.png similarity index 100% rename from docs/product/profiling/img/aggregated-flame-graph-view.png rename to public/product/profiling/aggregated-flame-graph-view.png diff --git a/docs/product/profiling/img/call-stack-transaction.png b/public/product/profiling/call-stack-transaction.png similarity index 100% rename from docs/product/profiling/img/call-stack-transaction.png rename to public/product/profiling/call-stack-transaction.png diff --git a/docs/product/profiling/img/differential-flamegraph-inverted.png b/public/product/profiling/differential-flamegraph-inverted.png similarity index 100% rename from docs/product/profiling/img/differential-flamegraph-inverted.png rename to public/product/profiling/differential-flamegraph-inverted.png diff --git a/docs/product/profiling/img/differential-flamegraph-new.png b/public/product/profiling/differential-flamegraph-new.png similarity index 100% rename from docs/product/profiling/img/differential-flamegraph-new.png rename to public/product/profiling/differential-flamegraph-new.png diff --git a/docs/product/profiling/img/differential-flamegraph-regular.png b/public/product/profiling/differential-flamegraph-regular.png similarity index 100% rename from docs/product/profiling/img/differential-flamegraph-regular.png rename to public/product/profiling/differential-flamegraph-regular.png diff --git a/docs/product/profiling/img/differential-flamegraph-table.png b/public/product/profiling/differential-flamegraph-table.png similarity index 100% rename from docs/product/profiling/img/differential-flamegraph-table.png rename to public/product/profiling/differential-flamegraph-table.png diff --git a/docs/product/profiling/img/differential-flamegraph.png b/public/product/profiling/differential-flamegraph.png similarity index 100% rename from docs/product/profiling/img/differential-flamegraph.png rename to public/product/profiling/differential-flamegraph.png diff --git a/docs/product/profiling/img/fib-flame-chart.png b/public/product/profiling/fib-flame-chart.png similarity index 100% rename from docs/product/profiling/img/fib-flame-chart.png rename to public/product/profiling/fib-flame-chart.png diff --git a/docs/product/profiling/img/fib-flame-graph.png b/public/product/profiling/fib-flame-graph.png similarity index 100% rename from docs/product/profiling/img/fib-flame-graph.png rename to public/product/profiling/fib-flame-graph.png diff --git a/docs/product/profiling/img/flame-chart-hair.png b/public/product/profiling/flame-chart-hair.png similarity index 100% rename from docs/product/profiling/img/flame-chart-hair.png rename to public/product/profiling/flame-chart-hair.png diff --git a/docs/product/profiling/img/flame-chart-less-hair.png b/public/product/profiling/flame-chart-less-hair.png similarity index 100% rename from docs/product/profiling/img/flame-chart-less-hair.png rename to public/product/profiling/flame-chart-less-hair.png diff --git a/docs/product/profiling/img/flame-chart.png b/public/product/profiling/flame-chart.png similarity index 100% rename from docs/product/profiling/img/flame-chart.png rename to public/product/profiling/flame-chart.png diff --git a/docs/product/profiling/img/minimap.png b/public/product/profiling/minimap.png similarity index 100% rename from docs/product/profiling/img/minimap.png rename to public/product/profiling/minimap.png diff --git a/docs/product/profiling/mobile-app-profiling/img/flamechart-with-gpu-overlay.png b/public/product/profiling/mobile-app-profiling/flamechart-with-gpu-overlay.png similarity index 100% rename from docs/product/profiling/mobile-app-profiling/img/flamechart-with-gpu-overlay.png rename to public/product/profiling/mobile-app-profiling/flamechart-with-gpu-overlay.png diff --git a/docs/product/profiling/img/new-transaction-profile-view.png b/public/product/profiling/new-transaction-profile-view.png similarity index 100% rename from docs/product/profiling/img/new-transaction-profile-view.png rename to public/product/profiling/new-transaction-profile-view.png diff --git a/docs/product/profiling/img/performance-page.png b/public/product/profiling/performance-page.png similarity index 100% rename from docs/product/profiling/img/performance-page.png rename to public/product/profiling/performance-page.png diff --git a/docs/product/profiling/img/profile-details-flame-chart.png b/public/product/profiling/profile-details-flame-chart.png similarity index 100% rename from docs/product/profiling/img/profile-details-flame-chart.png rename to public/product/profiling/profile-details-flame-chart.png diff --git a/docs/product/profiling/img/profile-flame-chart.png b/public/product/profiling/profile-flame-chart.png similarity index 100% rename from docs/product/profiling/img/profile-flame-chart.png rename to public/product/profiling/profile-flame-chart.png diff --git a/docs/product/profiling/img/profiling-details.png b/public/product/profiling/profiling-details.png similarity index 100% rename from docs/product/profiling/img/profiling-details.png rename to public/product/profiling/profiling-details.png diff --git a/docs/product/profiling/img/profiling-page-view.png b/public/product/profiling/profiling-page-view.png similarity index 100% rename from docs/product/profiling/img/profiling-page-view.png rename to public/product/profiling/profiling-page-view.png diff --git a/docs/product/profiling/img/search-bar.png b/public/product/profiling/search-bar.png similarity index 100% rename from docs/product/profiling/img/search-bar.png rename to public/product/profiling/search-bar.png diff --git a/docs/product/profiling/img/span-tree.png b/public/product/profiling/span-tree.png similarity index 100% rename from docs/product/profiling/img/span-tree.png rename to public/product/profiling/span-tree.png diff --git a/docs/product/profiling/img/table-view.gif b/public/product/profiling/table-view.gif similarity index 100% rename from docs/product/profiling/img/table-view.gif rename to public/product/profiling/table-view.gif diff --git a/docs/product/profiling/img/thread-selector.png b/public/product/profiling/thread-selector.png similarity index 100% rename from docs/product/profiling/img/thread-selector.png rename to public/product/profiling/thread-selector.png diff --git a/docs/product/profiling/img/transaction-environment-view.png b/public/product/profiling/transaction-environment-view.png similarity index 100% rename from docs/product/profiling/img/transaction-environment-view.png rename to public/product/profiling/transaction-environment-view.png diff --git a/docs/product/profiling/img/transaction-summary-page.png b/public/product/profiling/transaction-summary-page.png similarity index 100% rename from docs/product/profiling/img/transaction-summary-page.png rename to public/product/profiling/transaction-summary-page.png diff --git a/docs/product/profiling/img/waterfall-tree.png b/public/product/profiling/waterfall-tree.png similarity index 100% rename from docs/product/profiling/img/waterfall-tree.png rename to public/product/profiling/waterfall-tree.png diff --git a/docs/product/reference/search/img/custom-saved-searches.gif b/public/product/reference/search/custom-saved-searches.gif similarity index 100% rename from docs/product/reference/search/img/custom-saved-searches.gif rename to public/product/reference/search/custom-saved-searches.gif diff --git a/docs/product/reference/search/img/my_default_search.png b/public/product/reference/search/my_default_search.png similarity index 100% rename from docs/product/reference/search/img/my_default_search.png rename to public/product/reference/search/my_default_search.png diff --git a/docs/product/reference/search/img/project-selector.png b/public/product/reference/search/project-selector.png similarity index 100% rename from docs/product/reference/search/img/project-selector.png rename to public/product/reference/search/project-selector.png diff --git a/docs/product/reference/search/img/saved-searches.gif b/public/product/reference/search/saved-searches.gif similarity index 100% rename from docs/product/reference/search/img/saved-searches.gif rename to public/product/reference/search/saved-searches.gif diff --git a/docs/product/reference/search/img/search-recommended.png b/public/product/reference/search/search-recommended.png similarity index 100% rename from docs/product/reference/search/img/search-recommended.png rename to public/product/reference/search/search-recommended.png diff --git a/docs/product/reference/search/img/search-saved-search-edit-delete.png b/public/product/reference/search/search-saved-search-edit-delete.png similarity index 100% rename from docs/product/reference/search/img/search-saved-search-edit-delete.png rename to public/product/reference/search/search-saved-search-edit-delete.png diff --git a/docs/product/reference/search/img/set_default_search.png b/public/product/reference/search/set_default_search.png similarity index 100% rename from docs/product/reference/search/img/set_default_search.png rename to public/product/reference/search/set_default_search.png diff --git a/docs/product/relay/img/add-relay-key.png b/public/product/relay/add-relay-key.png similarity index 100% rename from docs/product/relay/img/add-relay-key.png rename to public/product/relay/add-relay-key.png diff --git a/docs/product/relay/img/edit-relay-key.png b/public/product/relay/edit-relay-key.png similarity index 100% rename from docs/product/relay/img/edit-relay-key.png rename to public/product/relay/edit-relay-key.png diff --git a/docs/product/releases/health/img/adoption-stage-label.png b/public/product/releases/health/adoption-stage-label.png similarity index 100% rename from docs/product/releases/health/img/adoption-stage-label.png rename to public/product/releases/health/adoption-stage-label.png diff --git a/docs/product/releases/health/img/adoption_bar.png b/public/product/releases/health/adoption_bar.png similarity index 100% rename from docs/product/releases/health/img/adoption_bar.png rename to public/product/releases/health/adoption_bar.png diff --git a/docs/product/releases/health/img/release_active_sessions.png b/public/product/releases/health/release_active_sessions.png similarity index 100% rename from docs/product/releases/health/img/release_active_sessions.png rename to public/product/releases/health/release_active_sessions.png diff --git a/docs/product/releases/health/img/release_active_users.png b/public/product/releases/health/release_active_users.png similarity index 100% rename from docs/product/releases/health/img/release_active_users.png rename to public/product/releases/health/release_active_users.png diff --git a/docs/product/releases/health/img/release_adoption_chart.png b/public/product/releases/health/release_adoption_chart.png similarity index 100% rename from docs/product/releases/health/img/release_adoption_chart.png rename to public/product/releases/health/release_adoption_chart.png diff --git a/docs/product/releases/health/img/release_crash_free_sessions.png b/public/product/releases/health/release_crash_free_sessions.png similarity index 100% rename from docs/product/releases/health/img/release_crash_free_sessions.png rename to public/product/releases/health/release_crash_free_sessions.png diff --git a/docs/product/releases/health/img/release_crash_free_users.png b/public/product/releases/health/release_crash_free_users.png similarity index 100% rename from docs/product/releases/health/img/release_crash_free_users.png rename to public/product/releases/health/release_crash_free_users.png diff --git a/docs/product/releases/img/healthy_sessions_displayed.png b/public/product/releases/healthy_sessions_displayed.png similarity index 100% rename from docs/product/releases/img/healthy_sessions_displayed.png rename to public/product/releases/healthy_sessions_displayed.png diff --git a/docs/product/releases/img/healthy_sessions_hidden.png b/public/product/releases/healthy_sessions_hidden.png similarity index 100% rename from docs/product/releases/img/healthy_sessions_hidden.png rename to public/product/releases/healthy_sessions_hidden.png diff --git a/docs/product/releases/img/release_details.png b/public/product/releases/release_details.png similarity index 100% rename from docs/product/releases/img/release_details.png rename to public/product/releases/release_details.png diff --git a/docs/product/releases/img/release_index.png b/public/product/releases/release_index.png similarity index 100% rename from docs/product/releases/img/release_index.png rename to public/product/releases/release_index.png diff --git a/docs/product/releases/img/resolved_in_options.png b/public/product/releases/resolved_in_options.png similarity index 100% rename from docs/product/releases/img/resolved_in_options.png rename to public/product/releases/resolved_in_options.png diff --git a/docs/product/releases/setup/release-automation/circleci/img/internal-integration-permissions.png b/public/product/releases/setup/release-automation/circleci/internal-integration-permissions.png similarity index 100% rename from docs/product/releases/setup/release-automation/circleci/img/internal-integration-permissions.png rename to public/product/releases/setup/release-automation/circleci/internal-integration-permissions.png diff --git a/docs/product/releases/setup/release-automation/circleci/img/project-settings-env-var.png b/public/product/releases/setup/release-automation/circleci/project-settings-env-var.png similarity index 100% rename from docs/product/releases/setup/release-automation/circleci/img/project-settings-env-var.png rename to public/product/releases/setup/release-automation/circleci/project-settings-env-var.png diff --git a/docs/product/releases/setup/release-automation/jenkins/img/internal-integration-permissions.png b/public/product/releases/setup/release-automation/jenkins/internal-integration-permissions.png similarity index 100% rename from docs/product/releases/setup/release-automation/jenkins/img/internal-integration-permissions.png rename to public/product/releases/setup/release-automation/jenkins/internal-integration-permissions.png diff --git a/docs/product/releases/setup/release-automation/jenkins/img/jenkins-add-credential.png b/public/product/releases/setup/release-automation/jenkins/jenkins-add-credential.png similarity index 100% rename from docs/product/releases/setup/release-automation/jenkins/img/jenkins-add-credential.png rename to public/product/releases/setup/release-automation/jenkins/jenkins-add-credential.png diff --git a/docs/product/releases/setup/release-automation/jenkins/img/jenkins-freestyle-bindings.png b/public/product/releases/setup/release-automation/jenkins/jenkins-freestyle-bindings.png similarity index 100% rename from docs/product/releases/setup/release-automation/jenkins/img/jenkins-freestyle-bindings.png rename to public/product/releases/setup/release-automation/jenkins/jenkins-freestyle-bindings.png diff --git a/docs/product/releases/setup/release-automation/jenkins/img/jenkins-freestyle-shell.png b/public/product/releases/setup/release-automation/jenkins/jenkins-freestyle-shell.png similarity index 100% rename from docs/product/releases/setup/release-automation/jenkins/img/jenkins-freestyle-shell.png rename to public/product/releases/setup/release-automation/jenkins/jenkins-freestyle-shell.png diff --git a/docs/product/releases/setup/release-automation/img/releases-repo-add.png b/public/product/releases/setup/release-automation/releases-repo-add.png similarity index 100% rename from docs/product/releases/setup/release-automation/img/releases-repo-add.png rename to public/product/releases/setup/release-automation/releases-repo-add.png diff --git a/docs/product/releases/setup/release-automation/img/releases-repo-integrations.png b/public/product/releases/setup/release-automation/releases-repo-integrations.png similarity index 100% rename from docs/product/releases/setup/release-automation/img/releases-repo-integrations.png rename to public/product/releases/setup/release-automation/releases-repo-integrations.png diff --git a/docs/product/releases/setup/release-automation/travis-ci/img/internal-integration-permissions.png b/public/product/releases/setup/release-automation/travis-ci/internal-integration-permissions.png similarity index 100% rename from docs/product/releases/setup/release-automation/travis-ci/img/internal-integration-permissions.png rename to public/product/releases/setup/release-automation/travis-ci/internal-integration-permissions.png diff --git a/docs/product/releases/setup/release-automation/travis-ci/img/travis-env-vars.png b/public/product/releases/setup/release-automation/travis-ci/travis-env-vars.png similarity index 100% rename from docs/product/releases/setup/release-automation/travis-ci/img/travis-env-vars.png rename to public/product/releases/setup/release-automation/travis-ci/travis-env-vars.png diff --git a/docs/product/releases/usage/img/release-archive.png b/public/product/releases/usage/release-archive.png similarity index 100% rename from docs/product/releases/usage/img/release-archive.png rename to public/product/releases/usage/release-archive.png diff --git a/docs/product/releases/usage/img/release-restore.png b/public/product/releases/usage/release-restore.png similarity index 100% rename from docs/product/releases/usage/img/release-restore.png rename to public/product/releases/usage/release-restore.png diff --git a/docs/product/releases/usage/img/releases-filter-archived.png b/public/product/releases/usage/releases-filter-archived.png similarity index 100% rename from docs/product/releases/usage/img/releases-filter-archived.png rename to public/product/releases/usage/releases-filter-archived.png diff --git a/docs/product/security/img/legal-and-compliance.png b/public/product/security/legal-and-compliance.png similarity index 100% rename from docs/product/security/img/legal-and-compliance.png rename to public/product/security/legal-and-compliance.png diff --git a/docs/product/security/img/soc2.png b/public/product/security/soc2.png similarity index 100% rename from docs/product/security/img/soc2.png rename to public/product/security/soc2.png diff --git a/docs/product/sentry-basics/concepts/img/create-new-project-04.png b/public/product/sentry-basics/concepts/create-new-project-04.png similarity index 100% rename from docs/product/sentry-basics/concepts/img/create-new-project-04.png rename to public/product/sentry-basics/concepts/create-new-project-04.png diff --git a/docs/product/sentry-basics/concepts/enrich-data/img/001.png b/public/product/sentry-basics/concepts/enrich-data/001.png similarity index 100% rename from docs/product/sentry-basics/concepts/enrich-data/img/001.png rename to public/product/sentry-basics/concepts/enrich-data/001.png diff --git a/docs/product/sentry-basics/concepts/enrich-data/img/002.png b/public/product/sentry-basics/concepts/enrich-data/002.png similarity index 100% rename from docs/product/sentry-basics/concepts/enrich-data/img/002.png rename to public/product/sentry-basics/concepts/enrich-data/002.png diff --git a/docs/product/sentry-basics/concepts/enrich-data/img/003.png b/public/product/sentry-basics/concepts/enrich-data/003.png similarity index 100% rename from docs/product/sentry-basics/concepts/enrich-data/img/003.png rename to public/product/sentry-basics/concepts/enrich-data/003.png diff --git a/docs/product/sentry-basics/concepts/enrich-data/img/004.png b/public/product/sentry-basics/concepts/enrich-data/004.png similarity index 100% rename from docs/product/sentry-basics/concepts/enrich-data/img/004.png rename to public/product/sentry-basics/concepts/enrich-data/004.png diff --git a/docs/product/sentry-basics/concepts/enrich-data/img/005.png b/public/product/sentry-basics/concepts/enrich-data/005.png similarity index 100% rename from docs/product/sentry-basics/concepts/enrich-data/img/005.png rename to public/product/sentry-basics/concepts/enrich-data/005.png diff --git a/docs/product/sentry-basics/concepts/enrich-data/img/006.png b/public/product/sentry-basics/concepts/enrich-data/006.png similarity index 100% rename from docs/product/sentry-basics/concepts/enrich-data/img/006.png rename to public/product/sentry-basics/concepts/enrich-data/006.png diff --git a/docs/product/sentry-basics/concepts/environments/img/sentry-env.png b/public/product/sentry-basics/concepts/environments/sentry-env.png similarity index 100% rename from docs/product/sentry-basics/concepts/environments/img/sentry-env.png rename to public/product/sentry-basics/concepts/environments/sentry-env.png diff --git a/docs/product/sentry-basics/concepts/tracing/img/addremove-transaction.png b/public/product/sentry-basics/concepts/tracing/addremove-transaction.png similarity index 100% rename from docs/product/sentry-basics/concepts/tracing/img/addremove-transaction.png rename to public/product/sentry-basics/concepts/tracing/addremove-transaction.png diff --git a/docs/product/sentry-basics/concepts/tracing/img/diagram-transaction-example.png b/public/product/sentry-basics/concepts/tracing/diagram-transaction-example.png similarity index 100% rename from docs/product/sentry-basics/concepts/tracing/img/diagram-transaction-example.png rename to public/product/sentry-basics/concepts/tracing/diagram-transaction-example.png diff --git a/docs/product/sentry-basics/concepts/tracing/img/diagram-transaction-spans.png b/public/product/sentry-basics/concepts/tracing/diagram-transaction-spans.png similarity index 100% rename from docs/product/sentry-basics/concepts/tracing/img/diagram-transaction-spans.png rename to public/product/sentry-basics/concepts/tracing/diagram-transaction-spans.png diff --git a/docs/product/sentry-basics/concepts/tracing/img/diagram-transaction-trace.png b/public/product/sentry-basics/concepts/tracing/diagram-transaction-trace.png similarity index 100% rename from docs/product/sentry-basics/concepts/tracing/img/diagram-transaction-trace.png rename to public/product/sentry-basics/concepts/tracing/diagram-transaction-trace.png diff --git a/docs/product/sentry-basics/concepts/tracing/img/operations-breakdown.png b/public/product/sentry-basics/concepts/tracing/operations-breakdown.png similarity index 100% rename from docs/product/sentry-basics/concepts/tracing/img/operations-breakdown.png rename to public/product/sentry-basics/concepts/tracing/operations-breakdown.png diff --git a/docs/product/sentry-basics/concepts/tracing/img/operations-calc.png b/public/product/sentry-basics/concepts/tracing/operations-calc.png similarity index 100% rename from docs/product/sentry-basics/concepts/tracing/img/operations-calc.png rename to public/product/sentry-basics/concepts/tracing/operations-calc.png diff --git a/docs/product/sentry-basics/concepts/tracing/img/span-detail.png b/public/product/sentry-basics/concepts/tracing/span-detail.png similarity index 100% rename from docs/product/sentry-basics/concepts/tracing/img/span-detail.png rename to public/product/sentry-basics/concepts/tracing/span-detail.png diff --git a/docs/product/sentry-basics/concepts/tracing/img/trace-navigator.png b/public/product/sentry-basics/concepts/tracing/trace-navigator.png similarity index 100% rename from docs/product/sentry-basics/concepts/tracing/img/trace-navigator.png rename to public/product/sentry-basics/concepts/tracing/trace-navigator.png diff --git a/docs/product/sentry-basics/concepts/tracing/img/trace-view.png b/public/product/sentry-basics/concepts/tracing/trace-view.png similarity index 100% rename from docs/product/sentry-basics/concepts/tracing/img/trace-view.png rename to public/product/sentry-basics/concepts/tracing/trace-view.png diff --git a/docs/product/sentry-basics/concepts/tracing/img/transaction-detail.png b/public/product/sentry-basics/concepts/tracing/transaction-detail.png similarity index 100% rename from docs/product/sentry-basics/concepts/tracing/img/transaction-detail.png rename to public/product/sentry-basics/concepts/tracing/transaction-detail.png diff --git a/docs/product/sentry-basics/integrate-backend/img/capture_exception.png b/public/product/sentry-basics/integrate-backend/capture_exception.png similarity index 100% rename from docs/product/sentry-basics/integrate-backend/img/capture_exception.png rename to public/product/sentry-basics/integrate-backend/capture_exception.png diff --git a/docs/product/sentry-basics/integrate-backend/img/capture_message.png b/public/product/sentry-basics/integrate-backend/capture_message.png similarity index 100% rename from docs/product/sentry-basics/integrate-backend/img/capture_message.png rename to public/product/sentry-basics/integrate-backend/capture_message.png diff --git a/docs/product/sentry-basics/integrate-backend/img/enriched_data_1.png b/public/product/sentry-basics/integrate-backend/enriched_data_1.png similarity index 100% rename from docs/product/sentry-basics/integrate-backend/img/enriched_data_1.png rename to public/product/sentry-basics/integrate-backend/enriched_data_1.png diff --git a/docs/product/sentry-basics/integrate-backend/img/enriched_data_2.png b/public/product/sentry-basics/integrate-backend/enriched_data_2.png similarity index 100% rename from docs/product/sentry-basics/integrate-backend/img/enriched_data_2.png rename to public/product/sentry-basics/integrate-backend/enriched_data_2.png diff --git a/docs/product/sentry-basics/integrate-backend/img/error_with_all_tags.png b/public/product/sentry-basics/integrate-backend/error_with_all_tags.png similarity index 100% rename from docs/product/sentry-basics/integrate-backend/img/error_with_all_tags.png rename to public/product/sentry-basics/integrate-backend/error_with_all_tags.png diff --git a/docs/product/sentry-basics/integrate-backend/img/fork_n_clone.png b/public/product/sentry-basics/integrate-backend/fork_n_clone.png similarity index 100% rename from docs/product/sentry-basics/integrate-backend/img/fork_n_clone.png rename to public/product/sentry-basics/integrate-backend/fork_n_clone.png diff --git a/docs/product/sentry-basics/integrate-backend/img/handled_release.png b/public/product/sentry-basics/integrate-backend/handled_release.png similarity index 100% rename from docs/product/sentry-basics/integrate-backend/img/handled_release.png rename to public/product/sentry-basics/integrate-backend/handled_release.png diff --git a/docs/product/sentry-basics/integrate-backend/img/makefile.png b/public/product/sentry-basics/integrate-backend/makefile.png similarity index 100% rename from docs/product/sentry-basics/integrate-backend/img/makefile.png rename to public/product/sentry-basics/integrate-backend/makefile.png diff --git a/docs/product/sentry-basics/integrate-backend/img/makefile_config.png b/public/product/sentry-basics/integrate-backend/makefile_config.png similarity index 100% rename from docs/product/sentry-basics/integrate-backend/img/makefile_config.png rename to public/product/sentry-basics/integrate-backend/makefile_config.png diff --git a/docs/product/sentry-basics/integrate-backend/img/run_django_server.png b/public/product/sentry-basics/integrate-backend/run_django_server.png similarity index 100% rename from docs/product/sentry-basics/integrate-backend/img/run_django_server.png rename to public/product/sentry-basics/integrate-backend/run_django_server.png diff --git a/docs/product/sentry-basics/integrate-backend/img/unhandled_issue.png b/public/product/sentry-basics/integrate-backend/unhandled_issue.png similarity index 100% rename from docs/product/sentry-basics/integrate-backend/img/unhandled_issue.png rename to public/product/sentry-basics/integrate-backend/unhandled_issue.png diff --git a/docs/product/sentry-basics/integrate-backend/img/unhandled_issue_breadcrumbs.png b/public/product/sentry-basics/integrate-backend/unhandled_issue_breadcrumbs.png similarity index 100% rename from docs/product/sentry-basics/integrate-backend/img/unhandled_issue_breadcrumbs.png rename to public/product/sentry-basics/integrate-backend/unhandled_issue_breadcrumbs.png diff --git a/docs/product/sentry-basics/integrate-frontend/img/FE-tutorial-demo-app.png b/public/product/sentry-basics/integrate-frontend/FE-tutorial-demo-app.png similarity index 100% rename from docs/product/sentry-basics/integrate-frontend/img/FE-tutorial-demo-app.png rename to public/product/sentry-basics/integrate-frontend/FE-tutorial-demo-app.png diff --git a/docs/product/sentry-basics/integrate-frontend/img/configure-scms-09.png b/public/product/sentry-basics/integrate-frontend/configure-scms-09.png similarity index 100% rename from docs/product/sentry-basics/integrate-frontend/img/configure-scms-09.png rename to public/product/sentry-basics/integrate-frontend/configure-scms-09.png diff --git a/docs/product/sentry-basics/integrate-frontend/img/generate-first-error-01.png b/public/product/sentry-basics/integrate-frontend/generate-first-error-01.png similarity index 100% rename from docs/product/sentry-basics/integrate-frontend/img/generate-first-error-01.png rename to public/product/sentry-basics/integrate-frontend/generate-first-error-01.png diff --git a/docs/product/sentry-basics/integrate-frontend/img/issue_email_suspect_commits.png b/public/product/sentry-basics/integrate-frontend/issue_email_suspect_commits.png similarity index 100% rename from docs/product/sentry-basics/integrate-frontend/img/issue_email_suspect_commits.png rename to public/product/sentry-basics/integrate-frontend/issue_email_suspect_commits.png diff --git a/docs/product/sentry-basics/integrate-frontend/img/new_issue_email.png b/public/product/sentry-basics/integrate-frontend/new_issue_email.png similarity index 100% rename from docs/product/sentry-basics/integrate-frontend/img/new_issue_email.png rename to public/product/sentry-basics/integrate-frontend/new_issue_email.png diff --git a/docs/product/sentry-basics/integrate-frontend/img/suggested_assignees.png b/public/product/sentry-basics/integrate-frontend/suggested_assignees.png similarity index 100% rename from docs/product/sentry-basics/integrate-frontend/img/suggested_assignees.png rename to public/product/sentry-basics/integrate-frontend/suggested_assignees.png diff --git a/docs/product/sentry-basics/integrate-frontend/img/upload-source-maps-08.png b/public/product/sentry-basics/integrate-frontend/upload-source-maps-08.png similarity index 100% rename from docs/product/sentry-basics/integrate-frontend/img/upload-source-maps-08.png rename to public/product/sentry-basics/integrate-frontend/upload-source-maps-08.png diff --git a/docs/product/session-replay/img/Replay-PIIScrubbing.png b/public/product/session-replay/Replay-PIIScrubbing.png similarity index 100% rename from docs/product/session-replay/img/Replay-PIIScrubbing.png rename to public/product/session-replay/Replay-PIIScrubbing.png diff --git a/docs/product/session-replay/img/replay-details-share.png b/public/product/session-replay/replay-details-share.png similarity index 100% rename from docs/product/session-replay/img/replay-details-share.png rename to public/product/session-replay/replay-details-share.png diff --git a/docs/product/session-replay/img/replay-details-tags.png b/public/product/session-replay/replay-details-tags.png similarity index 100% rename from docs/product/session-replay/img/replay-details-tags.png rename to public/product/session-replay/replay-details-tags.png diff --git a/docs/product/session-replay/img/replay-details.png b/public/product/session-replay/replay-details.png similarity index 100% rename from docs/product/session-replay/img/replay-details.png rename to public/product/session-replay/replay-details.png diff --git a/docs/product/session-replay/img/replay-index-filtering.png b/public/product/session-replay/replay-index-filtering.png similarity index 100% rename from docs/product/session-replay/img/replay-index-filtering.png rename to public/product/session-replay/replay-index-filtering.png diff --git a/docs/product/session-replay/img/session-replay-what-is-a-replay.png b/public/product/session-replay/session-replay-what-is-a-replay.png similarity index 100% rename from docs/product/session-replay/img/session-replay-what-is-a-replay.png rename to public/product/session-replay/session-replay-what-is-a-replay.png diff --git a/docs/product/session-replay/img/session-replay.png b/public/product/session-replay/session-replay.png similarity index 100% rename from docs/product/session-replay/img/session-replay.png rename to public/product/session-replay/session-replay.png diff --git a/docs/product/stats/img/health-stats.png b/public/product/stats/health-stats.png similarity index 100% rename from docs/product/stats/img/health-stats.png rename to public/product/stats/health-stats.png diff --git a/docs/product/stats/img/issues-stats.png b/public/product/stats/issues-stats.png similarity index 100% rename from docs/product/stats/img/issues-stats.png rename to public/product/stats/issues-stats.png diff --git a/docs/product/stats/img/usage-stats.png b/public/product/stats/usage-stats.png similarity index 100% rename from docs/product/stats/img/usage-stats.png rename to public/product/stats/usage-stats.png diff --git a/docs/product/user-feedback/img/crash-report-user-feedback.png b/public/product/user-feedback/crash-report-user-feedback.png similarity index 100% rename from docs/product/user-feedback/img/crash-report-user-feedback.png rename to public/product/user-feedback/crash-report-user-feedback.png diff --git a/docs/product/user-feedback/img/user-feedback-alert-configuration.png b/public/product/user-feedback/user-feedback-alert-configuration.png similarity index 100% rename from docs/product/user-feedback/img/user-feedback-alert-configuration.png rename to public/product/user-feedback/user-feedback-alert-configuration.png diff --git a/docs/product/user-feedback/img/user-feedback-list.png b/public/product/user-feedback/user-feedback-list.png similarity index 100% rename from docs/product/user-feedback/img/user-feedback-list.png rename to public/product/user-feedback/user-feedback-list.png diff --git a/docs/product/user-feedback/img/user-feedback-triaging.png b/public/product/user-feedback/user-feedback-triaging.png similarity index 100% rename from docs/product/user-feedback/img/user-feedback-triaging.png rename to public/product/user-feedback/user-feedback-triaging.png diff --git a/docs/product/user-feedback/img/user-feedback-widget.png b/public/product/user-feedback/user-feedback-widget.png similarity index 100% rename from docs/product/user-feedback/img/user-feedback-widget.png rename to public/product/user-feedback/user-feedback-widget.png diff --git a/src/components/docImage.tsx b/src/components/docImage.tsx index 46ed1bc7ea362..2e06c98dcb579 100644 --- a/src/components/docImage.tsx +++ b/src/components/docImage.tsx @@ -1,58 +1,15 @@ -import path from 'path'; - -import Image from 'next/image'; - import {serverContext} from 'sentry-docs/serverContext'; -export default function DocImage({ - src, - ...props -}: Omit, 'ref' | 'placeholder'>) { - const {path: pagePath} = serverContext(); - - if (!src) { - return null; - } - - // Next.js Image component only supports images from the public folder - // or from a remote server with properly configured domain - if (src.startsWith('http')) { - return ; +export default function DocImage({src, ...props}: React.HTMLProps) { + const {path} = serverContext(); + if (!src?.startsWith('/') && !src?.includes('://')) { + src = `/${path.join('/')}/${src}`; } - - // If the image src is not an absolute URL, we assume it's a relative path - // and we prepend /mdx-images/ to it. - if (src.startsWith('./')) { - src = path.join('/mdx-images', src); - } - // account for the old way of doing things where the public folder structure mirrored the docs folder - else if (!src?.startsWith('/') && !src?.includes('://')) { - src = `/${pagePath.join('/')}/${src}`; - } - - // parse the size from the URL hash (set by remark-image-size.js) - const srcURL = new URL(src, 'https://example.com'); - const imgPath = srcURL.pathname; - const [width, height] = srcURL.hash // #wxh - .slice(1) - .split('x') - .map(s => parseInt(s, 10)); - return ( - + ); } diff --git a/src/mdx.ts b/src/mdx.ts index 4f971ac5c780c..00074df0926f0 100644 --- a/src/mdx.ts +++ b/src/mdx.ts @@ -13,7 +13,6 @@ import rehypePrismPlus from 'rehype-prism-plus'; import rehypeSlug from 'rehype-slug'; // Remark packages import remarkGfm from 'remark-gfm'; -import remarkMdxImages from 'remark-mdx-images'; import getAppRegistry from './build/appRegistry'; import getPackageRegistry from './build/packageRegistry'; @@ -23,7 +22,6 @@ import remarkCodeTabs from './remark-code-tabs'; import remarkCodeTitles from './remark-code-title'; import remarkComponentSpacing from './remark-component-spacing'; import remarkExtractFrontmatter from './remark-extract-frontmatter'; -import remarkImageSize from './remark-image-size'; import remarkTocHeadings from './remark-toc-headings'; import remarkVariables from './remark-variables'; @@ -255,8 +253,13 @@ export async function getFileBySlug(slug: string) { } } - const sourcePath = [mdxPath, mdxIndexPath, mdPath].find(fs.existsSync) ?? mdIndexPath; - const source = fs.readFileSync(sourcePath, 'utf8'); + const source = fs.existsSync(mdxPath) + ? fs.readFileSync(mdxPath, 'utf8') + : fs.existsSync(mdxIndexPath) + ? fs.readFileSync(mdxIndexPath, 'utf8') + : fs.existsSync(mdPath) + ? fs.readFileSync(mdPath, 'utf8') + : fs.readFileSync(mdIndexPath, 'utf8'); process.env.ESBUILD_BINARY_PATH = path.join( root, @@ -268,12 +271,10 @@ export async function getFileBySlug(slug: string) { const toc = []; - // cwd is how mdx-bundler knows how to resolve relative paths - const cwd = path.dirname(sourcePath); - const result = await bundleMDX({ source, - cwd, + // mdx imports can be automatically source from the components directory + cwd: root, mdxOptions(options) { // this is the recommended way to add custom remark/rehype plugins: // The syntax might look weird, but it protects you in case we add/remove @@ -283,8 +284,6 @@ export async function getFileBySlug(slug: string) { remarkExtractFrontmatter, [remarkTocHeadings, {exportRef: toc}], remarkGfm, - [remarkImageSize, {sourceFolder: cwd, publicFolder: path.join(root, 'public')}], - remarkMdxImages, remarkCodeTitles, remarkCodeTabs, remarkComponentSpacing, @@ -341,20 +340,7 @@ export async function getFileBySlug(slug: string) { options.loader = { ...options.loader, '.js': 'jsx', - '.png': 'file', - '.gif': 'file', - '.jpg': 'file', - '.jpeg': 'file', - // inline svgs - '.svg': 'dataurl', }; - // Set the `outdir` to a public location for this bundle. - // this where this images will be copied - options.outdir = path.join(root, 'public', 'mdx-images'); - - // Set write to true so that esbuild will output the files. - options.write = true; - return options; }, }); diff --git a/src/remark-image-size.js b/src/remark-image-size.js deleted file mode 100644 index b934168a09c6f..0000000000000 --- a/src/remark-image-size.js +++ /dev/null @@ -1,27 +0,0 @@ -import path from 'path'; - -import getImageSize from 'image-size'; -import {visit} from 'unist-util-visit'; - -/** - * appends the image size to the image url as a hash e.g. /img.png -> /img.png#100x100 - * the size is consumed by docImage.tsx and passed down to next/image - * **this is a hack!**, there's probably a better way to set image node properties - * but adding a hash to the url seems like a very low risk way to do it 🙈 - */ -export default function remarkImageSize(options) { - return tree => - visit(tree, 'image', node => { - // don't process external images - if (node.url.startsWith('http')) { - return; - } - const fullImagePath = path.join( - // if the path starts with / it's a public asset, otherwise it's a relative path - node.url.startsWith('/') ? options.publicFolder : options.sourceFolder, - node.url - ); - const imageSize = getImageSize(fullImagePath); - node.url = node.url + `#${imageSize.width}x${imageSize.height}`; - }); -} diff --git a/yarn.lock b/yarn.lock index 069460230acb0..328e8c60e93ed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5467,7 +5467,7 @@ ignore@^5.2.0, ignore@^5.2.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== -image-size@^1.1.1: +image-size@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.1.1.tgz#ddd67d4dc340e52ac29ce5f546a09f4e29e840ac" integrity sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ== @@ -8966,15 +8966,6 @@ remark-mdx-frontmatter@^4.0.0: unified "^11.0.0" yaml "^2.0.0" -remark-mdx-images@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/remark-mdx-images/-/remark-mdx-images-3.0.0.tgz#e8a2b8dfad3eab72aea345f805040297702ac446" - integrity sha512-EKpqw11XUprx/kFQPEkH3GdPEqI63Wcq5GT120N2hGlKCSwOM09NtL1i3G9HQ4TBIR2aF471HF5YStME5ukbJw== - dependencies: - "@types/mdast" "^4.0.0" - unified "^11.0.0" - unist-util-visit "^5.0.0" - remark-mdx@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-2.3.0.tgz#efe678025a8c2726681bde8bf111af4a93943db4"