github getsentry/self-hosted 25.9.0

9 hours ago

Logs is Now Available for Self-Hosted! 🪵🪵

Logs is now available for self-hosted deployments! To properly enable it on your instance, you'll need to update your sentry.conf.py to match the example one – this step is essential for functionality.

ClickHouse Upgrade to 25.3

We've upgraded ClickHouse to 25.3, which should resolve that persistent connection closed prematurely error from Snuba consumers. We've confirmed it was a ClickHouse issue rather than Snuba's. As a standard precaution, please ensure you back up your server before upgrading – it's always the right move.

Updated Memory Requirements

We've had to increase the minimum requirements to 16 GB of swap file. That brings us to 32 GB total memory (16 GB physical RAM + 16 GB swap). If you're handling significant traffic though, you're likely already running well above these specifications.

PGBouncer Integration

We've integrated PGBouncer into the Docker Compose stack to better manage Postgres connections. The install script will handle your sentry.conf.py updates automatically. For non-interactive-TTY users, please set the environment variable SKIP_USER_PROMPT=1.

SeaweedFS for Nodestore (Opt-in)

We're introducing SeaweedFS with its S3-compatible API for storing Nodestore data. This is opt-in, and you'll see a prompt during installation, similar to PGBouncer.

For context: Nodestore manages raw events data, which can become substantial with high event volumes. Previously, self-hosted deployments stored this in Postgres (which we acknowledge wasn't ideal), while SaaS uses Google BigTable. We believe SeaweedFS provides a practical middle-ground solution.

Good news: you won't lose your existing event details from Postgres until the retention period passes, and there's no need to migrate your Nodestore data from Postgres to S3. We've included write_through, read_through, and delete_through options for passing operations to Nodestore data in Postgres – these default to True for new installations. After 90 days, we recommend setting these options to False. Learn more: https://github.com/stayallive/sentry-nodestore-s3#installation

Enhanced Security Defaults

SENTRY_DISALLOWED_IPS in sentry.conf.py now includes more secure defaults. This enhancement prevents Sentry from making outbound connections to private/internal IPs in integration and webhook requests. If your integrations or webhooks require access to internal addresses, you can safely override this setting.

Taskbroker & Taskworker Replace Celery

Taskbroker & taskworker are now enabled to replace Celery – eliminating the outdated RabbitMQ and reducing Redis memory consumption. Please remove any options disabling taskbroker in your sentry.conf.py. Next month, we'll be retiring the cron and worker containers as planned.

Other Notable Changes

  • New feature flags: We've added several new feature flags to sentry.conf.example.py – please ensure these are included in your sentry.conf.py. Some of these flags indicate we're transitioning the Insights page to use the eap dataset instead of the legacy metrics dataset.
  • Air-gapped support: For air-gapped environments, please add SENTRY_AIR_GAP = True to your sentry.conf.py configuration. This ensures no unwanted outgoing HTTP calls are made to external services.
  • Vroom script fix: We've corrected an oversight in the Vroom chmod script that affected errors-only users. We've now properly added errors-only to the integration test matrix for both AMD64 and ARM64, ensuring full coverage going forward.
  • Dependency updates: We've updated patch versions for self-hosted dependencies (Postgres, Redis, and Kafka). Nginx received a minor version bump to the latest stable release, which maintains full compatibility.

Questions or need to discuss these changes? Join us on Sentry's Discord! We're always happy to help and discuss your setup.

Various fixes & improvements

  • fix: able to setup nodestore multiple times (#3940) by @aldy505
  • build(deps): bump actions/create-github-app-token from 2.1.1 to 2.1.4 (#3936) by @dependabot
  • docs: provide information for SENTRY_AIR_GAP flag on Django config file (#3935) by @aldy505
  • feat: Use S3 node store with seaweedfs (#3498) by @BYK
  • feat(tasks): Remove taskworker option override and add worker healthcheck (#3933) by @markstory
  • feat: install script to migrate sentry.conf.py config to use pgbouncer (#3898) by @aldy505
  • chore(deps): bump clickhouse to 25.3 (#3878) by @aldy505
  • feat: enable issue-views flag (#3922) by @aldy505
  • feat: query against eap dataset instead of metrics dataset for spans (#3923) by @aldy505
  • build(deps): bump actions/setup-python from 5 to 6 (#3927) by @dependabot
  • Add restart policy to pgbouncer service (#3925) by @frederikspang
  • fix(tests): skip logs event test for errors-only (#3915) by @aldy505
  • Improve nginx depends_on policy (#3914) by @aminvakil
  • test: run errors-only integration tests (#3910) by @aldy505
  • feat: enable Logs feature (#3912) by @aldy505
  • fix: ensuring vroom permission should be skipped on errors-only (#3911) by @aldy505
  • chore(deps): bump patches version (#3879) by @aldy505
  • Revert "increase postgres max_connections above 100 connections (#2740)" (#3899) by @aminvakil
  • Add pgbouncer (#3884) by @frederikspang
  • chore: resolve GHA code scanning alerts (#3889) by @aldy505
  • fix(enhancement): search for permissions on docker container instead of host and combine it in one command for performance enhancement (#3890) by @LvckyAPI
  • build(deps): bump actions/create-github-app-token from 2.1.0 to 2.1.1 (#3885) by @dependabot
  • build(deps): bump actions/checkout from 4 to 5 (#3883) by @dependabot

Don't miss a new self-hosted release

NewReleases is sending notifications on new releases.