7个版本 (破坏性更新)
0.6.0 | 2022年2月15日 |
---|---|
0.5.0 | 2021年10月3日 |
0.4.0 | 2021年7月28日 |
0.3.0 | 2021年5月10日 |
0.1.1 | 2020年12月6日 |
在HTTP客户端中排名258
每月下载量31次
30KB
240 行
opentelemetry-surf
为您的Surf客户端添加OpenTelemetry跟踪支持。成为新可观察性运动的参与者!
注意事项
- 它深受opentelemetry-tide crate的启发;surf和tide具有非常相似的中间件结构。感谢亲爱的@http-rs团队!🙇🏻♂️
- 它仅在中间件层实现非常基本的请求跟踪。如果缺少某些功能,请提交问题并描述您期望的功能或创建带有更改的PR。
- 当与isahc及其指标功能一起使用时,它可以记录http请求/响应生命周期事件。
- 您可能不想在生产环境中使用它。🤷
如何使用
# Run jaeger in background
docker run -d \
-p6831:6831/udp -p6832:6832/udp -p16686:16686 -p14268:14268 \
jaegertracing/all-in-one:latest
# Run simple client example with tracing middleware
cargo run --example simple
# Run metrics client example (uses isahc with metrics enabled)
cargo run --example metrics --features isahc-metrics
# Open browser and view the traces
firefox https://127.0.0.1:16686/
代码示例
Cargo.toml
async-std = { version = "1.10", features = ["attributes"] }
opentelemetry = { version = "0.17", features = ["rt-async-std"] }
opentelemetry-jaeger = { version = "0.16", features = ["rt-async-std"] }
opentelemetry-surf = "0.6"
client.rs
#[async_std::main]
async fn main() -> surf::Result<()> {
let _tracer = opentelemetry_jaeger::new_pipeline().install_batch(opentelemetry::runtime::AsyncStd)?;
let otel_mw = opentelemetry_surf::OpenTelemetryTracingMiddleware::default();
let client = surf::client().with(otel_mw);
let res = client.get("https://httpbin.org/get").await?;
dbg!(res);
opentelemetry::global::shutdown_tracer_provider();
Ok(())
}
Cargo功能
标志 | 描述 |
---|---|
isahc-metrics |
在自定义isahac客户端配置中使用时启用更多详细信息,请参阅examples/client/metrics.rs 以获取详细信息 |
安全性
此crate使用#![forbid(unsafe_code)]
来确保在100%安全的Rust中实现一切。
许可
根据您的选择,在Apache License, Version 2.0或MIT许可证下许可。除非您明确声明,否则您有意提交的任何贡献,根据Apache-2.0许可证定义,均应按上述方式双重许可,不附加任何额外条款或条件。
依赖项
~7–20MB
~305K SLoC