apiVersion: v1 kind: ConfigMap metadata: name: svc-minio-dashboard namespace: logging labels: grafana_dashboard: "1" annotations: grafana_folder: "MinIO" data: svc-minio.json: | { "title": "MinIO — Service Overview", "uid": "svc-minio", "schemaVersion": 39, "timezone": "browser", "time": { "from": "now-6h", "to": "now" }, "refresh": "30s", "panels": [ { "id": 1, "title": "Row: Availability & Golden Signals", "type": "row", "collapsed": true, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 0 }, "panels": [ { "id": 2, "title": "Up", "type": "stat", "gridPos": { "h": 4, "w": 6, "x": 0, "y": 1 }, "datasource": { "type": "prometheus", "uid": "prometheus" }, "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "mappings": [ { "type": "value", "options": { "0": { "text": "DOWN", "color": "red" }, "1": { "text": "UP", "color": "green" } } } ], "thresholds": { "mode": "absolute", "steps": [ { "value": null, "color": "red" }, { "value": 1, "color": "green" } ] } } }, "targets": [{ "expr": "min(up{job=\"minio\"})" }] }, { "id": 3, "title": "S3 request rate by method", "type": "timeseries", "gridPos": { "h": 8, "w": 9, "x": 6, "y": 1 }, "datasource": { "type": "prometheus", "uid": "prometheus" }, "targets": [{ "expr": "sum(rate(minio_s3_requests_total[5m])) by (method)", "legendFormat": "{{method}}" }] }, { "id": 4, "title": "Error rate %", "type": "timeseries", "gridPos": { "h": 8, "w": 9, "x": 15, "y": 1 }, "fieldConfig": { "defaults": { "unit": "percent" } }, "datasource": { "type": "prometheus", "uid": "prometheus" }, "targets": [{ "expr": "sum(rate(minio_s3_requests_total{error=\"true\"}[5m])) / sum(rate(minio_s3_requests_total[5m])) * 100" }] }, { "id": 5, "title": "Request duration p50/p95/p99", "type": "timeseries", "gridPos": { "h": 8, "w": 12, "x": 0, "y": 9 }, "fieldConfig": { "defaults": { "unit": "s" } }, "datasource": { "type": "prometheus", "uid": "prometheus" }, "targets": [ { "expr": "histogram_quantile(0.50, sum(rate(minio_s3_requests_duration_seconds_bucket[5m])) by (le))", "legendFormat": "p50" }, { "expr": "histogram_quantile(0.95, sum(rate(minio_s3_requests_duration_seconds_bucket[5m])) by (le))", "legendFormat": "p95" }, { "expr": "histogram_quantile(0.99, sum(rate(minio_s3_requests_duration_seconds_bucket[5m])) by (le))", "legendFormat": "p99" } ] } ] }, { "id": 10, "title": "Row: Resource Usage", "type": "row", "collapsed": true, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 1 }, "panels": [ { "id": 11, "title": "CPU by pod", "type": "timeseries", "gridPos": { "h": 8, "w": 8, "x": 0, "y": 2 }, "datasource": { "type": "prometheus", "uid": "prometheus" }, "targets": [{ "expr": "sum(rate(container_cpu_usage_seconds_total{namespace=\"storage\",pod=~\"minio.*\"}[5m])) by (pod)", "legendFormat": "{{pod}}" }] }, { "id": 12, "title": "Memory by pod", "type": "timeseries", "gridPos": { "h": 8, "w": 8, "x": 8, "y": 2 }, "fieldConfig": { "defaults": { "unit": "bytes" } }, "datasource": { "type": "prometheus", "uid": "prometheus" }, "targets": [{ "expr": "sum(container_memory_working_set_bytes{namespace=\"storage\",pod=~\"minio.*\"}) by (pod)", "legendFormat": "{{pod}}" }] }, { "id": 13, "title": "Restart rate by pod", "type": "timeseries", "gridPos": { "h": 8, "w": 8, "x": 16, "y": 2 }, "datasource": { "type": "prometheus", "uid": "prometheus" }, "targets": [{ "expr": "sum(rate(kube_pod_container_status_restarts_total{namespace=\"storage\",pod=~\"minio.*\"}[15m])) by (pod)", "legendFormat": "{{pod}}" }] } ] }, { "id": 20, "title": "Row: Storage & Replication", "type": "row", "collapsed": true, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 2 }, "panels": [ { "id": 21, "title": "Usable vs Raw capacity", "type": "timeseries", "gridPos": { "h": 8, "w": 12, "x": 0, "y": 3 }, "fieldConfig": { "defaults": { "unit": "bytes", "custom": { "lineWidth": 2 } } }, "datasource": { "type": "prometheus", "uid": "prometheus" }, "targets": [ { "expr": "minio_cluster_capacity_usable_bytes", "legendFormat": "Usable" }, { "expr": "minio_cluster_capacity_raw_total_bytes", "legendFormat": "Raw Total" } ] }, { "id": 22, "title": "Drive health (online/offline)", "type": "timeseries", "gridPos": { "h": 8, "w": 12, "x": 12, "y": 3 }, "fieldConfig": { "defaults": { "unit": "short" } }, "datasource": { "type": "prometheus", "uid": "prometheus" }, "targets": [ { "expr": "minio_cluster_health_drives_online", "legendFormat": "Online" }, { "expr": "minio_cluster_health_drives_offline", "legendFormat": "Offline" } ] }, { "id": 23, "title": "Replication lag (bytes pending)", "type": "timeseries", "gridPos": { "h": 8, "w": 12, "x": 0, "y": 11 }, "fieldConfig": { "defaults": { "unit": "bytes" } }, "datasource": { "type": "prometheus", "uid": "prometheus" }, "targets": [{ "expr": "minio_replication_metrics_replicating_byte_count", "legendFormat": "Pending replication" }] }, { "id": 24, "title": "Replication failures (bytes)", "type": "timeseries", "gridPos": { "h": 8, "w": 12, "x": 12, "y": 11 }, "fieldConfig": { "defaults": { "unit": "bytes" } }, "datasource": { "type": "prometheus", "uid": "prometheus" }, "targets": [{ "expr": "minio_replication_metrics_failed_byte_count", "legendFormat": "Failed replication" }] } ] }, { "id": 30, "title": "Row: Logs", "type": "row", "collapsed": true, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 3 }, "panels": [ { "id": 31, "title": "Recent logs", "type": "logs", "gridPos": { "h": 10, "w": 24, "x": 0, "y": 4 }, "datasource": { "type": "loki", "uid": "loki" }, "targets": [{ "expr": "{namespace=\"storage\"}" }] } ] } ] }