```sh
docker run -d -p6831:6831/udp -p6832:6832/udp -p16686:16686 jaegertracing/all-in-one:latest
cargo run --example server
curl http://localhost:3000/
firefox http://localhost:16686/ ```
Cargo.toml
toml
[dependencies]
async-std = {version = "1.6", features = ["attributes"]}
opentelemetry = "0.7"
opentelemetry-jaeger = "0.6"
opentelemetry-tide = "0.3"
thrift = "0.13"
tide = "0.13"
server.rs
```rust use opentelemetry::{api::KeyValue, global, sdk}; use opentelemetry_tide::OpenTelemetryTracingMiddleware; use tide::Request;
async fn main() -> thrift::Result<()> { tide::log::start(); // Make sure to initialize the tracer init_tracer()?;
let mut app = tide::new();
// Here we add the middleware
app.with(OpenTelemetryTracingMiddleware::new());
app.at("/").get(|req: Request<()>| async move {
eprintln!("req.version = {:?}", req.version());
Ok("Hello, OpenTelemetry!")
});
app.listen("127.0.0.1:3000").await?;
Ok(())
}
fn inittracer() -> thrift::Result<()> { let exporter = opentelemetryjaeger::Exporter::builder() .withagentendpoint("127.0.0.1:6831".parse().expect("not a valid endpoint")) .withprocess(opentelemetryjaeger::Process { service_name: "example-server".into(), tags: vec![KeyValue::new("exporter", "jaeger")], }) .init()?;
let provider = sdk::Provider::builder()
.with_simple_exporter(exporter)
.with_config(sdk::Config {
default_sampler: Box::new(sdk::Sampler::AlwaysOn),
..Default::default()
})
.build();
global::set_provider(provider);
Ok(())
} ```
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.