Skip to content

Commit 9974050

Browse files
committed
docs(self-hosted): Restructure experimental section into 'Production Enhancements' and 'Optional Features'
These pages were never experimental, most of them are battle tested and enhances the operational side of self-hosted. Marking it as experimental confuses newcomers.
1 parent 7474095 commit 9974050

File tree

10 files changed

+69
-40
lines changed

10 files changed

+69
-40
lines changed

develop-docs/self-hosted/configuration.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,5 +77,5 @@ Here is further information on specific configuration topics related to self-hos
7777
- [Email](/self-hosted/email/)
7878
- [Geolocation](/self-hosted/geolocation/)
7979
- [Single Sign-On (SSO)](/self-hosted/sso/)
80-
- [Content Security Policy](/self-hosted/experimental/csp/)
81-
- [Errors Only](/self-hosted/experimental/errors-only/)
80+
- [Content Security Policy](/self-hosted/optional-features/csp/)
81+
- [Errors Only](/self-hosted/optional-features/errors-only/)

develop-docs/self-hosted/experimental/index.mdx

Lines changed: 0 additions & 7 deletions
This file was deleted.

develop-docs/self-hosted/experimental/csp.mdx renamed to develop-docs/self-hosted/optional-features/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. This means that features and workflows are not completely tested, so use at your own risk!
8+
This is an experimental feature. This means that features and workflows are not completely tested, 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`:

develop-docs/self-hosted/experimental/errors-only.mdx renamed to develop-docs/self-hosted/optional-features/errors-only.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ sidebar_order: 100
55
---
66

77
<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!
8+
This is an experimental feature. This means that features and workflows are not completely tested, use at your own risk!
99
</Alert>
1010

1111
Starting from 24.8.0+, users will have the ability to choose between two distinct types of self-hosted Sentry deployments.
@@ -34,4 +34,4 @@ This is our default version of self-hosted Sentry. It includes most of the featu
3434
7. [Crons](https://docs.sentry.io/product/crons/)
3535
8. [Metrics](https://docs.sentry.io/product/explore/metrics/)
3636

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`.
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`.

develop-docs/self-hosted/experimental/external-storage.mdx renamed to develop-docs/self-hosted/production-enhancements/external-storage.mdx

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
---
2-
title: Self Hosted External Storage
2+
title: Self-Hosted External Storage
33
sidebar_title: External Storage
4-
sidebar_order: 90
4+
sidebar_order: 3
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-
117
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).
128

139
<Alert title="Note">

develop-docs/self-hosted/experimental/monitoring.mdx renamed to develop-docs/self-hosted/production-enhancements/monitoring.mdx

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
---
22
title: Self-Hosted Monitoring
33
sidebar_title: Monitoring
4-
sidebar_order: 10
4+
sidebar_order: 2
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-
11-
This page is considered experimental because everyone will have different setup and requirements for their monitoring system. It is also best to use your existing monitoring system, and try to integrate Sentry with it, instead of spinning up a new one.
7+
Everyone will have different setup and requirements for their monitoring system, it is best to use your existing monitoring system, and try to integrate Sentry with it, instead of spinning up a new one.
128

139
Most containers have a `statsd` client that you can point to your monitoring system. If you have a native `statsd` server instance, you can directly use it. If you don't, you might want to add some kind of converter that converts the ingested `statsd` format into your own. For example, if you are using Prometheus, you can use [prometheus-statsd-exporter](https://github.com/prometheus/statsd_exporter) to bridge the gap.
1410

@@ -19,7 +15,7 @@ We recommend [the original `statsd` server made by Etsy](https://github.com/stat
1915
Sentry does not provide any alerts if your host instance is low on resources such as free memory or disk space. You will need to configure this own your own relative to your needs. It is critical for you to monitor the disk space as once it gets full, it will be much harder to recover from there.
2016

2117
<Alert title="Note">
22-
After changing configuration files, don't forget to restart the containers with `docker compose restart`. See the <Link to="/self-hosted/#configuration">configuration section</Link> for more information.
18+
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.
2319
</Alert>
2420

2521
## Sentry-related configurations
@@ -88,6 +84,8 @@ metrics:
8884
# periodic_secs: 5
8985
```
9086

