Monitoring & Metrics

July 21, 2026 · View on GitHub

Each node plugin exposes Prometheus metrics on metrics.port (default 9100). Enable scraping either through your own scrape config or via the chart's metrics.serviceMonitor.enabled=true (Prometheus Operator), with the scrape interval set by metrics.serviceMonitor.interval (default 1m). Metrics can be disabled entirely with metrics.enabled=false.

Gauges are organized in three aggregation levels: node, pool and volume.

Node-level

MetricLabelsDescription
rawfile_remaining_capacity_bytesnodeFree capacity for new volumes on this node (excluding reserved storage).

Per-pool

MetricLabelsDescription
rawfile_pool_capacity_bytesnode, poolCapacity allocated to the pool for provisioning (backing FS size minus reserved capacity).
rawfile_pool_remaining_capacity_bytesnode, poolFree capacity for new volumes on the pool (excluding reserved storage).
rawfile_pool_reserved_capacity_bytesnode, poolBytes reserved per the pool's reservedCapacity configuration.
rawfile_pool_backing_fs_capacity_bytesnode, poolTotal size of the filesystem backing the pool (statvfs).
rawfile_pool_backing_fs_available_bytesnode, poolAvailable space on the backing FS — includes the reserved slice and non-rawfile space.
rawfile_pool_backing_fs_usage_bytesnode, poolUsed space on the backing FS — includes non-rawfile tenants (kubelet ephemeral storage, logs, …).
rawfile_pool_volumes_physical_bytesnode, poolSum of physical (on-disk) sizes of all volumes in the pool.
rawfile_pool_volumes_logical_bytesnode, poolSum of logical (provisioned) sizes of all volumes in the pool.
rawfile_pool_volume_countnode, poolNumber of volumes provisioned on the pool.
rawfile_pool_infonode, pool, mode, default_poolStatic pool info; always 1, use labels for joins.

Per-volume

MetricLabelsDescription
rawfile_volume_used_bytesnode, volumeActual disk space used inside the volume.
rawfile_volume_total_bytesnode, volumeSpace allocated (provisioned) to the volume.
rawfile_volume_physical_bytesnode, volumePhysical (on-disk) size of the volume's backing file.
rawfile_volume_infonode, volume, pool, sparse, thin_provisionStatic volume info; always 1, use labels for joins.

Useful queries

Volume fullness (alert when a volume nears its limit):

rawfile_volume_used_bytes / rawfile_volume_total_bytes > 0.9

Pool overcommit ratio (thin provisioning):

sum by (node, pool) (rawfile_pool_volumes_logical_bytes)
  / rawfile_pool_capacity_bytes

Real free space left in a pool (guard against thin-provisioning exhaustion):

rawfile_pool_remaining_capacity_bytes < 10 * $1024^{3}$

Join volume usage with its pool via info metrics:

rawfile_volume_used_bytes
  * on (node, volume) group_left (pool) rawfile_volume_info

Renamed metrics (v0.14.1)

rawfile_pool_available_bytes and rawfile_pool_usage_bytes (introduced in v0.14.0) were renamed — update dashboards/alerts:

rawfile_pool_available_bytes  →  rawfile_pool_backing_fs_available_bytes
rawfile_pool_usage_bytes      →  rawfile_pool_backing_fs_usage_bytes

Logs

Structured logs (logFormat: json by default, pretty for humans) with levels from TRACE to CRITICAL (logLevel chart value). Every gRPC request/response is logged with context at debug levels.

REST API

When capabilities.apiServer.enabled=true, a REST API provides cluster-wide introspection of nodes, pools, volumes and background tasks — see Architecture § REST API Server.