ferrotunnel_observability/
lib.rs1pub mod metrics;
2pub mod tracing;
3
4#[cfg(feature = "dashboard")]
5pub mod dashboard;
6
7pub use metrics::{
8 gather_metrics, init_metrics, metrics_enabled, tunnel_metrics, TunnelMetrics, REGISTRY,
9};
10pub use tracing::{init_tracing, shutdown_tracing, TracingConfig};
11
12pub fn init_basic_observability(service_name: &str, enable_tracing: bool, enable_metrics: bool) {
14 if enable_metrics {
15 init_metrics();
16 }
17
18 if enable_tracing {
19 let _ = init_tracing(TracingConfig {
20 service_name: service_name.to_string(),
21 otlp_endpoint: std::env::var("OTEL_EXPORTER_OTLP_ENDPOINT").ok(),
22 });
23 } else {
24 init_minimal_logging();
25 }
26}
27
28pub fn init_minimal_logging() {
31 use tracing_subscriber::prelude::*;
32 use tracing_subscriber::EnvFilter;
33
34 let filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info"));
35 tracing_subscriber::registry()
36 .with(filter)
37 .with(tracing_subscriber::fmt::layer().with_target(false))
38 .init();
39}