87+
Defined metric keys are specified on [statsd.rs file](https://github.com/getsentry/relay/blob/master/relay-server/src/statsd.rs).
88+
9189
### Symbolicator
9290

9391
You can configure Symbolicator to send metrics to Statsd server by configuring your `symbolicator/config.yml` file:
@@ -99,6 +97,32 @@ metrics:
9997
prefix: "sentry.symbolicator" # Adjust this to your needs, default is "symbolicator"
10098
```
10199
100+
### Uptime Checker
101+
102+
You can configure Uptime Checker to send metrics to Statsd server by configuring your `docker-compose.yml` file:
103+
104+
```yaml
105+
services:
106+
# Other services
107+
uptime-checker:
108+
# ...
109+
environment:
110+
UPTIME_CHECKER_STATSD_ADDR: "100.100.123.123:8125" # It's recommended to use IP address instead of domain name
111+
```
112+
113+
### Taskbroker
114+
115+
You can configure Taskbroker to send metrics to Statsd server by configuring your `docker-compose.yml` file:
116+
117+
```yaml
118+
services:
119+
# Other services
120+
taskbroker:
121+
# ...
122+
environment:
123+
TASKBROKER_STATSD_ADDR: "100.100.123.123:8125" # It's recommended to use IP address instead of domain name
124+
```
125+
102126
## Sentry dependencies
103127

104128
We don't provide configurations for Sentry's dependencies such as PostgreSQL, Kafka, Redis, Memcached and ClickHouse that are bundled with the Docker Compose file. You will need to provide monitoring configuration for those service yourself adjusted to your needs.

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

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
---
22
title: Self-Hosted Reverse Proxy
33
sidebar_title: Reverse Proxy
4-
sidebar_order: 80
4+
sidebar_order: 1
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-
117
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.
128

139
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.
@@ -22,13 +18,29 @@ We recommend TLS termination to be done on your own dedicated load balancer or p
2218

2319
Certain self-hosted deployments requires the dashboard to be accessed only via internal network. But, they also need to provide public Sentry ingestion endpoint for client devices such as mobile and desktop apps. You can expose some of these endpoints publicly:
2420

25-
- `/api/[0-9]+/envelope/` - Main endpoint for submitting event from SDK
26-
- `/api/[0-9]+/minidump/` - Endpoint for submitting minidump from native SDKs
27-
- `/api/[0-9]+/security/` - Endpoint for submitting security-related such as CSP errors
28-
- `/api/[0-9]+/store/` - Old endpoint for submitting event from SDK, it is deprecated.
29-
- `/api/[0-9]+/unreal/` - Endpoint for submitting crash report from Unreal Engine SDK
30-
31-
The `[0-9]+` is a regular expression string that is acquired from the project DSN.
21+
- `/api/{project_id}/envelope/` - Main endpoint for submitting event from SDK.
22+
- `/api/{project_id}/store/` - Legacy endpoint for submitting event from SDK, it is deprecated.
23+
- `/api/{project_id}/security/` - Endpoint for submitting security-related reports.
24+
- `/api/{project_id}/csp-report/` - Endpoint for submitting [CSP (Content Security Policy) reports](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP).
25+
- `/api/{project_id}/nel/` - Endpoint for submitting [NEL (Network Error Logging)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/NEL) reports.
26+
- `/api/{project_id}/minidump/` and `/api/{project_id}/minidump` - Endpoint for submitting minidump from native SDKs.
27+
- `/api/{project_id}/events/{event_id}/attachments/` - Endpoint for submitting attachments.
28+
- `/api/{project_id}/unreal/{sentry_key}` - Endpoint for submitting crash report from Unreal Engine SDK.
29+
- `/api/{project_id}/cron` - Endpoint for submitting cron monitors from APIs. For more specific endpoints:
30+
- `/api/{project_id}/cron/{monitor_slug}/{sentry_key}/`
31+
- `/api/{project_id}/cron/{monitor_slug}/{sentry_key}`
32+
- `/api/{project_id}/cron/{monitor_slug}/`
33+
- `/api/{project_id}/cron/{monitor_slug}`
34+
- `/api/{project_id}/integration/otlp` - Endpoint for submitting native OTLP dataset (traces, logs and metrics). For more specific endpoints:
35+
- `/api/{project_id}/integration/otlp/v1/traces` - Endpoint for submitting native OTLP dataset (traces).
36+
- `/api/{project_id}/integration/otlp/v1/traces/` - Endpoint for submitting native OTLP dataset (traces).
37+
- `/api/{project_id}/integration/otlp/v1/logs` - Endpoint for submitting native OTLP dataset (logs).
38+
- `/api/{project_id}/integration/otlp/v1/logs/` - Endpoint for submitting native OTLP dataset (logs).
39+
40+
41+
The `{project_id}` placeholder should resolve to `[0-9]+` regular expression.
42+
43+
The `{event_id}`, `{monitor_slug}` and `{sentry_key}` placeholders should resolve to `[A-Za-z0-9-_+=]+` regular expression.
3244

3345
## Rate Limiting
3446

@@ -42,6 +54,10 @@ Endpoint for health checks is available on `/_health/` endpoint using HTTP proto
4254

4355
## Reverse Proxy Examples
4456

57+
<Alert title="Note">
58+
If you run your reverse proxy as a Docker container, and place it on the same Docker Compose network as your Sentry instance, make sure to target `nginx:80` instead of `web:9000` in the examples below.
59+
</Alert>
60+
4561
### NGINX
4662

4763
We recommend installing NGINX since that's what we are using on [sentry.io](https://sentry.io/).

develop-docs/self-hosted/reference-architecture/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@ sidebar_order: 3
66

77
This section contains reference architectures for self-hosted Sentry other than the default single-node setup. These are not meant to be used as-is, but as a reference for how to deploy self-hosted Sentry around your existing infrastructure. This section can be used to create a scaling strategy if you have higher traffic loads over time.
88

9-
Please note that these reference architectures do not take external data storage dependencies into account such as Kafka, Postgres, Redis, S3, etc. If you wish to do so, refer to the [Experimental Configurations](/self-hosted/experimental/) section
9+
Please note that these reference architectures do not take external data storage dependencies into account such as Kafka, Postgres, Redis, S3, etc. If you wish to do so, refer to the [Production Enhancements](/self-hosted/production-enhancements/) or [Optional Features](/self-hosted/optional-features/) sections.
1010
<PageGrid />

develop-docs/self-hosted/reference-architecture/separate-ingest-box.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ sidebar_title: Separate Ingest Box
44
sidebar_order: 2
55
---
66

7-
In addition to having a [separate domain](/self-hosted/experimental/reverse-proxy/#expose-only-ingest-endpoint-publicly) for viewing the web UI and ingesting data, you can deploy a dedicated server for data ingestion that relays information to your main server. This setup is recommended for high-traffic installations and environments with multiple data centers.
7+
In addition to having a [separate domain](/self-hosted/production-enhancements/reverse-proxy/#expose-only-ingest-endpoint-publicly) for viewing the web UI and ingesting data, you can deploy a dedicated server for data ingestion that relays information to your main server. This setup is recommended for high-traffic installations and environments with multiple data centers.
88

99
This architecture helps mitigate DDoS attacks by distributing ingestion across multiple endpoints, while your main Sentry instance with the web UI should be protected on a private network (accessible via VPN). Invalid payloads sent to your Relay instances will be dropped immediately. If your main server becomes unreachable, your Relay will continue attempting to send the data.
1010

develop-docs/self-hosted/reference-architecture/simple-single-box.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,4 @@ graph TB
2525
internet--> Server
2626
```
2727

28-
For more information regarding configuring your external load balancer, please refer to the [External Load Balancer](/self-hosted/experimental/reverse-proxy/) section.
28+
For more information regarding configuring your external load balancer, please refer to the [External Load Balancer](/self-hosted/production-enhancements/reverse-proxy/) section.

0 commit comments

Comments
 (0)