Expand description
Metrics, tracing, and monitoring support Copyright © 2025-2026 Wenze Wei. All Rights Reserved.
This file is part of Ri. The Ri project belongs to the Dunimd Team.
Licensed under the Apache License, Version 2.0 (the “License”); You may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
§Observability Module
This module provides comprehensive observability capabilities for Ri, including distributed tracing and metrics collection. It follows modern observability best practices to help monitor, debug, and optimize Ri applications.
§Key Components
- RiObservabilityModule: Main observability module
- RiTracer: Distributed tracing implementation
- RiMetricsRegistry: Metrics collection and aggregation
- RiObservabilityConfig: Configuration for observability features
- RiObservabilityData: Exported observability data structure
§Design Principles
- Separation of Concerns: Tracing and metrics are separate but integrated components
- Configurable: All features can be enabled/disabled and configured at runtime
- Non-intrusive: Designed to be easy to integrate without disrupting application logic
- Performance-focused: Optimized for low overhead in production environments
- Standard-compliant: Follows W3C Trace Context standard for distributed tracing
- Prometheus-compatible: Metrics are exported in Prometheus format
- Service Module Integration: Implements the
ServiceModuletrait for seamless integration
§Usage
use ri::prelude::*;
fn example() -> RiResult<()> {
// Create a Ri app builder
let mut builder = RiAppBuilder::new();
// Configure observability
let observability_config = RiObservabilityConfig {
tracing_enabled: true,
metrics_enabled: true,
tracing_sampling_rate: 0.5, // 50% sampling rate
metrics_window_size_secs: 300,
metrics_bucket_size_secs: 10,
};
// Add observability module to the app
let observability_module = RiObservabilityModule::new()
.with_config(observability_config);
builder.add_module(Box::new(observability_module));
// Build and run the app
let mut app = builder.build()?;
app.run()?;
Ok(())
}Re-exports§
pub use tracing::RiTracer;pub use tracing::RiTraceId;pub use tracing::RiSpanId;pub use tracing::RiSpan;pub use tracing::RiSpanKind;pub use tracing::RiSpanStatus;pub use tracing::RiTracingContext;pub use tracing::RiSamplingStrategy;pub use propagation::RiTraceContext;pub use propagation::RiBaggage;pub use propagation::RiContextCarrier;pub use propagation::W3CTracePropagator;
Modules§
- grafana
- Copyright © 2025-2026 Wenze Wei. All Rights Reserved.
- prometheus
- Copyright © 2025-2026 Wenze Wei. All Rights Reserved.
- propagation
- Copyright © 2025-2026 Wenze Wei. All Rights Reserved.
- tracing
- Copyright © 2025-2026 Wenze Wei. All Rights Reserved.
Structs§
- RiCPU
Metrics - CPU metrics.
- RiDisk
Metrics - Disk metrics.
- RiMemory
Metrics - Memory metrics.
- RiMetric
- A single metric with sliding window aggregation
- RiMetric
Config - Metric configuration
- RiMetric
Sample - A single metric sample
- RiMetrics
Registry - Metrics registry to manage multiple metrics
- RiNetwork
Metrics - Network metrics.
- RiObservability
Config - Configuration for the observability module.
- RiObservability
Data - Exported observability data structure.
- RiObservability
Module - Main observability module for Ri.
- RiSystem
Metrics - System metrics snapshot.
- RiSystem
Metrics Collector - System metrics collector.
- RiWindow
Stats - Window statistics
Enums§
- RiMetric
Type - Metric types supported