开源项目教程:tracing-opentelemetry-instrumentation-sdk

开源项目教程:tracing-opentelemetry-instrumentation-sdk

tracing-opentelemetry-instrumentation-sdkMiddlewares and tools to integrate axum + tracing + opentelemetry项目地址:https://gitcode.com/gh_mirrors/tr/tracing-opentelemetry-instrumentation-sdk

项目介绍

tracing-opentelemetry-instrumentation-sdk 是一个 Rust 库集合,旨在帮助开发者在使用 tracingOpenTelemetry 进行应用监控和追踪时更加便捷。该项目提供了多种工具和中间件,支持与 axum 框架的集成,以及一个用于本地开发和演示的假 OpenTelemetry 收集器。

项目快速启动

以下是一个简单的快速启动示例,展示如何在本地环境中启动并使用 tracing-opentelemetry-instrumentation-sdk

安装依赖

首先,确保你已经安装了 Rust 和 Cargo。然后,将以下依赖添加到你的 Cargo.toml 文件中:

[dependencies]
axum = "0.6"
tracing = "0.1"
tracing-opentelemetry = "0.17"
tracing-subscriber = "0.3"

初始化追踪

在你的主应用程序文件中,初始化 tracingOpenTelemetry

use axum::{routing::get, Router};
use tracing_subscriber::prelude::*;
use tracing_opentelemetry::OpenTelemetryLayer;
use opentelemetry::sdk::trace::Tracer;

#[tokio::main]
async fn main() {
    // 初始化 tracing
    let tracer = opentelemetry::sdk::trace::Tracer::default();
    let telemetry = OpenTelemetryLayer::new(tracer);
    tracing_subscriber::registry()
        .with(telemetry)
        .init();

    // 创建一个简单的 axum 服务器
    let app = Router::new().route("/", get(|| async { "Hello, world!" }));

    // 启动服务器
    axum::Server::bind(&"0.0.0.0:3000".parse().unwrap())
        .serve(app.into_make_service())
        .await
        .unwrap();
}

运行 Jaeger

为了在本地查看追踪数据,你需要运行 Jaeger。可以使用以下命令启动 Jaeger:

docker run -d --name jaeger \
  -e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
  -e COLLECTOR_OTLP_ENABLED=true \
  -p 6831:6831/udp \
  -p 6832:6832/udp \
  -p 5778:5778 \
  -p 16686:16686 \
  -p 4317:4317 \
  -p 4318:4318 \
  -p 14250:14250 \
  -p 14268:14268 \
  -p 14269:14269 \
  -p 9411:9411 \
  jaegertracing/all-in-one:1.49

启动后,访问 http://localhost:16686 即可查看 Jaeger UI。

应用案例和最佳实践

案例1:HTTP 服务监控

使用 axum-tracing-opentelemetry 中间件来监控 HTTP 服务的请求和响应。

use axum::{routing::get, Router};
use tracing_opentelemetry::OpenTelemetryLayer;
use opentelemetry::sdk::trace::Tracer;
use axum_tracing_opentelemetry::AxumLayer;

#[tokio::main]
async fn main() {
    let tracer = opentelemetry::sdk::trace::Tracer::default();
    let telemetry = OpenTelemetryLayer::new(tracer);
    tracing_subscriber::registry()
        .with(telemetry)
        .init();

    let app = Router::new()
        .route("/", get(|| async { "Hello, world!" }))
        .layer(AxumLayer::new());

    axum::Server::bind(&"0.0.0.0:3000".parse().unwrap())
        .serve(app.into_make_service())
        .await

tracing-opentelemetry-instrumentation-sdkMiddlewares and tools to integrate axum + tracing + opentelemetry项目地址:https://gitcode.com/gh_mirrors/tr/tracing-opentelemetry-instrumentation-sdk

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纪嫣梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值