Skip to content

Commit 2c9e40b

Browse files
committed
Merge branch 'master' into feat(apple)/redact-docs
2 parents f9b2d64 + 6355dae commit 2c9e40b

File tree

43 files changed

+599
-108
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+599
-108
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---
2+
title: The “Indexed” Outcome Category
3+
sidebar_order: 4
4+
---
5+
6+
Data types which are subject to dynamic sampling are represented in two different outcome data categories: "total" and "indexed". You can think of the "total" category as counting items that are stored in _aggregated_ form, in other words, as metrics. The "indexed" category counts items that are stored individually.
7+
8+
If an item is dropped _before_ metrics extraction & dynamic sampling, it will show up as an outcome in both categories (for example, `"transaction"` and `"transaction_indexed"`). If an item is dropped _by_ dynamic sampling, it will show up as a "filtered" outcome in the "indexed" category, but it lives on in the form of metrics, for which we emit an "accepted" outcome in the "total" category.
9+
10+
## Illustration
11+
12+
These charts illustrate the flow of data categories for transactions:
13+
14+
For a sampled transaction:
15+
16+
![](https://mermaid.ink/img/pako:eNp1UT1vgzAQ_SvWzYAgJoA9ZGJru4StdVWdwCGWwI4c04Yi_nsNDI2U1l589z58TzdBbRoJHE6d-arPaB15PgpN_KnKJxKGzqK-Yu2U0WF4IEfZ4bjh6_ORUVZv5aixVzWpsL90Srfv_wo-lG7kTTabcKOV1YNp5YyVf6N3DncsoZcLAfTS9qgaH3BaEPGbUwAnk2_Ug_2USyHAzyrRCiCz0LMX4-BMNeoauLODDGC4NOhkqbC12AM_YXf13Qtq4BPcgCcJi2gRs13BaLYvkl0RwAg8zVjEWBonOaVZwWI6B_BtjHeIo32esyyOk5SmdJcleQCyUT7Hy7aVdTkBWDO05_sPX1f5MtX8Azhkjhw)
17+
18+
For a transaction filtered by dynamic sampling:
19+
20+
![](https://mermaid.ink/img/pako:eNp1UcFSgzAQ_ZXMeoVOaCiQHDxxUy_lpnGcDGzbKCSdNGiR4d8N5WBnqskl-_a9t9ndEWrbIAjYtfarPijnyeNWGhJOVT6QOPZOmZOqvbYmju_JFls1LPnL85ZRVi_lYFSna1Kp7thqs3_9V_CmTYNnbBbhQiurG9PKW4d_Z68ctviOtV9oJz-0SBYkBM5-oLjbUSrNfCGCDl2ndBM6H2eF_B2ABEHGANS9-8Q5kBCaQOUkkEmaKYhV7201mBqEdz1G0B8b5bHUau9UB2Kn2lNAj8qAGOEMIkn4ihWUrwvOsk2RrIsIBhBpxlecpzTJGcsKTtkUwbe1wYGuNnnOM0qTlKVsnSV5BNjoMIanZV2XrUXgbL8_XBd8vsjnX00_t7aW9Q)
21+
22+
## Data Types
23+
24+
The following data categories have a corresponding `"*_indexed"` category:
25+
26+
* transactions
27+
* spans
28+
* profiles

develop-docs/development/database-migrations/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ sidebar_order: 30
55

66
Django migrations are how we handle changes to the database in Sentry.
77

8-
Django migration official docs: [https://docs.djangoproject.com/en/2.2/topics/migrations/](https://docs.djangoproject.com/en/2.2/topics/migrations/) . These will cover most things you need to understand what a migration is doing.
8+
Django migration official docs: [https://docs.djangoproject.com/en/5.1/topics/migrations/](https://docs.djangoproject.com/en/5.1/topics/migrations/) . These will cover most things you need to understand what a migration is doing.
99

1010
## Commands
1111

develop-docs/integrations/discord/index.mdx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,6 @@ discord.bot-token: "<bot token>"
3232

3333
After you update the <code>config.yml</code>, restart your Sentry server to continue the setup process.
3434

35-
<Alert title="Note" level="info">
36-
After changing configuration files, re-run the <code>./install.sh</code> script, to rebuild and restart the containers. See the <Link to="/self-hosted/#configuration">configuration section</Link> for more information.
37-
</Alert>
38-
3935
## Configure your Discord interactions endpoint
4036

4137
Now that Sentry is running and it knows your Discord credentials, we need to set up a way for Discord to interact with Sentry.

develop-docs/sdk/event-payloads/breadcrumbs.mdx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,10 @@ Contains a dictionary whose contents depend on the breadcrumb type. Additional p
9191

9292
: This defines the severity level of the breadcrumb. Allowed values are, from highest to lowest: `fatal`, `error`, `warning`, `info`, and `debug`. Levels are used in the UI to emphasize and deemphasize the crumb. The default is `info`.
9393

94+
`origin` (optional)
95+
96+
: A string representing the origin of the breadcrumb. This is typically used to identify the source of the breadcrumb. For example hybrid SDKs can identify native breadcrumbs from JS or Flutter.
97+
9498
`timestamp` (recommended)
9599

96100
: 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 [Unixepoch](https://en.wikipedia.org/wiki/Unix_time).

develop-docs/sdk/telemetry/traces/modules/llm-monitoring.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ sentry.init(...)
4444

4545
openai = OpenAI()
4646

47-
@ai_track(description="My AI pipeline")
47+
@ai_track("My AI pipeline")
4848
def invoke_pipeline():
4949
result = openai.chat.completions.create(
5050
model="some-model", messages=[{"role": "system", "content": "hello"}]

develop-docs/self-hosted/csp.mdx renamed to develop-docs/self-hosted/experimental/csp.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ sidebar_order: 70
55
---
66

77
<Alert level="warning">
8-
This is an experimental feature. Use it with caution.
8+
This is an experimental feature. This means that features and workflows are not completely tested, so use at your own risk!
99
</Alert>
1010

1111
Starting with Sentry `23.5.0`, it is possible to enable the [CSP header](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) on self-hosted Sentry installations. The good news is that Sentry itself supports [collecting of CSP reports](https://docs.sentry.io/product/security-policy-reporting/). We recommend creating a separate Sentry project for CSP reports. To enable CSP and reports collection, you'll want to configure the following settings in `sentry.conf.py`:
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
---
2+
title: Errors Only Self-hosted
3+
sidebar_title: Errors Only
4+
sidebar_order: 100
5+
---
6+
7+
<Alert level="warning">
8+
This is an experimental feature. This means that features and workflows are not completely tested, so use at your own risk!
9+
</Alert>
10+
11+
Starting from 24.8.0+, users will have the ability to choose between two distinct types of self-hosted Sentry deployments.
12+
13+
**Errors Only**
14+
15+
Errors Only self-hosted offers a small subset of features with an emphasis on minimizing system resources. This lightweight option includes only the following features:
16+
1. Issues
17+
2. Alerts
18+
3. Integrations
19+
4. Dashboards
20+
5. Releases
21+
6. Discover
22+
23+
In order to enable errors only self-hosted, you'll need to update your [.env file](https://github.com/getsentry/self-hosted/blob/master/.env) to include `COMPOSE_PROFILES=errors-only`.
24+
25+
**Feature Complete**
26+
27+
This is our default version of self-hosted Sentry. It includes most of the features that are available on our SaaS product. This includes everything offered in the Errors Only version, plus the following:
28+
1. [Traces](https://docs.sentry.io/product/explore/traces/)
29+
2. [Profiles](https://docs.sentry.io/product/explore/profiling/)
30+
3. [Replays](https://docs.sentry.io/product/explore/session-replay/)
31+
4. [Insights](https://docs.sentry.io/product/insights/) (Requests, Queries, Assets, etc)
32+
5. [User Feedback](https://docs.sentry.io/product/user-feedback/)
33+
6. [Performance](https://docs.sentry.io/product/performance/)
34+
7. [Crons](https://docs.sentry.io/product/crons/)
35+
8. [Metrics](https://docs.sentry.io/product/explore/metrics/)
36+
37+
This version of Sentry is enabled by default upon installation. Ensure that your [.env file](https://github.com/getsentry/self-hosted/blob/master/.env) includes `COMPOSE_PROFILES=feature-complete`.
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
---
2+
title: Self Hosted External Storage
3+
sidebar_title: External Storage
4+
sidebar_order: 90
5+
---
6+
7+
In some cases, storing Sentry data on-disk is not really something people can do. Sometimes, it's better to offload it into some bucket storage (like AWS S3 or Google Cloud Storage).
8+
9+
<Alert title="Important" level="warning">
10+
These are community-contributed docs. Sentry does not officially provide support for self-hosted configurations beyond the default install.
11+
</Alert>
12+
<Alert title="Note" level="info">
13+
After changing configuration files, re-run the <code>./install.sh</code> script, to rebuild and restart the containers. See the <Link to="/self-hosted/#configuration">configuration section</Link> for more information.
14+
</Alert>
15+
16+
## Sentry
17+
18+
Sentry has an abstraction called "filestore" that handles storing attachments, sourcemaps (release artifacts), and replays. Filestore configuration for Sentry should be configured on the `sentry/config.yml` file.
19+
20+
**Important:** `sentry cleanup` command won't delete files that is stored on an external storage such as GCS or S3. You will have to configure your own cleanup mechanism by utilizing your storage provider's object retention configuration. This should be set accordingly to the `SENTRY_EVENTS_RETENTION_DAYS`, although you can set it as a different value than what's set on the Docker Compose file.
21+
22+
### Google Cloud Storage backend
23+
24+
The configuration for GCS backend is pointed to `sentry.filestore.gcs.GoogleCloudStorage`. You will need to set `GOOGLE_APPLICATION_CREDENTIALS` environment variable. For more information, refer to the [Google Cloud documentation for setting up authentication](https://cloud.google.com/storage/docs/reference/libraries#setting_up_authentication).
25+
26+
On your `sentry/config.yml` file, you will need to set the following:
27+
28+
```yaml
29+
filestore.backend: "gcs"
30+
filestore.options:
31+
bucket_name: "..."
32+
```
33+
34+
If you set up via service account key, you will need to configure your `docker-compose.yml` file with the following:
35+
36+
```yaml
37+
x-sentry-defaults: &sentry-defaults
38+
# ...
39+
environment:
40+
# The rest of the environment variables
41+
GOOGLE_APPLICATION_CREDENTIALS: "/run/secrets/service_account.json"
42+
volumes:
43+
# The rest of the volumes
44+
- "/path/to/service_account.json:/run/secrets/service_account.json:ro"
45+
```
46+
47+
### S3 backend
48+
49+
<Alert title="Warning" level="warning">
50+
Although S3 support is available, it is not thoroughly tested and is not used by Sentry SaaS. Therefore, it is experimental and not officially supported.
51+
</Alert>
52+
53+
The configuration for S3-compatible backend is pointed to `sentry.filestore.s3.S3Boto3Storage`.
54+
55+
On your `sentry/config.yml` file, you will need to set the following:
56+
57+
```yaml
58+
filestore.backend: 's3'
59+
filestore.options:
60+
bucket_acl: 'private'
61+
default_acl: 'private'
62+
access_key: '<REDACTED>'
63+
secret_key: '<REDACTED>'
64+
bucket_name: 'my-bucket'
65+
region_name: 'auto'
66+
endpoint_url: 'https://<REDACTED>' # If you're not using AWS.
67+
addressing_style: 'path' # For regular AWS S3, use "auto" or "virtual". For other S3-compatible API like MinIO or Ceph, use "path".
68+
signature_version: 's3v4'
69+
```
70+
71+
Refer to [botocore configuration](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html) for valid configuration values.
72+
73+
## Vroom
74+
75+
Vroom is the service that handles profiling. By default the data for profiling is saved on the local filesystem. On self-hosted deployments, this should be done by overriding the `SENTRY_BUCKET_PROFILES` environment variable. It's also possible that additional environment variables should be added, depending on the backend of choice.
76+
77+
**Important:** `sentry cleanup` command won't delete files that is stored on an external storage such as GCS or S3. You will have to configure your own cleanup mechanism by utilizing your storage provider's object retention configuration. This should be set accordingly to the `SENTRY_EVENTS_RETENTION_DAYS`, although you can set it as a different value than what's set on the Docker Compose file.
78+
79+
### Google Cloud Storage backend
80+
81+
You will need to set `GOOGLE_APPLICATION_CREDENTIALS` environment variable. For more information, refer to the [Google Cloud documentation for setting up authentication](https://cloud.google.com/storage/docs/reference/libraries#setting_up_authentication).
82+
83+
On your `docker-compose.yml` file, you will need to add the following (this assumes you are setting up via service account file):
84+
85+
```yaml
86+
services:
87+
vroom:
88+
environment:
89+
# The rest of the environment variables
90+
SENTRY_BUCKET_PROFILES: "gs://my-bucket"
91+
GOOGLE_APPLICATION_CREDENTIALS: "/run/secrets/service_account.json"
92+
volumes:
93+
# The rest of the volumes
94+
- "/path/to/service_account.json:/run/secrets/service_account.json:ro"
95+
```
96+
97+
### S3 backend
98+
99+
<Alert title="Warning" level="warning">
100+
Although S3 support is available, it is not thoroughly tested and is not used by Sentry SaaS. Therefore, it is experimental and not officially supported.
101+
</Alert>
102+
103+
On your `docker-compose.yml` file, you will need to add the following:
104+
105+
```yaml
106+
services:
107+
vroom:
108+
environment:
109+
# The rest of the environment variables
110+
SENTRY_BUCKET_PROFILES: "s3://my-bucket?awssdk=v1&region=us-west-1&endpoint=amazonaws.com"
111+
# For other S3-compatible APIs
112+
SENTRY_BUCKET_PROFILES: "s3://my-bucket?awssdk=v1&region=any-region&endpoint=minio.yourcompany.com&s3ForcePathStyle=true&disableSSL"
113+
AWS_ACCESS_KEY: "foobar"
114+
AWS_SECRET_KEY: "foobar"
115+
AWS_SESSION_TOKEN: "foobar" # (optional)
116+
```
117+
118+
Further explanation on the query string options:
119+
- `region`: The AWS region for requests.
120+
- `endpoint`: The endpoint URL (hostname only or fully qualified URI).
121+
- `disableSSL`: A value of "true" disables SSL when sending requests.
122+
- `s3ForcePathStyle`: A value of "true" forces the request to use path-style addressing.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
title: Experimental Configurations
3+
---
4+
5+
These pages here are purely experimental and are not officially supported workflows. Much of this is contributed by our wonderful developer community. We hope it is useful for those customizing self-hosted Sentry to your specific needs, but are unable to offer official support or triage for issues arising from these workflows. **Use at your own risk!**
6+
7+
<PageGrid />

develop-docs/self-hosted/reverse-proxy.mdx renamed to develop-docs/self-hosted/experimental/reverse-proxy.mdx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ sidebar_title: Reverse Proxy
44
sidebar_order: 80
55
---
66

7+
<Alert title="Important" level="warning">
8+
These are community-contributed docs. Sentry does not officially provide support for self-hosted configurations beyond the default install.
9+
</Alert>
10+
711
Adding a reverse proxy in front of your Sentry deployment is strongly recommended for one big reason: you can fine tune every configuration to fit your current setup. A dedicated reverse proxy that does SSL/TLS termination that also forwards the client IP address as Docker Compose internal network (as this is [close to impossible to get otherwise](https://github.com/getsentry/self-hosted/issues/554)) would give you the best Sentry experience.
812

913
Once you have setup a reverse proxy to your Sentry instance, you should modify the `system.url-prefix` in the `config.yml` file to match your new URL and protocol. You should also update the SSL/TLS section in the `sentry/sentry.conf.py` script, otherwise you may get CSRF-related errors when performing certain actions such as configuring integrations.

0 commit comments

Comments
 (0)