Closes #27
Build Library / Build Library (push) Successful in 4m50s

Implemented Opt-in/Opt-Out logic
This commit is contained in:
brotoskyj
2025-11-17 10:50:02 -05:00
parent 19fab9b703
commit 32e296238b
5 changed files with 55 additions and 21 deletions
+51 -17
View File
@@ -3,6 +3,7 @@ use indicatif::{MultiProgress, ProgressBar, ProgressDrawTarget, ProgressStyle};
use mongodb::bson::oid::ObjectId;
use opentelemetry::global::shutdown_tracer_provider;
use opentelemetry::sdk::Resource;
use opentelemetry::trace::noop::NoopTracerProvider;
use opentelemetry::trace::{Status, TraceContextExt, TraceError};
use opentelemetry::{Context, KeyValue, sdk::trace as sdktrace, trace::Tracer};
use opentelemetry::{Key, global};
@@ -23,7 +24,12 @@ use std::{
path::PathBuf,
str::FromStr,
};
use tracing_subscriber::prelude::*;
#[derive(Deserialize, Debug)]
struct TelemetryConfig {
TELEMETRY: bool,
TELEM_URL: Option<String>,
}
#[derive(Debug, Deserialize, Serialize)]
struct ApiResponse {
@@ -140,7 +146,6 @@ pub fn pull_policy_exec_histories(
let span = cx.span();
span.set_attribute(Key::new("Days").string(days.to_string().to_string()));
loop {
tracing::info!("Starting Airlock Data Retrieval");
f.seek(SeekFrom::Start(0)).unwrap();
let execution_histories = tracer.in_span(checkpoint_number.to_string(), |cx| {
let results: ApiResponse = history_logging(
@@ -329,19 +334,48 @@ fn skipback(days: i64) -> ObjectId {
ObjectId::parse_str(&objectid_hex).expect("Invalid ObjectId hex")
}
fn init_tracer() -> Result<sdktrace::Tracer, TraceError> {
opentelemetry_otlp::new_pipeline()
.tracing()
.with_exporter(
opentelemetry_otlp::new_exporter()
.tonic()
.with_endpoint("https://signoz.racooncity.org"),
)
.with_trace_config(
sdktrace::config().with_resource(Resource::new(vec![KeyValue::new(
"service.name",
"LoxideLibs",
)])),
)
.install_simple()
fn load_telemetry_config() -> TelemetryConfig {
let cfg_path = get_base_directory().join("config\\user_config.json");
if !cfg_path.exists() {
return TelemetryConfig {
TELEMETRY: false,
TELEM_URL: None,
};
}
match fs::read_to_string(&cfg_path) {
Ok(contents) => {
serde_json::from_str::<TelemetryConfig>(&contents).unwrap_or(TelemetryConfig {
TELEMETRY: false,
TELEM_URL: None,
})
}
Err(_) => TelemetryConfig {
TELEMETRY: false,
TELEM_URL: None,
},
}
}
fn init_tracer() -> Result<Option<sdktrace::Tracer>, TraceError> {
let cfg = load_telemetry_config();
if !cfg.TELEMETRY {
global::set_tracer_provider(NoopTracerProvider::new());
println!("Telemetry Disabled by Config");
return Ok(None);
}
let endpoint = cfg.TELEM_URL.unwrap_or_default();
let tracer =
opentelemetry_otlp::new_pipeline()
.tracing()
.with_exporter(
opentelemetry_otlp::new_exporter()
.tonic()
.with_endpoint(endpoint),
)
.with_trace_config(sdktrace::config().with_resource(Resource::new(vec![
KeyValue::new("service.name", "LoxideLibs"),
])))
.install_simple()
.unwrap();
Ok(Some(tracer))
}