feat(tvix/tracing): add tracing-tracy support
This introduces another feature flag, "tracy" to the `tvix-tracing` crate. If enabled (not enabled by default), it'll add an additional layer emitting packets in a format that https://github.com/wolfpld/tracy can display. I had to be a bit tricky with the combinatorial complexity when adding this, but the resulting code still seems manageable. Change-Id: Ica824496728fa276ceae3f7a9754be0166e6558f Reviewed-on: https://cl.tvl.fyi/c/depot/+/10952 Tested-by: BuildkiteCI Reviewed-by: Simon Hauser <simon.hauser@helsinki-systems.de> Reviewed-by: flokli <flokli@flokli.de>
This commit is contained in:
parent
d25f047b9d
commit
6b6a34065e
5 changed files with 1175 additions and 69 deletions
|
|
@ -16,6 +16,7 @@ tracing-opentelemetry = { version = "0.23.0", optional = true }
|
|||
opentelemetry = { version = "0.22.0", optional = true }
|
||||
opentelemetry-otlp = { version = "0.15.0", optional = true }
|
||||
opentelemetry_sdk = { version = "0.22.1", features = ["rt-tokio"], optional = true }
|
||||
tracing-tracy = { version = "0.11.0", features = ["flush-on-exit"], optional = true }
|
||||
|
||||
[features]
|
||||
default = []
|
||||
|
|
@ -25,6 +26,9 @@ otlp = [
|
|||
"dep:opentelemetry-otlp",
|
||||
"dep:opentelemetry_sdk"
|
||||
]
|
||||
tracy = [
|
||||
"dep:tracing-tracy"
|
||||
]
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
|
|
|
|||
|
|
@ -6,6 +6,6 @@
|
|||
meta.ci.targets = lib.filter (x: lib.hasPrefix "with-features" x || x == "no-features") (lib.attrNames passthru);
|
||||
passthru = depot.tvix.utils.mkFeaturePowerset {
|
||||
inherit (old) crateName;
|
||||
features = [ "otlp" ];
|
||||
features = [ "otlp" "tracy" ];
|
||||
};
|
||||
})
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ use opentelemetry_sdk::{
|
|||
trace::BatchConfigBuilder,
|
||||
Resource,
|
||||
};
|
||||
#[cfg(feature = "tracy")]
|
||||
use tracing_tracy::TracyLayer;
|
||||
|
||||
lazy_static! {
|
||||
pub static ref PB_PROGRESS_STYLE: ProgressStyle = ProgressStyle::with_template(
|
||||
|
|
@ -173,12 +175,31 @@ impl TracingBuilder {
|
|||
let (tracer, tx) = gen_otlp_tracer(service_name.to_string());
|
||||
// Create a tracing layer with the configured tracer
|
||||
let layer = tracing_opentelemetry::layer().with_tracer(tracer);
|
||||
subscriber.with(Some(layer)).try_init()?;
|
||||
|
||||
#[cfg(feature = "tracy")]
|
||||
{
|
||||
subscriber
|
||||
.with(TracyLayer::default())
|
||||
.with(Some(layer))
|
||||
.try_init()?;
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "tracy"))]
|
||||
{
|
||||
subscriber.with(Some(layer)).try_init()?;
|
||||
}
|
||||
return Ok(TracingHandle { tx: Some(tx) });
|
||||
}
|
||||
}
|
||||
#[cfg(feature = "tracy")]
|
||||
{
|
||||
subscriber.with(TracyLayer::default()).try_init()?;
|
||||
}
|
||||
#[cfg(not(feature = "tracy"))]
|
||||
{
|
||||
subscriber.try_init()?;
|
||||
}
|
||||
|
||||
subscriber.try_init()?;
|
||||
Ok(TracingHandle { tx: None })
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue