We currently evaluating the rustfs-operator for a minio replacement.
During our test deployment we found out that the rustfs-operator show only null values for the tenant metrics.
The polling itself looks healthy
example:
# HELP rustfs_operator_tenant_monitor_polls_total Total number of tenant storage monitor polls by result.
# TYPE rustfs_operator_tenant_monitor_polls_total counter
rustfs_operator_tenant_monitor_polls_total{result="error"} 1
rustfs_operator_tenant_monitor_polls_total{result="success"} 22
# HELP rustfs_operator_tenant_monitor_poll_duration_seconds Tenant storage monitor poll duration by result.
# TYPE rustfs_operator_tenant_monitor_poll_duration_seconds summary
rustfs_operator_tenant_monitor_poll_duration_seconds_count{result="error"} 1
rustfs_operator_tenant_monitor_poll_duration_seconds_sum{result="error"} 0.006699
rustfs_operator_tenant_monitor_poll_duration_seconds_count{result="success"} 22
rustfs_operator_tenant_monitor_poll_duration_seconds_sum{result="success"} 0.955364
# HELP rustfs_operator_tenant_storage_poll_success Whether the last tenant storage poll succeeded.
# TYPE rustfs_operator_tenant_storage_poll_success gauge
rustfs_operator_tenant_storage_poll_success{namespace="rustfs",tenant="rustfs"} 1.000000
# HELP rustfs_operator_tenant_storage_last_poll_timestamp_seconds Unix timestamp of the last tenant storage poll.
# TYPE rustfs_operator_tenant_storage_last_poll_timestamp_seconds gauge
rustfs_operator_tenant_storage_last_poll_timestamp_seconds{namespace="rustfs",tenant="rustfs"} 1785166926.000000
# HELP rustfs_operator_tenant_drives_online Number of RustFS drives reported online for a tenant.
# TYPE rustfs_operator_tenant_drives_online gauge
rustfs_operator_tenant_drives_online{namespace="rustfs",tenant="rustfs"} 0.000000
# HELP rustfs_operator_tenant_drives_offline Number of RustFS drives reported offline for a tenant.
# TYPE rustfs_operator_tenant_drives_offline gauge
rustfs_operator_tenant_drives_offline{namespace="rustfs",tenant="rustfs"} 0.000000
# HELP rustfs_operator_tenant_drives_healing Number of RustFS drives currently healing for a tenant.
# TYPE rustfs_operator_tenant_drives_healing gauge
rustfs_operator_tenant_drives_healing{namespace="rustfs",tenant="rustfs"} 0.000000
# HELP rustfs_operator_tenant_raw_capacity_bytes Raw RustFS capacity in bytes for a tenant.
# TYPE rustfs_operator_tenant_raw_capacity_bytes gauge
rustfs_operator_tenant_raw_capacity_bytes{namespace="rustfs",tenant="rustfs"} 0.000000
# HELP rustfs_operator_tenant_raw_used_bytes Raw RustFS used capacity in bytes for a tenant.
# TYPE rustfs_operator_tenant_raw_used_bytes gauge
rustfs_operator_tenant_raw_used_bytes{namespace="rustfs",tenant="rustfs"} 0.000000
# HELP rustfs_operator_tenant_object_usage_bytes Object usage in bytes reported by RustFS for a tenant.
# TYPE rustfs_operator_tenant_object_usage_bytes gauge
rustfs_operator_tenant_object_usage_bytes{namespace="rustfs",tenant="rustfs"} 0.000000
# HELP rustfs_operator_tenant_erasure_write_quorum_drives Estimated write quorum drive count implied by RustFS erasure parity.
# TYPE rustfs_operator_tenant_erasure_write_quorum_drives gauge
rustfs_operator_tenant_erasure_write_quorum_drives{namespace="rustfs",tenant="rustfs"} 0.000000
# HELP rustfs_operator_tenant_storage_healthy Whether tenant storage is online, not healing, and satisfies write quorum.
# TYPE rustfs_operator_tenant_storage_healthy gauge
rustfs_operator_tenant_storage_healthy{namespace="rustfs",tenant="rustfs"} 0.000000
rustfs-operator deploymentt via helm
console:
enabled: false
image:
repository: <private-registry>/rustfs/operator
podSecurityContext:
fsGroup: null
securityContext:
runAsUser: null
operator:
image:
repository: <private-registry>/rustfs/operator
leaderElect: null
metrics:
enabled: true
podSecurityContext:
fsGroup: null
prometheusRule:
enabled: true
replicas: 1
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 128Mi
securityContext:
runAsUser: null
serviceMonitor:
enabled: true
tenantMonitor:
enabled: true
sts:
enabled: false
tenant config
apiVersion: rustfs.com/v1alpha1
kind: Tenant
metadata:
name: rustfs
namespace: rustfs
spec:
# Container image (optional - uses operator default if not specified)
image: <private-registry>/rustfs/rustfs:1.0.0-beta.10
pools:
- name: dev-pool
servers: 3
persistence:
volumesPerServer: 1 # Single PVC; RustFS uses no erasure parity
# Optional: Reduce storage size for development
volumeClaimTemplate:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 1Gi # Smaller for dev environments
env:
# Standard Rust logging (not RustFS-specific)
- name: RUST_LOG
value: "debug"
credsSecret:
name: rustfs
securityContext:
fsGroup: null
runAsGroup: null
runAsNonRoot: true
runAsUser: null
serviceAccountName: rustfs
policies:
- name: loki-bucket-policy
document:
configMapKeyRef:
name: loki-bucket-policy
key: policy.json
users:
- name: loki-user
credsSecret:
name: loki-user
policies:
- loki-bucket-policy
buckets:
- name: loki
The tenant itself look also healthy
Storage Information
Backend: erasure
Disks: 3 (3 online, 0 offline)
Capacity: 1.55 GiB used / 11.15 GiB total
STATE ENDPOINT PATH USED / TOTAL
online http://rustfs-dev-pool-2.rustfs-hl.rustfs.svc.cluster.local:9000/data/rustfs0 /data/rustfs0 529.00 MiB / 3.72 GiB
online http://rustfs-dev-pool-1.rustfs-hl.rustfs.svc.cluster.local:9000/data/rustfs0 /data/rustfs0 529.04 MiB / 3.72 GiB
online http://rustfs-dev-pool-0.rustfs-hl.rustfs.svc.cluster.local:9000/data/rustfs0 /data/rustfs0 529.02 MiB / 3.72 GiB
Environment:
Openshift: 4.20.28
Maybe someone had an advice how we can troubleshoot this further?
We currently evaluating the rustfs-operator for a minio replacement.
During our test deployment we found out that the rustfs-operator show only null values for the tenant metrics.
The polling itself looks healthy
example:
rustfs-operator deploymentt via helm
tenant config
The tenant itself look also healthy
Environment:
Openshift: 4.20.28
Maybe someone had an advice how we can troubleshoot this further?