minio/minio
How to monitor
MinIO is a long-running service. Operators care about logs, metrics, traces, and alerts. This page maps the controls.
Logs
Three streams:
- Operational log. Console by default; opt into a rotating file with
--log-dir,--log-size,--log-compress. Webhook / HTTP / Kafka targets configurable viaMINIO_LOGGER_*. - Audit log. Per-request structured records. Targets via
MINIO_AUDIT_WEBHOOK_*,MINIO_AUDIT_KAFKA_*. Schema ininternal/logger/audit/. Docs atdocs/auditlog/. - Bucket notification log. S3 events to brokers via
internal/event/target/. Schema mirrors AWS S3 event records.
Hand off to your existing log pipeline; MinIO has no built-in log query tool.
Metrics
Two Prometheus endpoints, both unauthenticated by default:
/minio/metrics/v2— one giant set of metrics./minio/metrics/v3/...— grouped sub-endpoints (api, audit, cache, cluster/, ilm, replication, scanner, system/).
The v3 sub-paths are listed in Metrics, audit, and tracing. Most users scrape:
- job_name: minio
metrics_path: /minio/metrics/v3
static_configs:
- targets: [minio-1:9000, minio-2:9000, ...]To require auth, set MINIO_PROMETHEUS_AUTH_TYPE=jwt and configure a Prometheus token (mc admin prometheus generate).
Suggested SLIs
| SLI | Metric (approx.) |
|---|---|
| Request latency p99 | minio_s3_requests_*_seconds_bucket{quantile="0.99"} |
| Error rate by route | minio_s3_requests_errors_total / minio_s3_requests_total |
| Drive availability | minio_cluster_drive_offline_total |
| Replication backlog | minio_bucket_replication_pending_count |
| Heal backlog | minio_heal_pending_objects_total |
| Disk free | minio_node_drive_free_inodes |
| GC / scanner cadence | minio_scanner_objects_scanned_total |
Traces
mc admin trace --call all -v streams a server-sent event of every traced operation. Categories (s3, internal, lock, os, replication, healing, scanner) can be filtered with --call.
Traces are in-memory only; no on-disk buffering. The pubsub backbone lives in internal/pubsub/.
Profiling
mc admin profile start --type cpu,heap --duration 30s schedules a profile across the cluster; mc admin profile stop returns a tarball. Behind the scenes the server uses runtime/pprof and github.com/felixge/fgprof.
Alerts (suggested)
| Alert | Reason |
|---|---|
| Cluster has been below write quorum for >1 minute | Page. |
| Number of offline drives changed in last 5 minutes | Investigate. |
| Replication backlog growing for >15 minutes | Target unhealthy. |
| Heal pending objects > N for > 1 hour | New disks, scrubbing, or chronic bitrot. |
| Audit target queue depth > N | Webhook/Kafka unreachable. |
| Per-node free space < 10% | Capacity. |
These map cleanly to v3 metrics; thresholds depend on cluster size.
Health endpoints
| Path | Use |
|---|---|
/minio/health/live |
Process liveness probe. |
/minio/health/ready |
Write quorum probe. |
/minio/health/cluster |
Stricter readiness for distributed setups. |
/minio/health/cluster/read |
Read-quorum probe. |
Inspect / support
mc support inspect <alias>/ packages logs, configs, and a default profile bundle into a tarball. The mechanism lives in cmd/admin-handlers.go (/minio/admin/v3/inspect-data).
Test harness
make test-resiliency runs a docker-compose cluster and injects failures (drive loss, network partition, peer kill); the script in docs/resiliency/resiliency-tests.sh validates that traffic continues. Useful as a sanity check on alerting and dashboards.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.