Skip to main content

Module observability

Module observability 

Source
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§

ObservabilityConfig
Unified configuration for all observability components.
ObservabilityHandle
Handle for managing the observability system lifecycle.

Enums§

ObservabilityError
Errors that can occur during observability initialization or shutdown.

Functions§

init_observability
Initialize the unified observability system.