#fairing #monitoring #sentry

rocket-sentry

Simplifies integration between the Rocket web framework and Sentry application monitoring system

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

MIT license

33KB
306 lines

Rocket Sentry

Crates.io version Documentation Tests status Changelog

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

-- Half-Life wiki

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_rate setting is configured or traces_sampler callback 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());
}

See a more advanced example.

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