Skip to content

Commit d34fc5f

Browse files
authored
ref(grouping): Improve Sentry Basics > Grouping Issues page (#7201)
This makes a number of improvements to the Sentry Basics > Grouping Issues page: - Remove duplicative information about approaches to changing how events are grouped. (They are currently listed in a paragraph, immediately followed by a list with the same information.) - Rename "Solutions" section to the more descriptive "Changing How Events are Grouped." - Move info about configuring stacktrace rules to its own section under "Changing How Events are Grouped". Do the same for SDK-side fingerprinting. - Fix link to server-side fingerprinting rules page (currently points to SDK fingerprinting rules). - Do a whole bunch of wordsmithing.
1 parent 38ceee3 commit d34fc5f

File tree

1 file changed

+40
-32
lines changed
  • src/docs/product/sentry-basics/grouping-and-fingerprints

1 file changed

+40
-32
lines changed

src/docs/product/sentry-basics/grouping-and-fingerprints/index.mdx

Lines changed: 40 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,91 +9,99 @@ description: "Learn more about how Sentry groups issues together as well as diff
99
---
1010

1111
Have you ever had a set of similar-looking issues like this?
12+
1213
![Issues Dashboard](issues-dashboard.png)
1314

14-
Let's first understand how errors and transactions group into an issue. For example, the issue `testTypeIssue16` has 18 events that Sentry grouped into an issue because they share the same _fingerprint_.
15+
Ever wonder why some events group into a single issue but others group into separate issues?
16+
17+
Let's first understand how errors and transactions group into an issue. In the example above, the issue `testTypeIssue14` has 718 events that Sentry grouped into an issue because they share the same _fingerprint_.
1518

1619
**What is a fingerprint?**
17-
A fingerprint is a way to uniquely identify an event. Sentry sets a fingerprint by default for you. Sentry uses its own built-in grouping algorithms to generate a fingerprint based on information available within the event such as a stack trace, exception, and message. Events with the same fingerprint are grouped together.
20+
A fingerprint is a way to uniquely identify an event. Sentry sets a fingerprint for you by default, using built-in grouping algorithms based on information such as a stack trace, exception type, and message. Events with the same fingerprint are grouped together.
1821

19-
**Do I need to do anything?** No. Sentry automatically generates a fingerprint based on the event type and all available information. If events have the same root cause, they will group into one issue. If you have separate error issues that you'd like to group together, then this guide will show you how.
22+
**Do I need to do anything?** No. Sentry automatically generates a fingerprint based on the event type and other data in the event. If events have the same root cause, they will group into one issue. If you want to change the way events are grouped, see Changing How Events are Grouped below.
2023

21-
**How do I see the fingerprint?** Open an issue, click the JSON link, and find the _fingerprint_ property. If the default grouping was used, you'll see default written there. If a different grouping was used, you'll see the actual fingerprint value itself.
24+
**How do I see the fingerprint?** Open an issue, click the JSON link, and find the _fingerprint_ property. If the default grouping was used, you'll see `"{{ default }}"` written there. If a different grouping was used, you'll see the fingerprint value itself.
2225

23-
## Why are similar looking Issues not grouping together?
26+
## Why are similar-looking issues not grouping together?
2427

25-
If a set of issues in the Issues Stream looks similar, there is something that still differs: in this case it is the stack trace, and therefore the fingerprint. Let's compare two similar looking error issues side-by-side:
28+
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 stacktrace:
2629
![Issues Dashboard](issue-stacktraces-comparison.png)
2730

28-
Notice the only difference is one had function `testTypeIssue15` and the other had `testTypeIssue14`. This means the stack traces are not identical.
29-
Sometimes two stack traces are the same function execution path but differ by one frame. This can be due to several things like middleware you've configured, node_modules, the framework itself, or library imports. To have greater control over which stack frames are included or excluded, see [Stack Trace Rules](/product/data-management-settings/event-grouping/stack-trace-rules/).
31+
## Changing How Events are Grouped
3032

3133
<Note>
3234

33-
Fortunately you can change the default grouping behavior to make certain issue types match on something other than stack trace. You can do this from both the **Server side** and the **SDK side**
35+
The solutions described in this section are only applicable to [error issues](/product/issues/issue-details/error-issues/). Other categories of issues (such as [performance issues](/product/issues/issue-details/performance-issues/)) do not support this feature.
3436

3537
</Note>
3638

37-
## Solutions
39+
There are four different ways to change how events are grouped into issues.
3840

39-
<Note>
41+
**Merging Similar Issues**: This allows already-existing issues to be merged together. No settings or configuration are required to do this.
4042

41-
The solutions described in this section are only applicable for [error issues](/product/issues/issue-details/error-issues/). Other categories of issues (such as, [performance issues](/product/issues/issue-details/performance-issues/)) do not support this feature.
42-
43-
</Note>
43+
**Fingerprint Rules**: This allows you to configure rules for directly setting the fingerprint of future events.
4444

45-
There are three different approaches for updating how events group into issues. The first approach is for merging together historical issues already created. We'll call this **Merging Similar Issues**. The second is for setting rules so next incoming issues will get grouped together. We'll call this **Fingerprint Rules**. The third is **SDK Side Fingerprinting**. The difference between SDK side and Server side is the data elements on the exception and stack traces which you can use for matching issues.
45+
**Stacktrace Rules**: This allows you to configure rules for which stacktrace frames are used when applying grouping rules to future events.
4646

47-
In **Merging Similar Issues** we'll see how historical issues can be merged together. No settings or configuration are required to do this.
47+
**SDK-side Fingerprinting**: This allows you to set a fingerprint directly on an event before it's sent to Sentry.
4848

49-
In **Fingerprint Rules** we'll see how to set rules for new incoming issues of our choice to get grouped together by. This will not affect historical issues.
49+
Note that neither configuring fingerprint and stacktrace rules nor using SDK-side fingerprinting will affect existing events or issues, only change how future events are grouped.
5050

51-
More on **SDK Side Fingerprinting** [here](/platform-redirect/?next=/usage/sdk-fingerprinting/).
51+
See below for more details on each approach.
5252

5353
### Merging Similar Issues
5454

55-
This is for merging similar issues and will not auto merge the next occurrence of this issue coming in.
55+
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.
5656

5757
Before merge
5858
![Before Merge](before-merge-1.png)
5959

60-
After merge, we see that testTypeIssue7 and testTypeIssue8 were merged together.
60+
After merge, we see that `testTypeIssue7` and `testTypeIssue8` were merged together.
6161
![After Merge](after-merge-1.png)
6262

6363
You can also do this from inside a single issue. Click the Similar Issues tab
6464
![Similar Issues](similar-issues-1.png)
6565

66-
**Warning:** Future issues will get added to the merged set only if they match one of the stack traces in the merged set.
66+
**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.
6767

68-
If you'd like to unmerge issues, you can 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.
68+
If you'd like to unmerge issues, you can 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".
6969

7070
### Fingerprint Rules
7171

72-
Here's an overview of what we'll do using **Fingerprint Rules**
72+
In order to use fingerprint rules, there are two steps.
7373

74-
1. Identify the match logic for grouping issues together. We'll use either the error's **type** or **message**
75-
2. Set the match logic and its fingerprint for it, in your Project's Settings.
74+
1. Identify the match logic for grouping issues together. In the examples below, we'll use either the error's **type** or its **message**.
75+
2. Set the match logic and the corresponding fingerprint in project settings.
7676

7777
#### 1. Identify Match Logic
7878

79-
Let's say you want the following 2 issues to group together:
79+
Let's say you want the following two issues to group together:
8080
![ConnectionTimeouts](connection-timeouts-2.png)
8181

82-
You can do it based on the **type** as in:
82+
You can do it based on the error **type**:
8383
![ConnectionTimeoutType](connection-timeout-type.png)
8484

85-
Or you can do it based on the **message** as in any value after the word host:
85+
Or you can do it based on the **message**:
8686
![ConnectionTimeoutMessage](connection-timeout-message.png)
8787

88-
#### 2. Implement
88+
#### 2. Add Rules to Project Settings
8989

9090
Here's how to set the match based on the error **type** in **[Project] > Settings > Issue Grouping > Fingerprint Rules**:
9191
![ConnectionTimeoutTypeExample](connection-timeout-type-example.png)
9292

93-
Now, all events coming in with ConnectTimeout will get a fingerprint of connect-timeout-type and will get grouped into a single issue. This only applies to future events coming in. Each event for this issue could have a different stack trace, but stack trace is no longer used as the default grouping rule.
93+
Now all `ConnectTimeout` events will get a fingerprint of `connect-timeout-type` and will get grouped into a single issue, regardless of stacktrace. Note that this only applies to future events.
9494

95-
Here's how to set the match based on the error **message** where you want to include all hosts.
95+
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.
9696

9797
![ConnectionTimeoutMessageExample](connection-timeout-message-example.png)
9898

99-
You could also do this based on the file path of the erroring function, or on the function name itself. See [Fingerprint Rules](/platform-redirect/?next=/usage/sdk-fingerprinting/).
99+
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/).
100+
101+
### Stacktrace Rules
102+
103+
Sometimes two stack traces are the same function execution path but differ by one or more frames corresponding to code in middleware, third-party libraries, or the framework itself. Sentry will automatically try to detect and ignore such frames, but this is also configurable. See [Stack Trace Rules](/product/data-management-settings/event-grouping/stack-trace-rules/).
104+
105+
### SDK-side Fingerprinting
106+
107+
For information on setting fingerprints directly on events themselves, see the relevant [SDK docs](/platform-redirect/?next=/usage/sdk-fingerprinting/).

0 commit comments

Comments
 (0)