Features
Moved the init_tracer() function to an implementation in TelemetryConfig for cleaner main file
closes #43

Bug Fixes
Telemetry is now opt-in again. Due to changes in opentelemetry, this required a major overhaul of the telemetryconfig function.
closes #44
This commit is contained in:
brotoskyj
2025-12-15 17:04:17 -05:00
parent 0dbc744471
commit f080b0034f
8 changed files with 346 additions and 67 deletions
+2 -33
View File
@@ -1,10 +1,6 @@
use crate::modules::datatypes::*;
use crate::prelude::*;
use crossbeam::channel::unbounded;
use opentelemetry_otlp::WithTonicConfig;
use std::sync::{Arc, Mutex};
use std::thread;
use tonic::transport::{Channel, ClientTlsConfig};
#[pyfunction]
pub fn pull_policy_exec_histories(
py: Python<'_>,
@@ -25,7 +21,7 @@ pub fn pull_policy_exec_histories(
std::process::abort();
}
};
let tracer_provider = rt.block_on(async { init_tracer() });
let tracer_provider = rt.block_on(async { TelemetryConfig::init_tracer() });
global::set_tracer_provider(tracer_provider.clone());
let tracer: global::BoxedTracer = global::tracer("tracer");
let _cx: Context = Context::new();
@@ -184,9 +180,6 @@ pub fn pull_policy_exec_histories(
.unwrap()
.enable_steady_tick(std::time::Duration::from_millis(100));
let span: opentelemetry::trace::SpanRef<'_> = cx.span();
//span.set_attribute(Key::new("Days").string(days.to_string()));
//span.set_attribute(Key::new("Days"));
//span.set_attribute(KeyValue::new("Policy Name", policy_names.clone()));
span.set_attribute(KeyValue::new("Days", days));
span.set_attribute(KeyValue::new("Policy Name", policy_names.clone()));
loop {
@@ -320,27 +313,3 @@ pub fn get_base_directory() -> PathBuf {
}
}
}
fn init_tracer() -> opentelemetry_sdk::trace::TracerProvider {
let cfg: TelemetryConfig = TelemetryConfig::load();
let endpoint = cfg.TELEM_URL.unwrap_or_default().clone();
let channel_endpoint = endpoint.clone();
let channel = Channel::from_shared(channel_endpoint.clone())
.unwrap()
.tls_config(ClientTlsConfig::new().with_native_roots())
.unwrap()
.connect_lazy();
let exporter = opentelemetry_otlp::SpanExporter::builder()
.with_tonic()
.with_endpoint(endpoint.clone())
.with_channel(channel)
.build()
.expect("Failed to build exporter");
opentelemetry_sdk::trace::TracerProvider::builder()
.with_simple_exporter(exporter)
.with_resource(Resource::new(vec![KeyValue::new(
"service.name",
"LoxideLibs",
)]))
.build()
}