Expand description
Metrics, tracing, and monitoring support Copyright © 2025-2026 Wenze Wei. All Rights Reserved.
This file is part of DMSC. The DMSC 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 DMSC, including distributed tracing and metrics collection. It follows modern observability best practices to help monitor, debug, and optimize DMSC applications.
§Key Components
- DMSCObservabilityModule: Main observability module
- DMSCTracer: Distributed tracing implementation
- DMSCMetricsRegistry: Metrics collection and aggregation
- DMSCObservabilityConfig: Configuration for observability features
- DMSCObservabilityData: 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 dmsc::prelude::*;
fn example() -> DMSCResult<()> {
// Create a DMSC app builder
let mut builder = DMSCAppBuilder::new();
// Configure observability
let observability_config = DMSCObservabilityConfig {
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 = DMSCObservabilityModule::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::DMSCTracer;pub use tracing::DMSCTraceId;pub use tracing::DMSCSpanId;pub use tracing::DMSCSpan;pub use tracing::DMSCSpanKind;pub use tracing::DMSCSpanStatus;pub use tracing::DMSCTracingContext;pub use tracing::DMSCSamplingStrategy;pub use propagation::DMSCTraceContext;pub use propagation::DMSCBaggage;pub use propagation::DMSCContextCarrier;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§
- DMSCCPU
Metrics - CPU metrics.
- DMSC
Disk Metrics - Disk metrics.
- DMSC
Memory Metrics - Memory metrics.
- DMSC
Metric - A single metric with sliding window aggregation
- DMSC
Metric Config - Metric configuration
- DMSC
Metric Sample - A single metric sample
- DMSC
Metrics Registry - Metrics registry to manage multiple metrics
- DMSC
Network Metrics - Network metrics.
- DMSC
Observability Config - Configuration for the observability module.
- DMSC
Observability Data - Exported observability data structure.
- DMSC
Observability Module - Main observability module for DMSC.
- DMSC
System Metrics - System metrics snapshot.
- DMSC
System Metrics Collector - System metrics collector.
- DMSC
Window Stats - Window statistics
Enums§
- DMSC
Metric Type - Metric types supported