Module observability

Module observability 

Source
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.0

Unless 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

  1. Separation of Concerns: Tracing and metrics are separate but integrated components
  2. Configurable: All features can be enabled/disabled and configured at runtime
  3. Non-intrusive: Designed to be easy to integrate without disrupting application logic
  4. Performance-focused: Optimized for low overhead in production environments
  5. Standard-compliant: Follows W3C Trace Context standard for distributed tracing
  6. Prometheus-compatible: Metrics are exported in Prometheus format
  7. Service Module Integration: Implements the ServiceModule trait 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§

DMSCCPUMetrics
CPU metrics.
DMSCDiskMetrics
Disk metrics.
DMSCMemoryMetrics
Memory metrics.
DMSCMetric
A single metric with sliding window aggregation
DMSCMetricConfig
Metric configuration
DMSCMetricSample
A single metric sample
DMSCMetricsRegistry
Metrics registry to manage multiple metrics
DMSCNetworkMetrics
Network metrics.
DMSCObservabilityConfig
Configuration for the observability module.
DMSCObservabilityData
Exported observability data structure.
DMSCObservabilityModule
Main observability module for DMSC.
DMSCSystemMetrics
System metrics snapshot.
DMSCSystemMetricsCollector
System metrics collector.
DMSCWindowStats
Window statistics

Enums§

DMSCMetricType
Metric types supported