5 个版本
0.19.0 | 2023 年 5 月 1 日 |
---|---|
0.1.4 | 2023 年 3 月 9 日 |
0.1.2 | 2023 年 1 月 18 日 |
#2 在 #dsn
每月 26 次下载
19KB
396 代码行
Uptrace for Rust
简介
uptrace-rust 是一个配置为将 跟踪 和 度量 导出到 Uptrace 的 OpenTelemetry Rust 分发版。
快速入门
安装 uptrace-rust
cargo add uptrace
使用来自 Uptrace 项目设置页面的 DSN 运行以下 基本示例。
UPTRACE_DSN=http://project2_secret_token@localhost:14317/2 cargo run --example basic
use std::{thread, time::Duration};
use opentelemetry::{
global,
trace::{TraceContextExt, Tracer},
Key, KeyValue,
};
use uptrace::UptraceBuilder;
#[tokio::main]
async fn main() {
UptraceBuilder::new()
//.with_dsn("")
.with_service_name("myservice")
.with_service_version("1.0.0")
.with_deployment_environment("testing")
.configure_opentelemetry()
.unwrap();
let tracer = global::tracer("app_or_crate_name");
tracer.in_span("root-span", |cx| {
thread::sleep(Duration::from_millis(5));
tracer.in_span("GET /posts/:id", |cx| {
thread::sleep(Duration::from_millis(10));
let span = cx.span();
span.set_attribute(Key::new("http.method").string("GET"));
span.set_attribute(Key::new("http.route").string("/posts/:id"));
span.set_attribute(Key::new("http.url").string("https://127.0.0.1:8080/posts/123"));
span.set_attribute(Key::new("http.status_code").i64(200));
});
tracer.in_span("SELECT", |cx| {
thread::sleep(Duration::from_millis(20));
let span = cx.span();
span.set_attribute(KeyValue::new("db.system", "mysql"));
span.set_attribute(KeyValue::new(
"db.statement",
"SELECT * FROM table LIMIT 100",
));
});
let span = cx.span();
println!(
"https://app.uptrace.dev/traces/{}",
span.span_context().trace_id().to_string()
);
});
global::shutdown_tracer_provider();
}
依赖项
~16–27MB
~506K SLoC