2 releases
0.0.2 | Jun 23, 2023 |
---|---|
0.0.1 | Oct 7, 2022 |
#28 in #datadog
13KB
160 lines
dd-trace-layer
dd-trace-layer
is a middleware for sending Datadog's trace. It's based on Tower and OpenTelemetry Rust.
Usage
This can be used in hyper
or axum
, etc. See examples.
use dd_trace_layer::{init, ApiVersion, DDTraceLayer};
use hyper::{server::Server, Body, Error, Request, Response};
use std::net::SocketAddr;
use tower::{make::Shared, ServiceBuilder};
#[tokio::main]
async fn main() {
init("service_name", "http://localhost:8126", ApiVersion::Version05);
let service = ServiceBuilder::new()
.layer(DDTraceLayer::new("operation_name".to_string()))
.service_fn(hello_world);
let addr = SocketAddr::from(([127, 0, 0, 1], 8080));
Server::bind(&addr)
.serve(Shared::new(service))
.await
.expect("server error");
}
async fn hello_world(_: Request<Body>) -> Result<Response<Body>, Error> {
Ok(Response::new(Body::from("Hello, World!")))
}
Contributing
- Fork
- Create a feature branch
- Commit your changes
- Rebase your local changes against the main branch
- Run test suite with the
cargo test
command and confirm that it passes - Run
cargo fmt
and passcargo clippy
- Create new Pull Request
Dependencies
~9–25MB
~340K SLoC