1
Fork 0

TRACING IN MY WEB BROWSER

This commit is contained in:
Andy Killorin 2023-12-25 12:16:25 -06:00
parent b2c41261de
commit 95fcabc40e
Signed by: ank
GPG key ID: B6241CA3B552BCA4
4 changed files with 26 additions and 23 deletions

View file

@ -19,13 +19,6 @@ hyper = "1.0.1"
hyper-util = "0.1.1" hyper-util = "0.1.1"
indoc = "2.0.4" indoc = "2.0.4"
nalgebra = { version = "0.32.3", features = ["serde-serialize"] } 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"] } parking_lot = { version = "0.11", features = ["serde"] }
pathfinding = "4.6.0" pathfinding = "4.6.0"
rstar = { version = "0.11.0", features = ["serde"] } rstar = { version = "0.11.0", features = ["serde"] }
@ -33,7 +26,7 @@ rustmatica = "0.1.1"
serde = { version = "1.0.193", features = ["rc", "derive"] } serde = { version = "1.0.193", features = ["rc", "derive"] }
serde_json = "1.0.108" serde_json = "1.0.108"
time = { version = "0.3.31", features = ["serde"] } 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 = { version = "0.4", features = ["util", "timeout", "load-shed", "limit"] }
tower-http = { version = "0.5.0", features = [ tower-http = { version = "0.5.0", features = [
"add-extension", "add-extension",
@ -44,7 +37,10 @@ tower-http = { version = "0.5.0", features = [
] } ] }
tower-layer = "0.3.2" tower-layer = "0.3.2"
tracing = "0.1" tracing = "0.1"
tracing-opentelemetry = "0.22.0"
tracing-subscriber = { version = "0.3.18", features = ["registry", "std"] }
typetag = "0.2.14" typetag = "0.2.14"
ucnlnav = { git = "https://github.com/ucnl/UCNLNav.git", version = "0.1.0" } 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"

View file

@ -1,6 +1,6 @@
#![feature(iter_map_windows, iter_collect_into)] #![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 anyhow::{Error, Ok};
use axum::{ use axum::{
@ -10,6 +10,8 @@ use axum::{
}; };
use blocks::{World, Position, }; use blocks::{World, Position, };
use depot::Depots; use depot::Depots;
use opentelemetry::global;
use tower_http::trace::TraceLayer;
use tracing::{info, span}; use tracing::{info, span};
use rstar::RTree; use rstar::RTree;
@ -18,15 +20,10 @@ use tasks::Scheduler;
use tokio::{sync::{ use tokio::{sync::{
RwLock, mpsc, OnceCell, Mutex, watch RwLock, mpsc, OnceCell, Mutex, watch
}, fs, time::Instant, runtime::Runtime}; }, fs, time::Instant, runtime::Runtime};
use tracing_subscriber::{fmt::format::FmtSpan, layer::SubscriberExt, util::SubscriberInitExt};
use turtle::{Turtle, TurtleCommander}; use turtle::{Turtle, TurtleCommander};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use indoc::formatdoc; 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; use crate::blocks::Block;
@ -58,18 +55,26 @@ async fn main() -> Result<(), Error> {
None => "save".into(), 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") .with_service_name("avarus")
.install_simple()?; .install_simple()?;
let opentelemetry = tracing_opentelemetry::layer().with_tracer(tracer); 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() tracing_subscriber::registry()
.with(opentelemetry) .with(opentelemetry)
.with(subscriber)
.try_init()?; .try_init()?;
let root = span!(tracing::Level::INFO, "starting"); info!("starting");
let enter = root.enter();
info!("started");
let (kill_send, kill_recv) = watch::channel(()); let (kill_send, kill_recv) = watch::channel(());
@ -81,6 +86,7 @@ async fn main() -> Result<(), Error> {
//.route("/turtle/:id/placeUp", get(place_up)) //.route("/turtle/:id/placeUp", get(place_up))
.route("/flush", get(flush)) .route("/flush", get(flush))
.nest("/turtle", turtle_api::turtle_api()) .nest("/turtle", turtle_api::turtle_api())
.layer(TraceLayer::new_for_http())
.with_state(state.clone()); .with_state(state.clone());
let listener = tokio::net::TcpListener::bind(("0.0.0.0", *PORT.get().unwrap())) let listener = tokio::net::TcpListener::bind(("0.0.0.0", *PORT.get().unwrap()))

View file

@ -231,7 +231,7 @@ impl TurtleCommander {
self.depots.dock(self.clone()).await self.depots.dock(self.clone()).await
} }
#[tracing::instrument] #[tracing::instrument(skip(self))]
pub async fn goto(&self, pos: Position) -> Option<()> { pub async fn goto(&self, pos: Position) -> Option<()> {
let mut recent = self.pos().await; let mut recent = self.pos().await;
let world = self.world.clone(); let world = self.world.clone();

View file

@ -169,6 +169,7 @@ pub(crate) async fn fell(
"ACK" "ACK"
} }
#[tracing::instrument(skip(state))]
pub(crate) async fn set_goal( pub(crate) async fn set_goal(
Path(id): Path<u32>, Path(id): Path<u32>,
State(state): State<SharedControl>, State(state): State<SharedControl>,