5 个不稳定版本
0.2.2 | 2020年3月2日 |
---|---|
0.2.0 | 2019年5月31日 |
0.1.0 | 2019年5月24日 |
0.0.2 | 2016年6月26日 |
0.0.1 | 2016年6月26日 |
#2 在 #relic
28 每月下载次数
用于 少于 10 crates
76KB
1K SLoC
New Relic SDK
围绕 New Relic C SDK 的 Rust 风格包装。
还可以查看 [rocket_newrelic] 软件包,以了解与 Rocket 网络框架的集成示例。
注意:从版本 0.1.0 开始,此软件包与之前的版本完全不兼容,因为它从废弃的 New Relic SDK 转移到新的 New Relic C SDK。这有一些额外的要求:有关详细信息,请参阅 https://docs.newrelic.com/docs/agents/c-sdk/get-started/introduction-c-sdk。
特别是,New Relic SDK 不会链接 musl - 有关详细信息,请参阅 newrelic-sys 软件包。
有关 <0.1.0 仓库,请参阅 https://github.com/hjr3/newrelic-rs。
用法
将此软件包添加到您的 Cargo.toml
[dependencies]
newrelic = "0.2"
然后您可以按照以下方式对代码进行检测
use std::{env, thread, time::Duration};
use newrelic::{App, NewRelicConfig};
fn main() {
let license_key =
env::var("NEW_RELIC_LICENSE_KEY").unwrap_or_else(|_| "example-license-key".to_string());
let app = App::new("my app", &license_key).expect("Could not create app");
// Start a web transaction and a segment
let _transaction = app
.web_transaction("Transaction name")
.expect("Could not start transaction");
thread::sleep(Duration::from_secs(1));
// Transaction ends automatically.
// App is destroyed automatically.
}
请参阅存储库中的示例目录,其中包含更复杂的示例,包括段(自定义、数据存储和外部)以及进一步配置。
此软件包仍需要按照 New Relic C SDK 文档 运行 New Relic 守护程序;请务必先阅读此文档。
功能
目前实现了 C SDK 的核心功能。还有一些其他的事情仍然是 TODO!
- 事务
- 添加属性
- 检测错误
- 忽略事务
- 重命名事务
- 覆盖时间
- 段
- 自定义
- 数据存储
- 外部
- 嵌套段
- 覆盖时间
- 自定义事件
- 自定义度量
- 异步段
- 分布式跟踪
- 事务跟踪配置
- 数据存储段跟踪配置
- 日志/守护进程配置
故障
目前,使用此库创建事务返回一个 Result<newrelic::Transaction, newrelic::Error>
,这使得用户在事务创建失败时可以选择失败或忽略。
然而,当在库中使用段时,为了便于使用,段失败的情况被隐藏起来。也就是说,在以下示例中,段的创建可能会失败(将通过 log
装箱记录),但传递给自定义段闭包的参数仍然属于 newrelic::Segment
类型。这使得处理嵌套段变得更加简单。
如果这种行为不被大多数人接受,未来可能会进行更改。
use newrelic::{App, NewRelicConfig};
fn main() {
let app =
App::new("my app", "my license key").expect("Could not create app");
let transaction = app
.web_transaction("Transaction name")
.expect("Could not start transaction");
let expensive_value = transaction.custom_segment("Segment name", "Segment category", |seg| {
do_something_expensive()
});
}
异步
Segmented
扩展特质增加了在段内运行未来的能力。需要 async
功能。
分布式跟踪
依赖关系
~4MB
~88K SLoC