fix tracing flags

This commit is contained in:
Adil Hafeez 2026-02-07 15:16:12 -08:00
parent 509976dec6
commit 31f3d38fad
No known key found for this signature in database
GPG key ID: 9B18EF7691369645
11 changed files with 61 additions and 48 deletions

View file

@ -50,13 +50,12 @@ fn empty() -> BoxBody<Bytes, hyper::Error> {
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let _tracer_provider = init_tracer();
let bind_address = env::var("BIND_ADDRESS").unwrap_or_else(|_| BIND_ADDRESS.to_string());
// loading arch_config.yaml file
// loading arch_config.yaml file (before tracing init so we can read tracing config)
let arch_config_path = env::var("ARCH_CONFIG_PATH_RENDERED")
.unwrap_or_else(|_| "./arch_config_rendered.yaml".to_string());
info!(path = %arch_config_path, "loading arch_config.yaml");
eprintln!("loading arch_config.yaml from {}", arch_config_path);
let config_contents =
fs::read_to_string(&arch_config_path).expect("Failed to read arch_config.yaml");
@ -64,6 +63,10 @@ async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let config: Configuration =
serde_yaml::from_str(&config_contents).expect("Failed to parse arch_config.yaml");
// Initialize tracing using config.yaml tracing section
let _tracer_provider = init_tracer(config.tracing.as_ref());
info!(path = %arch_config_path, "loaded arch_config.yaml");
let arch_config = Arc::new(config);
// combine agents and filters into a single list of agents

View file

@ -12,6 +12,7 @@ use tracing_subscriber::util::SubscriberInitExt;
use tracing_subscriber::EnvFilter;
use crate::tracing::ServiceNameOverrideExporter;
use common::configuration::Tracing;
struct BracketedTime;
@ -80,18 +81,20 @@ use tracing_subscriber::fmt::FormattedFields;
static INIT_LOGGER: OnceLock<SdkTracerProvider> = OnceLock::new();
pub fn init_tracer() -> &'static SdkTracerProvider {
pub fn init_tracer(tracing_config: Option<&Tracing>) -> &'static SdkTracerProvider {
INIT_LOGGER.get_or_init(|| {
global::set_text_map_propagator(TraceContextPropagator::new());
// Get OTEL collector URL from environment
let otel_endpoint = std::env::var("OTEL_TRACING_GRPC_ENDPOINT")
.unwrap_or_else(|_| "http://localhost:4317".to_string());
// Get OTEL endpoint and sampling from config.yaml tracing section
let otel_endpoint = tracing_config.and_then(|t| t.opentracing_grpc_endpoint.clone());
let tracing_enabled = std::env::var("OTEL_TRACING_ENABLED")
.ok()
.and_then(|s| s.parse().ok())
.unwrap_or(false);
let random_sampling = tracing_config.and_then(|t| t.random_sampling).unwrap_or(0);
let tracing_enabled = random_sampling > 0 && otel_endpoint.is_some();
eprintln!(
"initializing tracing: tracing_enabled={}, otel_endpoint={:?}, random_sampling={}",
tracing_enabled, otel_endpoint, random_sampling
);
// Create OTLP exporter to send spans to collector
if tracing_enabled {
@ -103,7 +106,7 @@ pub fn init_tracer() -> &'static SdkTracerProvider {
// Create ServiceNameOverrideExporter to support per-span service names
// This allows spans to have different service names (e.g., plano(orchestrator),
// plano(filter), plano(llm)) by setting the "service.name.override" attribute
let exporter = ServiceNameOverrideExporter::new(&otel_endpoint);
let exporter = ServiceNameOverrideExporter::new(otel_endpoint.as_ref().unwrap());
let provider = SdkTracerProvider::builder()
.with_batch_exporter(exporter)

View file

@ -90,6 +90,8 @@ pub struct Overrides {
pub struct Tracing {
pub sampling_rate: Option<f64>,
pub trace_arch_internal: Option<bool>,
pub random_sampling: Option<u32>,
pub opentracing_grpc_endpoint: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash, Default)]