reqwest-tracing
Opentracing middleware implementation for
reqwest-middleware.
Overview
Attach TracingMiddleware to your client to automatically trace HTTP requests:
# Cargo.toml
# ...
[]
= "0.22"
= "0.13"
= "0.5"
= "0.9"
= { = "0.6", = ["opentelemetry_0_22"] }
= { = "1.12.0", = ["macros", "rt-multi-thread"] }
= "0.1"
= "0.23"
= "0.3"
= "1"
use ;
use ;
use ;
use Instant;
use Extensions;
use Span;
use FmtSubscriber;
use Level;
;
async
async
$ cargo run
2024-09-10T13:19:52.520194Z TRACE HTTP request{http.request.method=GET url.scheme=https server.address=truelayer.com server.port=443 user_agent.original= otel.kind="client" otel.name=example-request}: hyper_util::client::legacy::pool: checkout waiting for idle connection: ("https", truelayer.com)
2024-09-10T13:19:52.520303Z TRACE HTTP request{http.request.method=GET url.scheme=https server.address=truelayer.com server.port=443 user_agent.original= otel.kind="client" otel.name=example-request}: hyper_util::client::legacy::connect::http: Http::connect; scheme=Some("https"), host=Some("truelayer.com"), port=None
2024-09-10T13:19:52.520686Z DEBUG HTTP request{http.request.method=GET url.scheme=https server.address=truelayer.com server.port=443 user_agent.original= otel.kind="client" otel.name=example-request}:resolve{host=truelayer.com}: hyper_util::client::legacy::connect::dns: resolving host="truelayer.com"
2024-09-10T13:19:52.521847Z DEBUG HTTP request{http.request.method=GET url.scheme=https server.address=truelayer.com server.port=443 user_agent.original= otel.kind="client" otel.name=example-request}: hyper_util::client::legacy::connect::http: connecting to 104.18.24.12:443
2024-09-10T13:19:52.532045Z DEBUG HTTP request{http.request.method=GET url.scheme=https server.address=truelayer.com server.port=443 user_agent.original= otel.kind="client" otel.name=example-request}: hyper_util::client::legacy::connect::http: connected to 104.18.24.12:443
2024-09-10T13:19:52.548050Z TRACE HTTP request{http.request.method=GET url.scheme=https server.address=truelayer.com server.port=443 user_agent.original= otel.kind="client" otel.name=example-request}: hyper_util::client::legacy::client: http1 handshake complete, spawning background dispatcher task
2024-09-10T13:19:52.548651Z TRACE HTTP request{http.request.method=GET url.scheme=https server.address=truelayer.com server.port=443 user_agent.original= otel.kind="client" otel.name=example-request}: hyper_util::client::legacy::pool: checkout dropped for ("https", truelayer.com)
See the tracing crate for more information on how to set up a
tracing subscriber to make use of the spans.
How to install
Add reqwest-tracing to your dependencies. Optionally enable opentelemetry integration by enabling
an opentelemetry version feature:
[]
# ...
= { = "0.6.0", = ["opentelemetry_0_22"] }
Available opentelemetry features are opentelemetry_0_22, opentelemetry_0_21, and opentelemetry_0_20,