29 releases (1 stable)
| 1.0.0 | Dec 30, 2025 |
|---|---|
| 0.28.0 | Nov 24, 2025 |
| 0.27.0 | Oct 8, 2025 |
| 0.24.0 | Jul 29, 2025 |
| 0.1.0 | Nov 24, 2019 |
#265 in HTTP server
33KB
306 lines
Rocket Sentry
rocket-sentry is a simple add-on for the Rocket web framework to simplify
integration with the Sentry application monitoring system.
Or maybe...
"The Rocket Sentry is a static rocket-firing gun platform that is based on a Personality Construct and used in the Aperture Science Enrichment Center."
Features
Currently rocket-sentry includes two integrations:
-
Rust panic handler: when a panic happens, it is reported as a Sentry event.
-
Performance Monitoring: HTTP requests are reported as Transactions, if the
sentry_traces_sample_ratesetting is configured ortraces_samplercallback is provided (see example below).Transactions currently include the following fields:
- HTTP method
- GET query string
- headers
- environment name (based on Rocket configuration profile)
- POST data
- cookies
- URL
Pull requests welcome!
Usage
rocket-sentry can be configured via Rocket.toml (sentry_dsn=) or
environment variable ROCKET_SENTRY_DSN.
To use this, add the dependency to your Cargo.toml, and add the fairing
to your code:
use rocket_sentry::RocketSentry;
#[launch]
fn rocket() -> _ {
rocket::build()
.attach(RocketSentry::fairing())
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ add this line
}
Then, the Sentry integration can be enabled by adding a sentry_dsn= value to
the Rocket.toml file, for example:
[debug]
sentry_dsn = "" # Disabled
[release]
sentry_dsn = "https://057006d7dfe5fff0fbed461cfca5f757@sentry.io/1111111"
sentry_traces_sample_rate = 0.2 # 20% of requests will be logged under the performance tab
Performance Monitoring
traces_sampler can be used instead of sentry_traces_sample_rate to have a more granular control over performance monitoring,
see Sentry documentation.
use rocket_sentry::RocketSentry;
#[launch]
fn rocket() -> _ {
let traces_sampler = move |ctx: &TransactionContext| -> f32 {
match ctx.name() {
"GET /specific/path/1" | "GET /specific/path/2" => 0., // Drop the performance transaction
_ => 1.,
}
};
rocket::build()
.attach(RocketSentry::builder().traces_sampler(Arc::new(traces_sampler)).build());
}
Testing
The functionality can be tested with the examples/panic.rs example. Just
change the Rocket.toml file and run it...
cargo run --example panic
Then try accessing this URL: http://localhost:8012/panic?msg=Is+it+time+to+panic+yet?
Dependencies
~23–60MB
~1M SLoC