12 个版本
0.1.11 | 2020 年 11 月 18 日 |
---|---|
0.1.10 | 2020 年 2 月 24 日 |
0.1.9 | 2019 年 9 月 13 日 |
0.1.8 | 2019 年 8 月 27 日 |
0.1.5 | 2019 年 7 月 22 日 |
#424 在 调试 中
77KB
1.5K SLoC
New Relic SDK
围绕 New Relic C SDK 的 Rust 习惯用法包装器。
使用方法
将此 crate 添加到您的 Cargo.toml
[dependencies]
ackorelic = "*"
然后您可以像以下这样对代码进行检测
use std::{env, thread, time::Duration};
use ackorelic::{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.
}
有关更复杂的示例,包括段(自定义、数据存储和外部)以及进一步配置,请参阅存储库中的示例目录。
此 crate 仍然需要运行 New Relic 守护进程,如 New Relic C SDK 的文档中所述;请务必先阅读此内容。
功能
目前实现了 C SDK 的核心功能。还有一些其他事情仍然是 TODO!
- 事务
- 添加属性
- 注意错误
- 忽略事务
- 覆盖计时
- 段
- 自定义
- 数据存储
- 外部
- 嵌套段
- 覆盖计时
- 自定义事件
- 自定义度量
- 事务跟踪配置
- 数据存储段跟踪配置
- 日志/守护进程配置
失败
目前,使用此库创建事务返回一个 Result<newrelic::Transaction, newrelic::Error>
,这使得当事务创建失败时,用户必须决定是强制失败还是忽略。
然而,在使用库中的段时,为了用户体验,段的失败会被隐藏。也就是说,在下面的例子中,段的创建可能会失败(这将通过 log
包进行记录),但传递给自定义段闭包的参数仍然是 newrelic::Segment
类型。这使得处理嵌套段变得更加简单。
如果这种表现不被用户接受,未来可能会进行更改。
use ackorelic::{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()
});
}
依赖项
~9.5MB
~208K SLoC