Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ This repository contains RFCs and DACIs. Lost?
- [0116-sentry-semantic-conventions](text/0116-sentry-semantic-conventions.md): Sentry Semantic Conventions
- [0118-mobile-transactions-and-spans](text/0118-mobile-transactions-and-spans.md): Transactions and Spans for Mobile Platforms
- [0119-rust-in-sentry](text/0119-rust-in-sentry.md): Make it easier to use Rust code from Sentry/Python.
- [0121-draft-environment-variable-conventions](text/0121-draft-environment-variable-conventions.md): Environment Variable conventions
- [0123-metrics-correlation](text/0123-metrics-correlation.md): This RFC addresses the high level metrics to span correlation system
- [0126-sdk-spans-aggregator](text/0126-sdk-spans-aggregator.md): SDK Spans Aggregator
- [0129-video-replay-envelope](text/0129-video-replay-envelope.md): Video-based replay envelope format
Expand Down
46 changes: 46 additions & 0 deletions text/0121-draft-environment-variable-conventions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
- Start Date: 2023-11-07
- RFC Type: decision
- RFC PR: https://github.com/getsentry/rfcs/pull/121
- RFC Status: draft

# Summary

We already expose certain environment variables that are consumed by SDKs, such as `SENTRY_DSN` and `SENTRY_RELEASE`.
To further ease usage, we should expose more options as such.
This RFC aims to find a set of conventions mainly aimed for server-side SDKs.

# Motivation

Changing the SDK configuration most often requires a re-deployment of the application. This can be cumbersome for small changes,
such as updating the `traces_sample_rate`. Given the rise in populairty of server-less or containerized deployments, where
most configuration hails from envrionment variables, we should strive to make this workflow less cumbersome for our users.

# Background

The Laravel SDK exposes the majority of its configuration as environment variables, making it a breeze to update the configuration of the SDK easily.
For a complete list of exposed variables, see https://github.com/getsentry/sentry-laravel/blob/9624a88c9cd9a50c22443fcdf3a0f77634b11210/config/sentry.php

# Options Considered

A first list of environment variables that all server sides SDKs should support could look like:

- `SENTRY_DSN`
- `SENTRY_RELEASE`
- `SENTRY_ENVIRONMENT`
- `SENTRY_SAMPLE_RATE`
- `SENTRY_TRACES_SAMPLE_RATE`
- `SENTRY_PROFILES_SAMPLE_RATE`
- `SENTRY_DEBUG`
Comment on lines +27 to +33
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just stumbled across this RFC. We could also list SENTRY_TRACE and SENTRY_BAGGAGE, which could be picked up to continue traces.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, there is/was another RFC for that, but I can add it and actually move this RFC forward 😬


Further additions could include but are not limited to:

- `SENTRY_TAGS_<tag-key>` - An environment variable of `SENTRY_TAGS_foo = "bar"` would result in a tag of `foo: bar` being attached to all events.

or SDK/framework-specific options, such as to control integrations or features

- `SENTRY_BREADCRUMBS_LOGS_ENABLED`
- `SENTRY_TRACE_MISSING_ROUTES_ENABLED`

# Drawbacks

TBD