Slackbot
08/05/2022, 11:49 AMSrikanth Chekuri
08/05/2022, 12:31 PMSiddhant Sahay
08/05/2022, 12:35 PMSrikanth Chekuri
08/05/2022, 12:36 PMSiddhant Sahay
08/05/2022, 12:51 PMSrikanth Chekuri
08/05/2022, 12:58 PMNick Burrett
08/05/2022, 1:29 PMSiddhant Sahay
08/06/2022, 7:33 PMuse opentelemetry::sdk::Resource;
use opentelemetry::trace::TraceError;
use opentelemetry::{global, sdk::trace as sdktrace};
use opentelemetry::{trace::Tracer};
use opentelemetry_otlp::WithExportConfig;
use tracing::{error, span};
use tracing_subscriber::layer::SubscriberExt;
// use tracing_subscriber::util::SubscriberInitExt;
use tracing_subscriber::Registry;
fn init_tracer() -> Result<sdktrace::Tracer, TraceError> {
opentelemetry_otlp::new_pipeline()
.tracing()
.with_exporter(opentelemetry_otlp::new_exporter().tonic().with_env())
.with_trace_config(
sdktrace::config().with_resource(Resource::default()),
)
.install_batch(opentelemetry::runtime::Tokio)
}
#[tokio::main]
async fn main() {
dotenv::dotenv().ok();
let tracer = init_tracer().unwrap();
// Create a tracing subscriber with the configured tracer
let telemetry = tracing_opentelemetry::layer().with_tracer(tracer);
// Use the tracing subscriber `Registry`, or any other subscriber
// that impls `LookupSpan`
let collector = Registry::default().with(telemetry);
let log = warp::log("warp_server");
std_logger::init();
let route = warp::path("health")
.and(warp::get())
.and(warp::path::end())
.map(|| "ok!");
let all_app_routes = warp::path("events")
.and(route)
.with(log)
.with(warp::trace::request());
warp::serve(all_app_routes).run(([0, 0, 0, 0], 3032)).await;
}
This is my <http://main.rs|main.rs>
code for warp server with opentelemetry and tracing