Metrics Reference

This article lists the RustFS metric names, types, and labels that operators can chart and alert on after wiring the OTLP export pipeline into Prometheus.

How to Read This Page

RustFS exports metrics via OTLP push — there is no native /metrics scrape endpoint. Run an OpenTelemetry Collector with a Prometheus exporter and point RUSTFS_OBS_ENDPOINT at it; see Monitoring and Alerting for the pipeline setup.

Every name below is verified against the server source. The list covers the operations-relevant subset exported via OTLP; internal and experimental instruments are omitted, and new releases may add metrics not listed here. Label sets are those recorded at the emission site — the Collector and Prometheus may attach additional resource labels (service_name, instance, and so on).

Readiness and Process

MetricTypeLabelsMeaning
rustfs_start_totalcounterProcess starts; a rising rate indicates restart loops
rustfs_runtime_readiness_readygauge1 when the node is fully ready, 0 while degraded
rustfs_runtime_readiness_degraded_totalcounterreasonDegraded readiness evaluations, by degradedReasons value (e.g. storage_quorum_unavailable)

Scanner

MetricTypeLabelsMeaning
rustfs_scanner_objects_scanned_totalcounterObjects visited by the background scanner
rustfs_scanner_directories_scanned_totalcounterDirectories visited
rustfs_scanner_buckets_scanned_totalcounterresult, bucket, diskBucket/drive scans completed, by outcome (success / error / partial)
rustfs_scanner_cycles_totalcounterresultScanner cycles finished (success / error / partial / unknown)
rustfs_scanner_cycle_duration_secondsgaugeDuration of the last completed scan cycle
rustfs_scanner_bucket_drive_duration_secondshistogrambucket, diskTime to scan one bucket on one drive
rustfs_scanner_leader_lock_totalcounterstateScanner leader-lock acquisition events
rustfs_scanner_inline_heal_totalcounterObjects queued for heal directly by the scanner
rustfs_scanner_cache_save_duration_secondshistogramcacheTime to persist the data-usage cache
rustfs_scanner_set_scan_concurrency_limitgaugeCurrent per-set scan concurrency limit
rustfs_scanner_disk_scan_concurrency_limitgaugepool, setCurrent per-disk scan concurrency limit

Heal

MetricTypeLabelsMeaning
rustfs_heal_task_runninggaugetype, setCurrently running heal tasks per erasure set
rustfs_heal_task_start_totalcountertype, setHeal tasks started
rustfs_heal_queue_delay_secondshistogramtype, setTime a heal task waited in queue before starting
rustfs_heal_admission_totalcountersource, result, reason, contextHeal admission decisions (accepted / rejected and why)
rustfs_heal_mainline_throttle_totalcountersource, result, reasonBackground heal throttled to protect foreground traffic
rustfs_heal_scheduler_skip_totalcounterreason, setHeal scheduling skipped (e.g. per-set limit reached)
rustfs_heal_page_concurrency_currentgaugeCurrent page-level heal concurrency
rustfs_heal_candidate_enqueue_totalcounterHeal candidates enqueued by the scanner
rustfs_heal_candidate_merge_totalcounterCandidates merged with an existing queue entry
rustfs_heal_candidate_drop_totalcounterCandidates dropped
rustfs_heal_candidate_priority_reject_totalcounterCandidates rejected by priority policy
rustfs_heal_read_repair_dedup_totalcounterreasonRead-path repair requests deduplicated

API / IO Path

MetricTypeLabelsMeaning
rustfs_io_get_object_request_duration_secondshistogramstatusEnd-to-end GetObject latency
rustfs_io_get_object_stage_duration_secondshistogrampath, stageGetObject latency broken down by internal stage
rustfs_io_get_object_response_size_byteshistogramGetObject response sizes
rustfs_io_operation_duration_secondshistogramoperationDuration of IO operations
rustfs_io_timeout_events_totalcounteroperationIO operations that hit a timeout
rustfs_operation_progressgaugeoperationProgress percentage of long-running operations
rustfs_operation_stalledcounteroperationOperations detected as stalled
rustfs_operation_completionscounteroperation, statusOperation completions by status
rustfs_io_queue_operationscounteroperation, priorityIO queue enqueue/dequeue operations
rustfs_io_queue_sizegaugepriorityCurrent IO queue depth per priority
rustfs_io_starvation_eventscounterpriorityLow-priority IO starvation events
rustfs_io_bandwidth_bpsgaugeObserved IO bandwidth (bytes/s)
rustfs_io_scheduler_decisionscounterIO scheduler decisions taken
rustfs_io_scheduler_loadcounterlevelScheduler decisions by load level
rustfs_io_load_changescounterfrom, toIO load-level transitions

Backpressure

MetricTypeLabelsMeaning
rustfs_backpressure_state_changescounterfrom, toBackpressure state transitions
rustfs_backpressure_activationscounterTimes backpressure engaged
rustfs_backpressure_deactivationscounterTimes backpressure released
rustfs_backpressure_rejectionscounterRequests rejected due to backpressure
rustfs_backpressure_concurrentgaugeCurrent concurrent requests tracked by the limiter

Capacity

MetricTypeLabelsMeaning
rustfs_capacity_current_bytesgaugeCurrent used capacity in bytes
rustfs_capacity_update_totalcountersourceCapacity recalculations
rustfs_capacity_update_duration_secondshistogramsourceTime to recalculate capacity
rustfs_capacity_cache_hitscounterCapacity cache hits
rustfs_capacity_cache_missescounterCapacity cache misses
rustfs_capacity_cache_served_totalcounterstateCapacity responses served from cache, by freshness state

Locking

MetricTypeLabelsMeaning
rustfs_lock_contentionscounterLock contention events
rustfs_lock_hold_time_secshistogramHow long locks were held
rustfs_lock_spin_successes / rustfs_lock_spin_failurescounterSpin-lock acquisition outcomes
rustfs_lock_early_releasescounterLocks released early by optimization
rustfs_object_lock_diag_acquire_duration_secondshistogramObject-lock acquire latency (diagnostics mode)
rustfs_object_lock_diag_hold_duration_secondshistogramObject-lock hold duration (diagnostics mode)
rustfs_object_lock_diag_slow_acquire_total / rustfs_object_lock_diag_slow_hold_totalcounterSlow lock acquire/hold events (diagnostics mode)

Log Cleaner

MetricTypeLabelsMeaning
rustfs_log_cleaner_runs_totalcounterLog-cleaner runs
rustfs_log_cleaner_deleted_files_totalcounterLog files deleted
rustfs_log_cleaner_freed_bytes_totalcounterBytes reclaimed
rustfs_log_cleaner_rotation_total / rustfs_log_cleaner_rotation_failures_totalcounterLog rotations and rotation failures
rustfs_log_cleaner_rotation_duration_secondshistogramRotation duration
rustfs_log_cleaner_active_file_size_bytesgaugeSize of the active log file

:::note Additional verified metric names exist whose type/label details are not documented here, including rustfs_scanner_cache_save_attempt_total, rustfs_scanner_cache_save_timeout_total, rustfs_scanner_cache_save_retry_total, rustfs_scanner_excess_object_versions_total, rustfs_scanner_excess_object_version_size_total, rustfs_scanner_excess_folders_total, rustfs_scanner_pending_heal_prune_total, rustfs_scanner_pending_heal_malformed_total, and the rustfs_io_scheduler_* / rustfs_io_buffer_* / rustfs_timeout_dynamic_* families. Inspect them in your Prometheus once the pipeline is live. :::

On this page