Expand description
Observability module for ELARA Protocol
This module provides structured logging, metrics collection, and distributed tracing capabilities for production deployments.
§Features
- Structured Logging: JSON/Pretty/Compact formats with per-module log levels
- Metrics Collection: Counters, gauges, and histograms with thread-safe registry
- Distributed Tracing: OpenTelemetry integration with Jaeger/Zipkin/OTLP support
- Unified Initialization: Single entry point for all observability components
§Unified Initialization Example
use elara_runtime::observability::{
ObservabilityConfig, LoggingConfig, LogLevel, LogFormat, LogOutput,
TracingConfig, TracingExporter, MetricsServerConfig, init_observability
};
let config = ObservabilityConfig {
logging: Some(LoggingConfig {
level: LogLevel::Info,
format: LogFormat::Json,
output: LogOutput::Stdout,
}),
tracing: Some(TracingConfig {
service_name: "elara-node".to_string(),
exporter: TracingExporter::Otlp {
endpoint: "http://localhost:4317".to_string(),
},
sampling_rate: 0.1,
resource_attributes: vec![],
}),
metrics_server: Some(MetricsServerConfig {
bind_address: "0.0.0.0".to_string(),
port: 9090,
}),
};
let handle = init_observability(config).await?;
// Use observability throughout your application
tracing::info!("Application started");
// Graceful shutdown
handle.shutdown().await?;§Individual Component Example
use elara_runtime::observability::logging::{LoggingConfig, LogLevel, LogFormat, LogOutput, init_logging};
let config = LoggingConfig {
level: LogLevel::Info,
format: LogFormat::Json,
output: LogOutput::Stdout,
};
init_logging(config).expect("Failed to initialize logging");Re-exports§
pub use logging::init_logging;pub use logging::LogFormat;pub use logging::LogLevel;pub use logging::LogOutput;pub use logging::LoggingConfig;pub use logging::LoggingError;pub use metrics::Counter;pub use metrics::Gauge;pub use metrics::Histogram;pub use metrics::MetricsError;pub use metrics::MetricsRegistry;pub use metrics::NodeMetrics;pub use metrics_server::MetricsServer;pub use metrics_server::MetricsServerConfig;pub use metrics_server::MetricsServerError;pub use tracing::init_tracing;pub use tracing::TracingConfig;pub use tracing::TracingError;pub use tracing::TracingExporter;pub use tracing::TracingHandle;
Modules§
- logging
- Structured logging system for ELARA Protocol
- metrics
- Metrics collection system for ELARA runtime.
- metrics_
server - HTTP server for exposing Prometheus metrics.
- tracing
- Distributed tracing system with OpenTelemetry support.
Structs§
- Observability
Config - Unified configuration for all observability components.
- Observability
Handle - Handle for managing the observability system lifecycle.
Enums§
- Observability
Error - Errors that can occur during observability initialization or shutdown.
Functions§
- init_
observability - Initialize the unified observability system.