From 95fcabc40ee364fd61ce8309efc59d90d4d9323a Mon Sep 17 00:00:00 2001 From: Andy Killorin <37423245+Speedy6451@users.noreply.github.com> Date: Mon, 25 Dec 2023 12:16:25 -0600 Subject: [PATCH] TRACING IN MY WEB BROWSER --- server/Cargo.toml | 16 ++++++---------- server/src/main.rs | 30 ++++++++++++++++++------------ server/src/turtle.rs | 2 +- server/src/turtle_api.rs | 1 + 4 files changed, 26 insertions(+), 23 deletions(-) diff --git a/server/Cargo.toml b/server/Cargo.toml index 82e306c..b0028b1 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -19,13 +19,6 @@ hyper = "1.0.1" hyper-util = "0.1.1" indoc = "2.0.4" nalgebra = { version = "0.32.3", features = ["serde-serialize"] } -opentelemetry = "0.21.0" -opentelemetry-appender-tracing = "0.2.0" -opentelemetry-jaeger = "0.20.0" -opentelemetry-otlp = { version = "0.14.0", features = ["logs", "http-proto", "reqwest-client"] } -opentelemetry-semantic-conventions = "0.13.0" -opentelemetry-stdout = { version = "0.2.0", features = ["trace"] } -opentelemetry_sdk = { version = "0.21.1", features = ["logs", "rt-tokio"] } parking_lot = { version = "0.11", features = ["serde"] } pathfinding = "4.6.0" rstar = { version = "0.11.0", features = ["serde"] } @@ -33,7 +26,7 @@ rustmatica = "0.1.1" serde = { version = "1.0.193", features = ["rc", "derive"] } serde_json = "1.0.108" time = { version = "0.3.31", features = ["serde"] } -tokio = { version = "1.0", features = ["full", "tracing"] } +tokio = { version = "1", features = ["full", "tracing"] } tower = { version = "0.4", features = ["util", "timeout", "load-shed", "limit"] } tower-http = { version = "0.5.0", features = [ "add-extension", @@ -44,7 +37,10 @@ tower-http = { version = "0.5.0", features = [ ] } tower-layer = "0.3.2" tracing = "0.1" -tracing-opentelemetry = "0.22.0" -tracing-subscriber = { version = "0.3.18", features = ["registry", "std"] } typetag = "0.2.14" ucnlnav = { git = "https://github.com/ucnl/UCNLNav.git", version = "0.1.0" } +tracing-subscriber = "0.3" +console-subscriber = "0.1.5" +opentelemetry = "0.17.0" +tracing-opentelemetry = "0.17.2" +opentelemetry-jaeger = "0.16.0" diff --git a/server/src/main.rs b/server/src/main.rs index 6af8212..5f42c91 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,6 +1,6 @@ #![feature(iter_map_windows, iter_collect_into)] -use std::{collections::VecDeque, io::ErrorKind, sync::Arc, env::args, path}; +use std::{collections::VecDeque, io::ErrorKind, sync::Arc, env::args, path, borrow::BorrowMut}; use anyhow::{Error, Ok}; use axum::{ @@ -10,6 +10,8 @@ use axum::{ }; use blocks::{World, Position, }; use depot::Depots; +use opentelemetry::global; +use tower_http::trace::TraceLayer; use tracing::{info, span}; use rstar::RTree; @@ -18,15 +20,10 @@ use tasks::Scheduler; use tokio::{sync::{ RwLock, mpsc, OnceCell, Mutex, watch }, fs, time::Instant, runtime::Runtime}; +use tracing_subscriber::{fmt::format::FmtSpan, layer::SubscriberExt, util::SubscriberInitExt}; use turtle::{Turtle, TurtleCommander}; use serde::{Deserialize, Serialize}; use indoc::formatdoc; -use opentelemetry::trace::TracerProvider as _; -use opentelemetry_sdk::{trace::TracerProvider, runtime::Tokio}; -use opentelemetry_stdout as stdout; -use tracing_subscriber::prelude::*; -use tracing_subscriber::layer::SubscriberExt; -use tracing_subscriber::Registry; use crate::blocks::Block; @@ -58,18 +55,26 @@ async fn main() -> Result<(), Error> { None => "save".into(), })?; - let tracer = opentelemetry_jaeger::new_agent_pipeline() + global::set_text_map_propagator(opentelemetry_jaeger::Propagator::new()); + + let tracer = opentelemetry_jaeger::new_pipeline() .with_service_name("avarus") .install_simple()?; + let opentelemetry = tracing_opentelemetry::layer().with_tracer(tracer); + + let subscriber = tracing_subscriber::fmt::layer() + .compact() + .with_file(false) + .with_target(true) + .with_span_events(FmtSpan::ENTER); + tracing_subscriber::registry() .with(opentelemetry) + .with(subscriber) .try_init()?; - let root = span!(tracing::Level::INFO, "starting"); - let enter = root.enter(); - - info!("started"); + info!("starting"); let (kill_send, kill_recv) = watch::channel(()); @@ -81,6 +86,7 @@ async fn main() -> Result<(), Error> { //.route("/turtle/:id/placeUp", get(place_up)) .route("/flush", get(flush)) .nest("/turtle", turtle_api::turtle_api()) + .layer(TraceLayer::new_for_http()) .with_state(state.clone()); let listener = tokio::net::TcpListener::bind(("0.0.0.0", *PORT.get().unwrap())) diff --git a/server/src/turtle.rs b/server/src/turtle.rs index 278477d..d085137 100644 --- a/server/src/turtle.rs +++ b/server/src/turtle.rs @@ -231,7 +231,7 @@ impl TurtleCommander { self.depots.dock(self.clone()).await } - #[tracing::instrument] + #[tracing::instrument(skip(self))] pub async fn goto(&self, pos: Position) -> Option<()> { let mut recent = self.pos().await; let world = self.world.clone(); diff --git a/server/src/turtle_api.rs b/server/src/turtle_api.rs index c4546a6..db6862b 100644 --- a/server/src/turtle_api.rs +++ b/server/src/turtle_api.rs @@ -169,6 +169,7 @@ pub(crate) async fn fell( "ACK" } +#[tracing::instrument(skip(state))] pub(crate) async fn set_goal( Path(id): Path, State(state): State,