Files
rustfs/crates/obs
Copilot cafec06b7e [Optimization] Enhance obs module telemetry.rs with environment-aware logging and production security (#539)
* Initial plan

* Implement environment-aware logging with production stdout auto-disable

Co-authored-by: houseme <4829346+houseme@users.noreply.github.com>

* add mimalloc crate

* fix

* improve code

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: houseme <4829346+houseme@users.noreply.github.com>
Co-authored-by: houseme <housemecn@gmail.com>
Co-authored-by: loverustfs <155562731+loverustfs@users.noreply.github.com>
2025-09-15 14:52:20 +08:00
..

RustFS

RustFS Obs - Observability & Monitoring

Comprehensive observability and monitoring system for RustFS distributed object storage

CI 📖 Documentation · 🐛 Bug Reports · 💬 Discussions


📖 Overview

RustFS Obs provides comprehensive observability and monitoring capabilities for the RustFS distributed object storage system. For the complete RustFS experience, please visit the main RustFS repository.

Features

  • Environment-Aware Logging: Automatically configures logging behavior based on deployment environment
    • Production: File-only logging (stdout disabled by default for security and log aggregation)
    • Development/Test: Full logging with stdout support for debugging
  • OpenTelemetry integration for distributed tracing
  • Prometheus metrics collection and exposition
  • Structured logging with configurable levels and rotation
  • Performance profiling and analytics
  • Real-time health checks and status monitoring
  • Custom dashboards and alerting integration
  • Enhanced error handling and resilience

🚀 Environment-Aware Logging

The obs module automatically adapts logging behavior based on your deployment environment:

Production Environment

# Set production environment - disables stdout logging by default
export RUSTFS_OBS_ENVIRONMENT=production

# All logs go to files only (no stdout) for security and log aggregation
# Enhanced error handling with clear failure diagnostics

Development/Test Environment

# Set development environment - enables stdout logging
export RUSTFS_OBS_ENVIRONMENT=development

# Logs appear both in files and stdout for easier debugging
# Full span tracking and verbose error messages

Configuration Override

You can always override the environment defaults:

use rustfs_obs::OtelConfig;

let config = OtelConfig {
    endpoint: "".to_string(),
    use_stdout: Some(true), // Explicit override - forces stdout even in production
    environment: Some("production".to_string()),
    ..Default::default()
};

Supported Environment Values

  • production - Secure file-only logging
  • development - Full debugging with stdout
  • test - Test environment with stdout support
  • staging - Staging environment with stdout support

📚 Documentation

For comprehensive documentation, examples, and usage guides, please visit the main RustFS repository.

📄 License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.