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

build workflow Documentation Chat

简介

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