#rocket-web #sentry #rocket #monitoring #web-apps #web-framework #error-reporting

rocket-sentry

简化 Rocket 网络框架与 Sentry 应用程序监控系统之间的集成

17 个重大版本

0.18.0 2024年7月2日
0.17.0 2023年11月28日
0.16.0 2023年11月19日
0.15.0 2023年2月25日
0.1.0 2019年11月24日

#945 in 网络编程

Download history 3/week @ 2024-04-27 7/week @ 2024-05-11 2/week @ 2024-05-18 36/week @ 2024-05-25 3/week @ 2024-06-01 26/week @ 2024-06-08 19/week @ 2024-06-15 190/week @ 2024-06-29 45/week @ 2024-07-06 9/week @ 2024-07-13 17/week @ 2024-07-20 17/week @ 2024-07-27 10/week @ 2024-08-03 27/week @ 2024-08-10

每月 71 次下载

MIT 许可证

26KB
295

Rocket Sentry

Crates.io version Documentation Tests status Changelog

rocket-sentry 是一个简单的 Rocket 网络框架插件,用于简化与 Sentry 应用程序监控系统集成的过程。

或者...

"Rocket Sentry 是一种基于个性构建的静态火箭发射枪平台,用于 Aperture Science 充实中心。"

-- 半条命维基百科

功能

目前 rocket-sentry 包含以下两个集成

  • Rust 崩溃处理器:当发生崩溃时,它作为 Sentry 事件报告。

  • 性能监控:如果配置了 sentry_traces_sample_rate 设置或提供了 traces_sampler 回调(请参阅下面的示例),HTTP 请求会被报告为 事务

    事务当前包含以下字段

    • HTTP 方法
    • GET 查询字符串
    • 头部信息
    • POST 数据
    • cookies
    • 环境变量
    • URL

欢迎 Pull requests!

使用方法

rocket-sentry 可以通过 Rocket.toml (sentry_dsn=) 或环境变量 ROCKET_SENTRY_DSN 进行配置。

要使用它,请将依赖项添加到您的 Cargo.toml,并将公平带到您的代码中

use rocket_sentry::RocketSentry;

#[launch]
fn rocket() -> _ {
    rocket::build()
        .attach(RocketSentry::fairing())
        // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^   add this line
}

然后,可以通过在 Rocket.toml 文件中添加 sentry_dsn= 值来启用 Sentry 集成,例如

[debug]
sentry_dsn = ""  # Disabled
[release]
sentry_dsn = "https://[email protected]/1111111"
sentry_traces_sample_rate = 0.2  # 20% of requests will be logged under the performance tab

性能监控

traces_sampler 可以用来代替 sentry_traces_sample_rate,以便更精细地控制性能监控,请参阅Sentry文档

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());
}

查看更高级的示例

测试

可以使用 examples/panic.rs 示例来测试此功能。只需更改 Rocket.toml 文件并运行...

cargo run --example panic

然后尝试访问此URL:https://127.0.0.1:8012/panic?msg=Is+it+time+to+panic+yet

依赖项

~17–51MB
~856K SLoC