3 releases
✓ Uses Rust 2018 edition
0.1.2 | Dec 2, 2019 |
---|---|
0.1.1 | Nov 26, 2019 |
0.1.0 | Nov 20, 2019 |
#130 in Debugging
25 downloads per month
285KB
515 lines
Actix Web OpenTelemetry
OpenTelemetry integration for Actix Web.
Execute client and server example
# Run jaeger in background
$ docker run -d -p6831:6831/udp -p6832:6832/udp -p16686:16686 jaegertracing/all-in-one:latest
# Run server example with tracing middleware
$ cargo run --example server
# (In other tab) Run client example with request tracing
$ cargo run --example client
# View spans (see the image below)
$ firefox http://localhost:16686/
lib.rs
:
Actix Web OpenTelemetry
OpenTelemetry integration for Actix Web.
This crate allows you to easily instrument client and server requests.
- Client requests can be traced by using the
with_tracing
function. - Server requests can be traced by using the
RequestTracing
struct.
Client Request Example:
use actix_web::client;
use futures::Future;
fn execute_request(client: &client::Client) -> impl Future<Item = String, Error = ()> {
actix_web_opentelemetry::with_tracing(client.get("http://localhost:8080"), |request| {
request.send()
})
.map_err(|err| eprintln!("Error: {:?}", err))
.and_then(|mut res| {
res.body()
.map(|bytes| std::str::from_utf8(&bytes).unwrap().to_string())
.map_err(|err| eprintln!("Error: {:?}", err))
})
}
Server middlware example:
use actix_web::{App, HttpServer, web};
use actix_web_opentelemetry::RequestTracing;
use opentelemetry::api;
fn init_tracer() {
opentelemetry::global::set_provider(api::NoopProvider {});
}
fn main() -> std::io::Result<()> {
init_tracer();
HttpServer::new(|| {
App::new()
.wrap(RequestTracing::default())
.service(web::resource("/").to(|| "Hello world!"))
})
.bind("127.0.0.1:8080")?
.run()
}
Dependencies
~19MB
~466K SLoC