fix: only connect OTLP metrics when OTEL_EXPORTER_OTLP_ENDPOINT is set
When unset, use a no-op meter provider instead of defaulting to http://localhost:4317 and spamming connection errors every 5s.
This commit is contained in:
@@ -36,9 +36,10 @@ pub fn init_otel_metrics() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let otel_endpoint = std::env::var("OTEL_EXPORTER_OTLP_ENDPOINT")
|
let otel_endpoint = std::env::var("OTEL_EXPORTER_OTLP_ENDPOINT");
|
||||||
.unwrap_or_else(|_| "http://localhost:4317".into());
|
|
||||||
let service_name = std::env::var("OTEL_SERVICE_NAME").unwrap_or_else(|_| "scraper-api".into());
|
let service_name = std::env::var("OTEL_SERVICE_NAME").unwrap_or_else(|_| "scraper-api".into());
|
||||||
|
|
||||||
|
let m = if let Ok(endpoint) = otel_endpoint {
|
||||||
let export_interval_ms: u64 = std::env::var("OTEL_METRICS_EXPORT_INTERVAL")
|
let export_interval_ms: u64 = std::env::var("OTEL_METRICS_EXPORT_INTERVAL")
|
||||||
.ok()
|
.ok()
|
||||||
.and_then(|v| v.parse().ok())
|
.and_then(|v| v.parse().ok())
|
||||||
@@ -47,7 +48,7 @@ pub fn init_otel_metrics() {
|
|||||||
// Build the gRPC OTLP exporter
|
// Build the gRPC OTLP exporter
|
||||||
let exporter = opentelemetry_otlp::MetricExporter::builder()
|
let exporter = opentelemetry_otlp::MetricExporter::builder()
|
||||||
.with_tonic()
|
.with_tonic()
|
||||||
.with_endpoint(otel_endpoint.clone())
|
.with_endpoint(endpoint.clone())
|
||||||
.build()
|
.build()
|
||||||
.expect("Failed to create OTLP metric exporter");
|
.expect("Failed to create OTLP metric exporter");
|
||||||
|
|
||||||
@@ -62,15 +63,17 @@ pub fn init_otel_metrics() {
|
|||||||
.with_reader(reader)
|
.with_reader(reader)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
// Keep a handle so we can shut it down later
|
|
||||||
let _ = PROVIDER.set(provider.clone());
|
let _ = PROVIDER.set(provider.clone());
|
||||||
|
|
||||||
global::set_meter_provider(provider);
|
global::set_meter_provider(provider);
|
||||||
|
|
||||||
let m = global::meter("scraper-http-server");
|
tracing::info!(otel_endpoint = %endpoint, service_name, "OTel metrics initialized");
|
||||||
let _ = METER.set(m);
|
global::meter("scraper-http-server")
|
||||||
|
} else {
|
||||||
|
tracing::info!("OTEL_EXPORTER_OTLP_ENDPOINT not set — metrics disabled");
|
||||||
|
global::meter("scraper-http-server")
|
||||||
|
};
|
||||||
|
|
||||||
tracing::info!(otel_endpoint, service_name, "OTel metrics initialized");
|
let _ = METER.set(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Shut down the global MeterProvider, flushing pending exports.
|
/// Shut down the global MeterProvider, flushing pending exports.
|
||||||
|
|||||||
Reference in New Issue
Block a user