Skip to content

Commit fc14557

Browse files
committed
make opentelemetry config optional
1 parent 9db3a1c commit fc14557

File tree

2 files changed

+32
-38
lines changed

2 files changed

+32
-38
lines changed

src/agent/config.rs

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@ pub struct Config {
3232
pub metrics_server: metrics::Config,
3333
#[serde(default)]
3434
pub remote_keypair_loader: services::keypairs::Config,
35-
#[serde(default)]
36-
pub opentelemetry: OpenTelemetryConfig,
35+
pub opentelemetry: Option<OpenTelemetryConfig>,
3736
}
3837

3938
impl Config {
@@ -92,12 +91,3 @@ pub struct OpenTelemetryConfig {
9291
pub exporter_timeout_secs: u64,
9392
pub exporter_endpoint: String,
9493
}
95-
96-
impl Default for OpenTelemetryConfig {
97-
fn default() -> Self {
98-
Self {
99-
exporter_timeout_secs: 3,
100-
exporter_endpoint: "http://127.0.0.1:4317".to_string(),
101-
}
102-
}
103-
}

src/bin/agent.rs

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -57,38 +57,42 @@ async fn main() -> Result<()> {
5757
.with_thread_ids(true)
5858
.with_ansi(std::io::stderr().is_terminal());
5959

60-
// Set up the OpenTelemetry exporter, defaults to 127.0.0.1:4317
61-
let otlp_exporter = opentelemetry_otlp::new_exporter()
62-
.tonic()
63-
.with_endpoint(&config.opentelemetry.exporter_endpoint)
64-
.with_timeout(Duration::from_secs(
65-
config.opentelemetry.exporter_timeout_secs,
66-
));
67-
68-
// Set up the OpenTelemetry tracer
69-
let tracer = opentelemetry_otlp::new_pipeline()
70-
.tracing()
71-
.with_exporter(otlp_exporter)
72-
.with_trace_config(opentelemetry_sdk::trace::config().with_resource(
73-
opentelemetry_sdk::Resource::new(vec![KeyValue::new("service.name", "pyth-agent")]),
74-
))
75-
.install_batch(opentelemetry_sdk::runtime::Tokio)
76-
.map_err(|e| anyhow::anyhow!("Error initializing open telemetry: {}", e))?;
77-
78-
// Set up the telemetry layer
79-
let telemetry = tracing_opentelemetry::layer().with_tracer(tracer);
80-
81-
let registry = tracing_subscriber::registry()
82-
.with(telemetry)
83-
.with(env_filter);
84-
60+
let mut layers = Vec::new();
61+
layers.push(env_filter.boxed());
62+
63+
// Set up OpenTelemetry only if it's configured
64+
if let Some(opentelemetry_config) = &config.opentelemetry {
65+
// Set up the OpenTelemetry exporter
66+
let otlp_exporter = opentelemetry_otlp::new_exporter()
67+
.tonic()
68+
.with_endpoint(&opentelemetry_config.exporter_endpoint)
69+
.with_timeout(Duration::from_secs(
70+
opentelemetry_config.exporter_timeout_secs,
71+
));
72+
73+
// Set up the OpenTelemetry tracer
74+
let tracer = opentelemetry_otlp::new_pipeline()
75+
.tracing()
76+
.with_exporter(otlp_exporter)
77+
.with_trace_config(opentelemetry_sdk::trace::config().with_resource(
78+
opentelemetry_sdk::Resource::new(vec![KeyValue::new("service.name", "pyth-agent")]),
79+
))
80+
.install_batch(opentelemetry_sdk::runtime::Tokio)
81+
.map_err(|e| anyhow::anyhow!("Error initializing open telemetry: {}", e))?;
82+
83+
// Set up the telemetry layer
84+
let telemetry = tracing_opentelemetry::layer().with_tracer(tracer);
85+
layers.push(telemetry.boxed());
86+
}
8587
// Use the compact formatter if we're in a terminal, otherwise use the JSON formatter.
8688
if std::io::stderr().is_terminal() {
87-
registry.with(fmt_layer.compact()).init();
89+
layers.push(fmt_layer.compact().boxed());
8890
} else {
89-
registry.with(fmt_layer.json()).init();
91+
layers.push(fmt_layer.json().boxed());
9092
}
9193

94+
tracing_subscriber::registry().with(layers).init();
95+
9296
// Launch the application. If it fails, print the full backtrace and exit. RUST_BACKTRACE
9397
// should be set to 1 for this otherwise it will only print the top-level error.
9498
if let Err(err) = start(config).await {

0 commit comments

Comments
 (0)