Skip to content

Commit

Permalink
Use opentelemetry if env variable DORA_JAEGER_TRACING is set
Browse files Browse the repository at this point in the history
  • Loading branch information
haixuanTao committed Mar 29, 2023
1 parent 87adac7 commit 350c4d5
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 62 deletions.
2 changes: 1 addition & 1 deletion binaries/daemon/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ default = ["tracing", "telemetry"]
tracing = ["dep:dora-tracing"]
# telemetry flag enables to trace dora-daemon as well as send ticks with opentelemetry context
# for distributed tracing.
telemetry = ["dora-tracing?/telemetry", "dep:tracing-opentelemetry"]
telemetry = ["dep:tracing-opentelemetry"]

[dependencies]
eyre = "0.6.8"
Expand Down
7 changes: 1 addition & 6 deletions binaries/runtime/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,5 @@ tracing-opentelemetry = { version = "0.18.0", optional = true }
[features]
default = ["tracing"]
tracing = ["dora-tracing"]
telemetry = [
"tracing",
"opentelemetry",
"dora-tracing/telemetry",
"tracing-opentelemetry",
]
telemetry = ["tracing", "opentelemetry", "tracing-opentelemetry"]
metrics = ["opentelemetry", "opentelemetry-system-metrics", "dora-metrics"]
2 changes: 0 additions & 2 deletions binaries/runtime/src/operator/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ use dora_core::{
};
use dora_operator_api_python::metadata_to_pydict;
use eyre::{Context, Result};
#[cfg(feature = "telemetry")]
use opentelemetry::sdk::trace::Tracer;
use pyo3::{
types::{PyBytes, PyDict},
IntoPy, PyObject, Python,
Expand Down
16 changes: 3 additions & 13 deletions libraries/extensions/telemetry/tracing/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,12 @@ license.workspace = true
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[features]
telemetry = [
"dep:opentelemetry",
"dep:opentelemetry-jaeger",
"dep:tracing-opentelemetry",
]

[dependencies]
tokio = { version = "1.24.2", features = ["full"] }
tracing-subscriber = { version = "0.3.15", features = ["env-filter"] }
tracing-opentelemetry = { version = "0.18.0", optional = true }
tracing-opentelemetry = { version = "0.18.0" }
eyre = "0.6.8"
tracing = "0.1.36"
opentelemetry = { version = "0.18.0", features = [
"rt-tokio",
"metrics",
], optional = true }
opentelemetry-jaeger = { version = "0.17.0", features = [
"rt-tokio",
], optional = true }
opentelemetry = { version = "0.18.0", features = ["rt-tokio", "metrics"] }
opentelemetry-jaeger = { version = "0.17.0", features = ["rt-tokio"] }
59 changes: 19 additions & 40 deletions libraries/extensions/telemetry/tracing/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
use eyre::Context as EyreContext;
use tracing_subscriber::{prelude::__tracing_subscriber_SubscriberExt, EnvFilter, Layer};

#[cfg(feature = "telemetry")]
use eyre::ContextCompat;
use tracing_subscriber::Registry;
pub mod telemetry;

pub fn set_up_tracing(name: &str) -> eyre::Result<()> {
Expand All @@ -16,43 +17,21 @@ pub fn set_up_tracing(name: &str) -> eyre::Result<()> {
.pretty()
.with_filter(filter);

#[cfg(feature = "telemetry")]
let subscriber = {
use eyre::ContextCompat;
use opentelemetry::sdk::export::trace::stdout;
use tracing::metadata::LevelFilter;
use tracing_subscriber::Registry;

let filter = EnvFilter::from_default_env();
let telemetry = match std::env::var_os("DORA_JAEGER_TRACING") {
Some(endpoint) => {
let endpoint = endpoint
.to_str()
.wrap_err("Could not parse env variable: DORA_JAEGER_TRACING")?;
let tracer = crate::telemetry::init_jaeger_tracing(name, endpoint)
.wrap_err("Could not instantiate tracing")?;
tracing_opentelemetry::layer()
.with_tracer(tracer)
.with_filter(filter.add_directive(LevelFilter::TRACE.into()))
}
None => {
let tracer = stdout::new_pipeline()
.with_pretty_print(true)
.install_simple();
tracing_opentelemetry::layer()
.with_tracer(tracer)
.with_filter(filter)
}
};
// Create a tracing layer with the configured tracer
Registry::default().with(stdout_log).with(telemetry)
};
#[cfg(not(feature = "telemetry"))]
let subscriber = tracing_subscriber::Registry::default().with(stdout_log);

// Use the tracing subscriber `Registry`, or any other subscriber
// that impls `LookupSpan`
tracing::subscriber::set_global_default(subscriber).context(format!(
"failed to set tracing global subscriber for {name}"
))
let registry = Registry::default().with(stdout_log);
if let Some(endpoint) = std::env::var_os("DORA_JAEGER_TRACING") {
let endpoint = endpoint
.to_str()
.wrap_err("Could not parse env variable: DORA_JAEGER_TRACING")?;
let tracer = crate::telemetry::init_jaeger_tracing(name, endpoint)
.wrap_err("Could not instantiate tracing")?;
let telemetry = tracing_opentelemetry::layer().with_tracer(tracer);
let subscriber = registry.with(telemetry);
tracing::subscriber::set_global_default(subscriber).context(format!(
"failed to set tracing global subscriber for {name}"
))
} else {
tracing::subscriber::set_global_default(registry).context(format!(
"failed to set tracing global subscriber for {name}"
))
}
}

0 comments on commit 350c4d5

Please sign in to comment.